溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在tinycolinux上編譯odoo8

發(fā)布時(shí)間:2021-07-27 16:08:24 來源:億速云 閱讀:99 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“如何在tinycolinux上編譯odoo8”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

odoo采用python,要談到語言的優(yōu)異對(duì)比足于掀起大論戰(zhàn)了,我不重復(fù)那些聚焦語言內(nèi)部如何pythonic的老話題,只講幾條外部特征:

1,C系和原生程序,是基本所有現(xiàn)實(shí)中可見系統(tǒng)實(shí)現(xiàn)的基石,但C系不一定就是最好的,都是先用起來的實(shí)用主義的產(chǎn)品,而python,就是所有l(wèi)inux發(fā)布版事實(shí)上的腳本語言環(huán)境。

2,在語言選型上,雖然工程層面是提出越來越多的腳本語言來支持各種domain,但其實(shí)歷史上還是傾向直接一門豐富langtechs語言支持庫級(jí)表達(dá)的DSL,這也是為什么歷史上眾多語言很好地完成了某領(lǐng)域部分的事現(xiàn)實(shí)上在其它領(lǐng)域不好用,但還是會(huì)宣稱它自己是通用腳本語言一樣。比如php不被用于作非WEB開發(fā),其它語言不常用于自然語言處或科學(xué)計(jì)算等等,python雖然也不夠通用,但事實(shí)上它的應(yīng)用領(lǐng)域最通用。

3,在語言選型上,工程上是提倡越來越多的語言,但具體到人和學(xué)習(xí)者,我們一般傾向于只學(xué)二門語言一門C系必學(xué)(C or c++),另一門應(yīng)用腳本語言,且這二種語言形成one host one guest的only two選型特征,根據(jù)2中提到的二種語言要面向DSL包納越來越多這些特征,lua雖然精微與C一樣重正交設(shè)計(jì)易與c as hosting交互但依然需要出現(xiàn)c系的面向?qū)ο蟮菴PP多范型里面的需求場景,所以除去lua,c這種較專用,重基礎(chǔ)和偏門的,所以在應(yīng)用上我們依然需要學(xué)習(xí)python和cpp這種多范型支持的,而python即是這種langtech level和liblevel都battery included語言。

python in onlytwo as guest for c series是種混合語言系統(tǒng),業(yè)界已有混合語言的實(shí)作品,下面這些產(chǎn)品也有python界的比對(duì)物這里只是拿來作為例子:比如制造DSL支持領(lǐng)域邏輯+jit的terralang,比如compiled to lua的moonscript(它提出新語言免去了直接binding的需要),還比如cython,zephir這種僅是生成C模塊作為原語言模塊的“混合語言”系統(tǒng)(它沒有提出新語言)。

下面就讓我們來打造tinycolinux上的lnpp appstack結(jié)構(gòu)(linux+nginx+python+postgresql),并安裝odoo8,注意這里我們只精簡安裝odoo的必要模塊和web相關(guān)模塊。

編譯lnpp的python+uswgi和postgresql

接《為tinycolinux創(chuàng)建應(yīng)用和lnmp-源碼和toolchain》文,我們這次是編譯python,除了那文中g(shù)cc中需要的tinycorelinux的tcz,我們還需要openssl-1.0.0-dev.tcz(事實(shí)上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啟動(dòng)uswgi多線程支持會(huì)用到),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(會(huì)用到與nginx編譯時(shí)一樣的pcre-dev.tcz),運(yùn)行uswgi,顯示安裝后的uswgi版本是,ctl+c退出它,下面第二部分我們會(huì)談到以正確詳細(xì)的參數(shù)運(yùn)行它。

對(duì)于pgsql我下載的是postgresql-10.1.tar.gz,按處理python src的方法處理它,會(huì)要求用到readline,在sudo ./configure --prefix=/usr/local/pgsql --disable-redline中禁用。sudo make install 編譯完。然后在/usr/local/pgsql中創(chuàng)建一個(gè)data文件夾,右擊權(quán)限設(shè)置為7777 組root,用戶tc[1001]。這是因?yàn)閜gsql默認(rèn)實(shí)際上也不允許以root方式運(yùn)行。

