本文介紹odoo11在windows,ubuntu16,centos7下的安裝,涉及安裝中的依賴處理和各類工具的安裝。css
1.安裝python3.6html
安裝程序下載地址:www.python.org/downloads/前端
安裝後在cmd中輸入python --version
和pip3 --version
查看版本信息。若是提示命令不存在,請將python3.6和python3.6/scripts文件夾路徑添加到系統路徑。node
注意:若是以前已經安裝python2,請將python3.6安裝目錄下的python.exe複製,並將副本名稱修改成python3.exe,以後使用python3來調用。python
2.安裝gitlinux
安裝程序下載地址:git-scm.com/git
安裝後在cmd中輸入git查看是否安裝成功。github
3.安裝依賴:web
lxlm依賴:lxml-4.1.1-cp36-cp36m-win_amd64.whlsql
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步)
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
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
1.開發使用python3,官方文檔使用python3.5+,請按照安裝步驟安裝python3.6後再進行開發。
2.底層部分模型發生了改變,須要升級數據庫才能直接使用odoo11。官方針對odoo企業版提供數據庫升級的功能,目前暫無odoo11的升級方案,社區版不提供升級。
3.odoo11移除了工做流,沒法使用工做流進行開發。
若是遷移代碼,移除工做流,修執行如下內容:
修改view中的類型爲workfolw
的button
,修改類型爲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.cron
的create
方法來適配(可能引發其餘問題,應當每一個模塊修改):
@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_container
和web.external_layout
來替換report.html_container
和report.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_client
,ir_act_report_xml
, ir_act_drtver
, ir_act_url
, ir_act_window
, ir_action
模型進行了修改。
新增web.tour
模塊。
新增addons/iap
。