odoo11在windows,ubuntu16,centos7下的安裝

會飛的小熊發表於2018-12-08

本文介紹odoo11在windows,ubuntu16,centos7下的安裝,涉及安裝中的依賴處理和各種工具的安裝。

64位windows系統環境下的安裝

1.安裝python3.6

安裝程式下載地址:www.python.org/downloads/

安裝後在cmd中輸入python --versionpip3 --version檢視版本資訊。如果提示命令不存在,請將python3.6和python3.6/scripts資料夾路徑新增到系統路徑。

注意:如果之前已經安裝python2,請將python3.6安裝目錄下的python.exe複製,並將副本名稱修改為python3.exe,之後使用python3來呼叫。

2.安裝git

安裝程式下載地址:git-scm.com/

安裝後在cmd中輸入git檢視是否安裝成功。

3.安裝依賴:

lxlm依賴:lxml-4.1.1-cp36-cp36m-win_amd64.whl

pillow依賴:Pillow-3.4.2-cp36-cp36m-win_amd64.whl

pypiwin32依賴:pypiwin32-220-cp36-none-win_amd64.whl

greenlet依賴:greenlet-0.4.12-cp36-cp36m-win_amd64.whl

pyldap依賴:pyldap-2.4.45-cp36-cp36m-win_amd64.whl

上述whl包使用pip3 install + 檔名安裝即可。(上述包可以在網路上查詢,查詢不到請聯絡我)

4.安裝postgresql資料庫,建立使用者,要擁有建立資料庫的許可權。

5.下載原始碼:

在cmd中執行以下命令下載原始碼。

git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 
複製程式碼

6.修改原始碼中的requirements.txt檔案:

將pyldap==2.4.28刪除(或在前面新增#註釋)

將lxml==3.5.0,Pillow==3.4.1,greenlet==0.4.10,Werkzeug==0.11.11 修改為lxml==4.1.1,Pillow==3.4.2,greenlet==0.4.12,Werkzeug==0.11.15

建立檔案 %HOMEPATH%/pip/pip.ini,(已存在修改即可),修改pip.ini為

[global]

trusted-host = mirrors.ustc.edu.cn

index-url = https://mirrors.ustc.edu.cn/pypi/web/simple
複製程式碼

在專案根目錄下執行pip3 install -r requirements.txt,執行成功即可。

7.新增配置檔案odoo.conf,參考odoo9資料庫配置,執行

python3 odoo-bin -c odoo.conf
複製程式碼

按照上述步驟安裝的依賴會直接安裝到python3的庫中,建議使用虛擬環境安裝(可用工具:pipenv),參考Ubuntu 16.04環境下的安裝(第7步)

Ubuntu 16.04環境下的安裝

參考地址:webkul.com/blog/instal…

1.安裝虛擬機器,並在虛擬機器中安裝Ubuntu 16.04系統。Ubuntu 16.04預設安裝了python3和python2(使用python3 -V 和 python -V檢視具體版本)。

2.更新apt源:

sudo apt update
複製程式碼

3.安裝postgresql:

sudo apt install -y postgresql
複製程式碼

啟動服務,建立postgresql使用者:

sudo service postgresql start

sudo su - postgres

createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo

exit
複製程式碼

修改使用者連線方式:

sudo vi /etc/postgresql/9.5/main/pg_hba.conf
複製程式碼

修改以下內容:

# "local" is for Unix domain socket connections only

local all all peer md5
複製程式碼

然後重啟服務:

sudo service postgresql restart
複製程式碼

4.安裝wkhtmltopdf:

sudo wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb

sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.deb

sudo cp /usr/local/bin/wkhtmltopdf /usr/bin

sudo cp /usr/local/bin/wkhtmltoimage /usr/bin
複製程式碼

安裝其他環境:

sudo apt install python-dev libsasl2-dev libldap2-dev libssl-dev
sudo apt install libxml2-dev libxslt-dev
複製程式碼

5.安裝pip3:

sudo apt install -y python3-pip
複製程式碼

安裝git

sudo apt install -y git
複製程式碼

6.安裝nodejs和less

sudo apt-get install -y npm

sudo ln -s /usr/bin/nodejs /usr/bin/node

sudo npm install -g less less-plugin-clean-css

sudo apt-get install -y node-less
複製程式碼

7.下載原始碼(請注意下載目錄):

git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0
複製程式碼

切換到原始碼目錄,安裝pipenv,建立虛擬環境,並安裝依賴:

sudo pip3 install pipenv

pipenv --python 3.5 install -r requirements.txt
複製程式碼

8.配置啟動檔案和啟動

在原始碼路徑下建立檔案odoo.conf,新增內容並修改對應內容:

[options]

;模組路徑
addons_path = odoo/addons, addons

;超級管理員密碼
admin_passwd = admin

db_host = localhost

db_port = 5432
db_maxconn = 64

;資料庫名稱
db_name = odoo

;資料庫使用者

db_user = odoo

;資料庫密碼
db_password = 123456
db_sslmode = prefer
db_template = template1
複製程式碼

在終端中執行

pipenv run python3 odoo-bin -c odoo.conf
複製程式碼

訪問網址:localhost:8069

CentOS7環境下的安裝

1.安裝epel-release等相關依賴

sudo yum install -y epel-release

sudo yum -y update
複製程式碼

2.安裝nodejs和less外掛

sudo yum install -y nodejs
複製程式碼

3.安裝postgresql:

# 安裝

sudo yum install -y postgresql-server

# 初始化

service postgresql initdb

# 檢視服務狀態

systemctl status postgresql

# 啟動服務

systemctl start postgresql

# 開機執行服務

systemctl enable postgresql

# 切換到資料庫使用者

su - postgres

# 使用psql命令來進入PostgreSQL

psql

# 需要建立postgres密碼

\password postgres

# 輸入2次密碼

# 退出

\q

# 建立odoo使用使用者,此處為odoo,並輸入密碼

createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo

# 退出資料庫使用者

exit

# 修改使用者連線屬性

vim /var/lib/pgsql/data/pg_hba.conf
複製程式碼

修改以下內容:

local all all peer md5
複製程式碼

儲存,重啟資料庫

systemctl restart postgresql
複製程式碼

4.安裝wkhtmltopdf:

sudo wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.2.1/wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm

sudo yum install -y xorg-x11-fonts-Type1 xorg-x11-fonts-75dpi

sudo rpm -i wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm
複製程式碼

5.安裝python3.6:

#使用 rpm 包進行安裝安裝python3.6

yum -y install https://centos7.iuscommunity.org/ius-release.rpm

yum makecache

yum install python36u

yum -y install python36u-pip

yum -y install python36u-devel

#查詢python3.6安裝位置

which python3.6

#得到位置 /usr/bin/python3.6,新增python3的連結

ln -s /usr/bin/python3.6 /usr/bin/python3

#查詢pip3安裝位置

which python3.6

#得到位置 /usr/bin/pip3.6,新增pip3的連結

ln -s /usr/bin/pip3.6 /usr/bin/pip3
複製程式碼

6.安裝git

sudo yum install -y git
複製程式碼

7.安裝odoo

#安裝依賴,第一行為pyladp的依賴,第二行為lxml的依賴

sudo yum install python-devel openldap-devel

yum install libxslt-devel libxml++-devel libxml2-devel

#下載原始碼(請注意下載目錄),此處如果使用公司odoo11的原始碼,注意原始碼目錄結構

git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0

#刪除window下的依賴,所有帶有 sys_platform == 'win32' 的行刪除,並儲存

vim requirements.txt

#切換到原始碼目錄,安裝pipenv,建立虛擬環境

sudo pip3 install pipenv

pipenv --python 3.6

#修改pipenv的url並儲存

vim Pipfile

url = "https://pypi.python.org/simple"
url = "https://pypi.tuna.tsinghua.edu.cn/simple"

#下載依賴

pipenv install
複製程式碼

在原始碼路徑下建立檔案odoo.conf,新增以下紅色內容

[options]

;模組路徑
addons_path = odoo/addons, addons

;超級管理員密碼
admin_passwd = admin

;資料庫IP

db_host = localhost

;資料庫埠

db_port = 5432
db_maxconn = 64

;資料庫名稱
db_name = odoo

;資料庫使用者

db_user = odoo

;資料庫密碼
db_password = 123456
db_sslmode = prefer
db_template = template1
複製程式碼

儲存後, 在終端中執行

pipenv run python3 odoo-bin -c odoo.conf
複製程式碼

訪問網址http://centos7的IP:8069

與odoo 9相比的變化

1.開發使用python3,官方文件使用python3.5+,請按照安裝步驟安裝python3.6後再進行開發。

2.底層部分模型發生了改變,需要升級資料庫才能直接使用odoo11。官方針對odoo企業版提供資料庫升級的功能,目前暫無odoo11的升級方案,社群版不提供升級。

3.odoo11移除了工作流,無法使用工作流進行開發。

如果遷移程式碼,移除工作流,修執行以下內容:

修改view中的型別為workfolwbutton,修改型別為object,並觸發工作流下一步觸發的方法。

修改python程式碼中使用signal_workflow觸發工作流的方法,使用直接呼叫工作流下一步觸發的方法。

刪除工作流檔案,並刪除openerp.py中配置的檔案路徑。

如果自己新增工作流,需要修改以下部分(參考部分使用odoo10), 修改工作量較大,而且修改底層模型,無法估計其他影響:

新增工作流模型,參考odoo/addons/base/workflow

修改工作流模型許可權,參考odoo/addons/base/security

新增工作流的處理物件,參考odoo/workflow

修改基礎模型,增加模型變化時對應的工作流變化,參考odoo/models.BaseModel

增加js中對button按鈕型別的處理(addons\web\static\src\js\chrome\view_manager.js),參考addons\web\static\src\js\framework\view.js

增加js中呼叫後臺的rpc方法(addons\web\static\src\js\_deprecated\data.js),參考addons\web\static\src\js\framework\model.js

修改web路由,新增到工作流的路由方法,參考addons.DataSet.exec_workflow

@http.route('/web/dataset/exec_workflow', type='json', auth="user")
複製程式碼

4.odoo11的的定時器修改為使用ir.actions.server來觸發任務,所以在建立定時器的時候需要修改以下內容:

<record id="ir_cron_check_challenge" model="ir.cron">
    <field name="name">Gamification: Goal Challenge Check</field>
    <field name="model_id" ref="model_gamification_challenge"/>  #使用model_id替換model,實際為ir.actions.server模型中的model_id
    <field name="state">code</field>                             #ir.actions.server使用程式碼執行,其他可選項參考ir.actions.server
    <field name="code">model._cron_update()</field>              #ir.actions.server執行程式碼
    <field name="interval_number">1</field>
    <field name="interval_type">days</field>
    <field name="numbercall">-1</field>
    <field eval="False" name="doall" />
</record>
複製程式碼

也可以修改ir.croncreate方法來適配(可能引起其他問題,應當每個模組修改):

@api.model
def create(self, values):
    values['usage'] = 'ir_cron'
    # 新增新舊資料轉化
    if values.get('model'):
        module = self._context.get('install_mode_data').get('module')
        model_xml_id = (module + '.' if module else '') + 'model_' + values['model'].replace('.', '_')
        values['model_id'] = self.env.ref(model_xml_id).id
        values['state'] = 'code'
        del values['model']
    if values.get('function') and values.get('args'):
        values['code'] = 'model.' + values['function'] + values['args']
        del values['function']
        del values['args']
    return super(ir_cron, self).create(values)
複製程式碼

5.odoo11將addons/report中的列印模板移動到了addons/web,故所有列印的模板應該使用web.html_containerweb.external_layout來替換report.html_containerreport.external_layout.請檢查模組是否使用列印模板。

6.odoo11禁止使用舊的API,所有使用舊API的方法請進行修改。最主要的例子為獲取系統url的方法。

def get_base_url(self, cr, uid):
	base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
	return base_url
複製程式碼

修改為:

def get_base_url(self):
    base_url = self.env['ir.config_parameter'].get_param('web.base.url')
    return base_url
複製程式碼

7.檢視中的kanban檢視如果使用record.id.value,如下:

<img t-att-src="kanban_image('product.template', 'image_small', record.id.value)"/>
複製程式碼

請新增<field name="id"/>,否則odoo11無法識別id欄位。

前端框架中web.rpc代替web.Model,前端修改參考:www.youtube.com/watch?v=u-6…

8.odoo11中不再使用openerp,全部改為odoo

openerp雖然可以正常使用,但對於除錯和後續升級帶來影響,建議全部修改。以下為部分舉例:

python程式碼中使用

from odoo import models, fields, api
複製程式碼

替換

from openerp import models, fields, api
複製程式碼

xml檔案中使用<odoo></odoo>替換<openerp></openerp>(參考odoo官方文件data files模組,odoo8和以後版本的區別)

9.其他已知修改,影響未知:

hr模組移除last_login欄位,注意檢視修改。

ir.values模組移除,新增ir.defaults模組。

ir_ui_menu模型從odoo10開始增加active欄位。

新增odoo/addons/base/module/wizard/base_module_uninstall,去除base_module_configuration

ir_act_clientir_act_report_xml, ir_act_drtver, ir_act_url, ir_act_window, ir_action模型進行了修改。

新增web.tour模組。

新增addons/iap

相關文章