sudo -u tc /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data --encoding=UTF8創(chuàng)建默認(rèn)系統(tǒng)數(shù)據(jù)庫base,然后啟動(dòng)它sudo -u tc /usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data(pg_ctl start也可是postgresql),此時(shí)tc用戶對(duì)于這個(gè)數(shù)據(jù)庫的密碼為空端口為5432, sudo -u tc /usr/local/pgsql/bin/psql base可連上管理,ctl+c退出管理,進(jìn)入data目錄。修改二個(gè)conf文件使得可本地用navcat等工具管理否則會(huì)出現(xiàn)server closed the connection unexpectedly postgresql錯(cuò)誤,首先在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呢。因?yàn)椴贿@樣做稍后在安裝完odoo在base中建立odoo數(shù)據(jù)庫時(shí)會(huì)提示:new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)

在lnpp中安裝精簡odoo,python模塊和配置uswgi和nginx參數(shù)

我們先安裝odoo再來處理python,這樣運(yùn)行它時(shí)可以逐個(gè)通過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

下面我們來聯(lián)合配置啟動(dòng)uwsgi和python,nginx,我們還希望像lnmp一樣,分別獨(dú)立啟動(dòng)nginx,mysql和php-cgi(它就相當(dāng)于python中的uwsgi),先啟動(dòng)uswgi:

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

實(shí)際上它也有很多變體和縮略形式(你可以參照網(wǎng)上建立一個(gè)小例子代替openerp-wsgi.py中的內(nèi)容來分別測試):

--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里面的應(yīng)用模塊尋找意義上的pythonmoudlepath)

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

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

(以上參數(shù)都可寫進(jìn)一個(gè)ini,然后以u(píng)swgi指定ini的方式進(jìn)行,但上面我們傾向于不使用uwsgi+ini文件的方式)

可以看到上面總有靜態(tài)配置的東西,要么地址要么模塊名要么類名,而lnmp中的php-cgi后面的參數(shù)是不與任何靜態(tài)地址掛鉤的,它就是一個(gè)全局服務(wù)器將語言服務(wù)轉(zhuǎn)化成cgi或uwsgi,所以我們得改動(dòng)一下,這個(gè)改動(dòng)叫“uswgi的動(dòng)態(tài)模式”:

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

nginx下正確配置以配合來自上面uwsgi的“動(dòng)態(tài)模式”(可以看出與靜態(tài)模式下配置條目的相對(duì)應(yīng)性):

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對(duì)應(yīng)于下面的一些條目,(它相當(dāng)于同cd目錄下./openerp-server -c ./openerp-server.conf,openerp-server.conf中的內(nèi)容即類似下面修改的得到的配置文件):

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 (不設(shè)置這個(gè),會(huì)導(dǎo)致 http://xxx:/web/static.... full.css 404)
data_dir = /usr/local/pgsql/data

確定python所須模塊在最后進(jìn)行,注釋掉uwsgi啟動(dòng)時(shí)的daemonize項(xiàng),查看啟動(dòng)后的輸出,并一一sudo pip install 模塊名安裝,其中pillow和pychart特殊處理如下:

.......
sudo pip install Pillow==3.4.2 (不安裝這個(gè)版本會(huì)出現(xiàn)cant create space錯(cuò)誤)
sudo pip install http://archive.ubuntu.com/ubuntu/pool/universe/p/python-pychart/python-pychart_1.39.orig.tar.gz
.....

上述lnpp全部成功啟動(dòng)會(huì)自動(dòng)在/usr/local/pgsql/data下生成filestor,addons/8.0等目錄,訪問localhost,成功?。?/p>

總結(jié)起來,我們需要在tinycolinux啟動(dòng)時(shí)在/opt/bootlocal.sh中以如下命令分別啟動(dòng)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

好了,進(jìn)入odoo怎么應(yīng)用和操作又是一種境地了,odoo所有的操作中,數(shù)據(jù)都有固定的視圖,一條博文和一個(gè)文件是一樣的,一個(gè)產(chǎn)品和一個(gè)電腦是一樣的,faint,我記得怎么進(jìn)管理模式,忘了。

“如何在tinycolinux上編譯odoo8”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI