如何在tinycolinux上编译odoo8

本篇内容介绍了“如何在tinycolinux上编译odoo8”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

10余年的霍城网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网整合营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整霍城建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“霍城网站设计”,“霍城网站推广”以来,每个客户项目都认真落实执行。

odoo采用python,要谈到语言的优异对比足于掀起大论战了,我不重复那些聚焦语言内部如何pythonic的老话题,只讲几条外部特征:

1,C系和原生程序,是基本所有现实中可见系统实现的基石,但C系不一定就是最好的,都是先用起来的实用主义的产品,而python,就是所有linux发布版事实上的脚本语言环境。

2,在语言选型上,虽然工程层面是提出越来越多的脚本语言来支持各种domain,但其实历史上还是倾向直接一门丰富langtechs语言支持库级表达的DSL,这也是为什么历史上众多语言很好地完成了某领域部分的事现实上在其它领域不好用,但还是会宣称它自己是通用脚本语言一样。比如php不被用于作非WEB开发,其它语言不常用于自然语言处或科学计算等等,python虽然也不够通用,但事实上它的应用领域最通用。

3,在语言选型上,工程上是提倡越来越多的语言,但具体到人和学习者,我们一般倾向于只学二门语言一门C系必学(C or c++),另一门应用脚本语言,且这二种语言形成one host one guest的only two选型特征,根据2中提到的二种语言要面向DSL包纳越来越多这些特征,lua虽然精微与C一样重正交设计易与c as hosting交互但依然需要出现c系的面向对象等CPP多范型里面的需求场景,所以除去lua,c这种较专用,重基础和偏门的,所以在应用上我们依然需要学习python和cpp这种多范型支持的,而python即是这种langtech level和liblevel都battery included语言。

python in onlytwo as guest for c series是种混合语言系统,业界已有混合语言的实作品,下面这些产品也有python界的比对物这里只是拿来作为例子:比如制造DSL支持领域逻辑+jit的terralang,比如compiled to lua的moonscript(它提出新语言免去了直接binding的需要),还比如cython,zephir这种仅是生成C模块作为原语言模块的“混合语言”系统(它没有提出新语言)。

下面就让我们来打造tinycolinux上的lnpp appstack结构(linux+nginx+python+postgresql),并安装odoo8,注意这里我们只精简安装odoo的必要模块和web相关模块。

编译lnpp的python+uswgi和postgresql

接《为tinycolinux创建应用和lnmp-源码和toolchain》文,我们这次是编译python,除了那文中gcc中需要的tinycorelinux的tcz,我们还需要openssl-1.0.0-dev.tcz(事实上python编译不要它但是接下来pip要用到它),解压安装它,下载python src,我选择的是Python-2.7.14rc1.tgz,解压cd到src目录我们这里是/home/tc/Python-2.7.14rc1,sudo ./configure --prefix=/usr/local/python(你可以加条 --enable-threads未来用python启动uswgi多线程支持会用到),sudo make install

cd /usr/local/python/bin,下载pip,wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py ,然后sudo python get-pip.py安装pip。接下来可以安装uswgi了sudo pip install uswgi(会用到与nginx编译时一样的pcre-dev.tcz),运行uswgi,显示安装后的uswgi版本是,ctl+c退出它,下面第二部分我们会谈到以正确详细的参数运行它。

对于pgsql我下载的是postgresql-10.1.tar.gz,按处理python src的方法处理它,会要求用到readline,在sudo ./configure --prefix=/usr/local/pgsql --disable-redline中禁用。sudo make install 编译完。然后在/usr/local/pgsql中创建一个data文件夹,右击权限设置为7777 组root,用户tc[1001]。这是因为pgsql默认实际上也不允许以root方式运行。

sudo -u tc /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data --encoding=UTF8创建默认系统数据库base,然后启动它sudo -u tc /usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data(pg_ctl start也可是postgresql),此时tc用户对于这个数据库的密码为空端口为5432, sudo -u tc /usr/local/pgsql/bin/psql base可连上管理,ctl+c退出管理,进入data目录。修改二个conf文件使得可本地用navcat等工具管理否则会出现server closed the connection unexpectedly postgresql错误,首先在postgresql.conf 打开listenadress="*",然后在pg_hba.conf中加一条: host all all 10.0.2.2/32 trust(10.0.2.2是tinycolinux slirp模式下的host windows地址,你也可以改成0.0.0.0)。

为什么加--encoding呢。因为不这样做稍后在安装完odoo在base中建立odoo数据库时会提示:new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)

在lnpp中安装精简odoo,python模块和配置uswgi和nginx参数

我们先安装odoo再来处理python,这样运行它时可以逐个通过pip安装缺少的python模块,将odoo8释放到/usr/local/nginx/html,精简/usr/local/nginx/html/odoo/addons安装的所有模块,仅保留以下:

account
account_voucher
analytic
auth_crypt
auth_signup
base_action_rule
base_import
base_setup
board
bus
calendar
contacts
decimal_precision
document
edi
email_template
fetchmail
gamification
google_account
google_drive
im_chat
im_livechat
knowledge
mail
marketing
note
pad
pad_project
payment
payment_paypal
payment_transfer
procurement
product
project
report
resource
sale
sales_team
share
web
website
website_blog
website_forum
website_forum_doc
website_livechat
website_mail
website_partner
website_payment
website_report
website_sale
web_calendar
web_diagram
web_gantt
web_graph
web_kanban
web_kanban_gauge
web_kanban_sparkline
web_tests
web_view_editor

下面我们来联合配置启动uwsgi和python,nginx,我们还希望像lnmp一样,分别独立启动nginx,MySQL和php-cgi(它就相当于python中的uwsgi),先启动uswgi:

/usr/local/python/bin/uwsgi --socket :8000 --pythonpath /usr/local/nginx/html/odoo --wsgi-file /usr/local/nginx/html/odoo/openerp-wsgi.py

实际上它也有很多变体和缩略形式(你可以参照网上建立一个小例子代替openerp-wsgi.py中的内容来分别测试):

--socket=:8000 --master --uid=tc --gid=root --wsgi-file /usr/local/nginx/html/odoo/openerp-wsgi.py --daemonize=/usr/local/python/bin/uwsgi.log

--socket=:8000 --chdir=/usr/local/nginx/html/odoo --wsgi-file openerp-wsgi.py (以上chdir也可用pythonpath代替,此pythonpath非python里面的应用模块寻找意义上的pythonmoudlepath)

--manage-script-name --mount /yourapplication=myapp:app

-s :8000 -w uwsgi-server:application -d somelogfile

(以上参数都可写进一个ini,然后以uswgi指定ini的方式进行,但上面我们倾向于不使用uwsgi+ini文件的方式)

可以看到上面总有静态配置的东西,要么地址要么模块名要么类名,而lnmp中的php-cgi后面的参数是不与任何静态地址挂钩的,它就是一个全局服务器将语言服务转化成cgi或uwsgi,所以我们得改动一下,这个改动叫“uswgi的动态模式”:

/usr/local/python/bin/uwsgi --socket=:8000 --master --daemonize=/usr/local/python/bin/uwsgi.log

nginx下正确配置以配合来自上面uwsgi的“动态模式”(可以看出与静态模式下配置条目的相对应性):

include uwsgi_params;
uwsgi_param UWSGI_CHDIR /usr/local/nginx/html/odoo;
uwsgi_param UWSGI_MODULE uwsgi-server; (不需要.py)
uwsgi_param UWSGI_CALLABLE application;
uwsgi_pass 127.0.0.1:8000;

修改/usr/local/nginx/html/odoo下的swgi-openerp.py对应于下面的一些条目,(它相当于同cd目录下./openerp-server -c ./openerp-server.conf,openerp-server.conf中的内容即类似下面修改的得到的配置文件):

db_host = 127.0.0.1
db_port = 5432
db_user = tc
db_password = 
pg_path = /usr/local/pgsql/bin
addons_path = /usr/local/nginx/html/odoo/addons,/usr/local/pgsql/data/addons/8.0 (不设置这个,会导致 http://xxx:/web/static.... full.css 404)
data_dir = /usr/local/pgsql/data

确定python所须模块在最后进行,注释掉uwsgi启动时的daemonize项,查看启动后的输出,并一一sudo pip install 模块名安装,其中pillow和pychart特殊处理如下:

.......
sudo pip install Pillow==3.4.2 (不安装这个版本会出现cant create space错误)
sudo pip install http://archive.ubuntu.com/ubuntu/pool/universe/p/python-pychart/python-pychart_1.39.orig.tar.gz
.....

上述lnpp全部成功启动会自动在/usr/local/pgsql/data下生成filestor,addons/8.0等目录,访问localhost,成功!!

总结起来,我们需要在tinycolinux启动时在/opt/bootlocal.sh中以如下命令分别启动nginx,uswgi和

/usr/local/nginx/sbin/nginx
/usr/local/python/bin/uwsgi --socket=:8000 --master --uid=tc --gid=root --daemonize=/usr/local/python/bin/uwsgi.log 
sudo -u tc /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data

好了,进入odoo怎么应用和操作又是一种境地了,odoo所有的操作中,数据都有固定的视图,一条博文和一个文件是一样的,一个产品和一个电脑是一样的,faint,我记得怎么进管理模式,忘了。

“如何在tinycolinux上编译odoo8”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


本文标题:如何在tinycolinux上编译odoo8
链接URL:http://hbruida.cn/article/ipoggp.html