全書完整目錄請見:Odoo 12開發(fā)者指南(Cookbook)第三版
本章中捉偏,我們將講解如下主題:
- Odoo生態(tài)系統(tǒng)
- 從源碼輕松安裝Odoo
- 使用start命令管理Odoo環(huán)境
- 管理Odoo服務(wù)端數(shù)據(jù)庫
- 在一個文件中存儲實(shí)例配置
- 激活Odoo開發(fā)者工具
- 從源碼更新Odoo
簡介
有很多的方式來設(shè)置Odoo開發(fā)環(huán)境呆细。本章中采用了其中的一種,你一定可以在網(wǎng)上找到其它的教程講解其它方法桃序。請記住本章中為開發(fā)環(huán)境煞肾,與生產(chǎn)環(huán)境的要求是不同的歇盼。關(guān)于生產(chǎn)環(huán)境會在第三章 服務(wù)器部署中講解。
如果你是一個Odoo開發(fā)新手湃交,必須要了解Odoo生態(tài)的某些方面。下一部分會給出這些方面的簡短介紹藤巢,然后我們就會進(jìn)入到開發(fā)用的Odoo的安裝搞莺。
Odoo生態(tài)系統(tǒng)
Odoo為開發(fā)者提供了開箱即用的模塊結(jié)構(gòu)。它強(qiáng)大的框架有助于開發(fā)者很快地創(chuàng)建項(xiàng)目掂咒。在開始成為成功的Odoo開發(fā)者之旅以前才沧,Odoo生態(tài)中有一些你應(yīng)該要熟悉的特性。
Odoo版本
Odoo有兩個版本绍刮。第一個是社區(qū)版温圆,完全開源,第二是企業(yè)版孩革,需要授權(quán)證書費(fèi)用岁歉。不同于其它軟件供應(yīng)商,Odoo企業(yè)版僅僅是在社區(qū)版基礎(chǔ)上添加了一些附加特性/應(yīng)用的高級應(yīng)用嫉戚∨亳桑基本上,企業(yè)版運(yùn)行于社區(qū)版之上彬檀。社區(qū)版采用Lesser General Public License v3.0 (LGPLv3)許可證書帆啃,并帶有企業(yè)版企業(yè)資源計劃(ERP)的所有基礎(chǔ)應(yīng)用,如銷售窍帝、客戶關(guān)系管理(CRM)努潘、發(fā)票、采購、網(wǎng)站構(gòu)建器等等疯坤。而企業(yè)版采用 Odoo 企業(yè)版許可證書报慕,這是一個自有證書。Odoo 企業(yè)版帶有高級功能如完整的財務(wù)压怠、studio眠冈、基于IP的語音傳輸(VoIP)菌瘫、移動端響應(yīng)式設(shè)計蜗顽、電子簽名、營銷自動化和快遞與銀行的集成雨让。企業(yè)版還為你提供無限的漏洞修復(fù)雇盖。下圖顯示企業(yè)版依賴于社區(qū)版,這也是為什么你需要社區(qū)版來使用企業(yè)版:
你可以通過https://www.odoo.com/page/editions查看這兩個版本的完整對比栖忠。
??Odoo有最大數(shù)量的社區(qū)開發(fā)人員崔挖,這也是你在應(yīng)用商店中看到有大量的第三方應(yīng)用(模塊)的原因。大部分免費(fèi)應(yīng)用使用Affero General Public License version 3 (AGPLv3)許可證書庵寞。如果你的應(yīng)用依賴于這些應(yīng)用就不能使用其自有證書狸相。Odoo自有證書的應(yīng)用僅能在擁有LGPL或其它自有證書的模塊基礎(chǔ)上進(jìn)行開發(fā)。
Git倉庫
Odoo的完整代碼托管在GitHub上皇帮。你可以在這里對穩(wěn)定版提交漏洞/問題卷哩。你還可以通過提交拉取請求(Pull Request - PR)來提議添加新功能。Odoo有許多個倉庫属拾,參見下表來獲取更多信息:
倉庫 | 用途 |
---|---|
https://github.com/odoo/odoo | 這是 Odoo 的社區(qū)版将谊。對公眾開放。 |
https://github.com/odoo/enterprise | 這是 Odoo 的企業(yè)版渐白。僅對Odoo 官方合作伙伴開放尊浓。 |
https://github.com/odoo-dev/odoo | 這是不斷開發(fā)中的倉庫。對公眾開放纯衍。 |
每年栋齿,Odoo會發(fā)布一個大版本(長期支持(LTS)版本)和幾個小版本。小版本多用于Odoo的在線SaaS服務(wù)襟诸,表示Odoo的SaaS用戶可以更早地使用這些功能瓦堵。GitHub 上大版本分支的名稱像12.0, 11.0和10.0,而小版本分支名稱有saas-12.1, saas-11.1和saas-11.2歌亲。master分支處于開發(fā)中菇用,并隨時可能發(fā)生改變。因此陷揪,不建議在生產(chǎn)環(huán)境中使用它惋鸥,因?yàn)樗赡軐?dǎo)致數(shù)據(jù)庫的崩潰杂穷。
Runbot
Runbot是Odoo的自動化測試環(huán)境。這會從Odoo的Git倉庫拉取最新分支并創(chuàng)建最近4個提交的構(gòu)建卦绣。這里耐量,你可以測試所有的穩(wěn)定版和開發(fā)中分支。你甚至可以使用企業(yè)版并測試它的開發(fā)分支滤港。
每個構(gòu)建有不同的背景色廊蜒,表明測試用例的狀態(tài)。綠色背景表示所有的測試用例成功運(yùn)行溅漾,你可以測試該分支劲藐,而紅色背景表示在這個分支上有些測試用例出錯了,有些功能在該構(gòu)建上可能崩潰了樟凄。你可以查看所有測試用例的日志,會顯示在安裝過程中所發(fā)生的具體事項(xiàng)兄渺。每個構(gòu)建有兩個數(shù)據(jù)庫缝龄。數(shù)據(jù)庫all安裝了所有的模型,而數(shù)據(jù)庫base僅安裝了基本的Odoo模塊挂谍。每個構(gòu)建安裝了基本演示數(shù)據(jù)叔壤,因此你可以快速進(jìn)行測試而無需額外的配置。
??你使用如下 URL 來訪問runbot:http://runbot.odoo.com/runbot
以下賬戶信息可用于訪問任一runbot構(gòu)建:
- 登錄ID: admin 密碼: admin
- 登錄ID:demo 密碼: demo
- 登錄ID: portal 密碼: portal
??這是公共測試環(huán)境口叙,因此有時可能會有其它用戶使用/測試你所測試的相同分支炼绘。
Odoo應(yīng)用商店
Odoo幾年前發(fā)布了應(yīng)用商店,當(dāng)時就獲得了成功⊥铮現(xiàn)在俺亮,那里托管著15,000多個不同的應(yīng)用。在應(yīng)用商店中疟呐,你可以找到大量的針對不同版本的免費(fèi)和付費(fèi)應(yīng)用脚曾。這包含不同垂直業(yè)務(wù)領(lǐng)域的具體解決方案,如教育启具、食品行業(yè)和醫(yī)藥業(yè)本讥。它還包含一些繼承了已有Odoo應(yīng)用或添加了新功能的應(yīng)用。應(yīng)用商店還為Odoo網(wǎng)站構(gòu)建器提供了大量的美觀的主題鲁冯。在第四章 創(chuàng)建Odoo插件模塊中拷沸,我們將來看如何為你的自定義模塊設(shè)置價格和幣種。
你可以通過如下鏈接訪問Odoo應(yīng)用商店:https://www.odoo.com/apps薯演。
Odoo社區(qū)聯(lián)盟(OCA)
Odoo社區(qū)聯(lián)盟(OCA)是一個開發(fā)/管理Odoo社區(qū)模塊的非營利組織撞芍。所有的OCA模塊都開源并由Odoo社區(qū)成員維護(hù)。在OCA的GitHub中涣仿,你會發(fā)現(xiàn)針對不同Odoo應(yīng)用的多個倉庫勤庐。除Odoo模塊外示惊,它還包含很多工具、一個遷移庫愉镰、會計本地化等等周拐。
以下是OCA官方GitHub賬戶的URL:https://github.com/OCA怕磨。
官方Odoo幫助論壇
Odoo 有一個非常強(qiáng)大的框架,大量的事只需通過使用/激活選項(xiàng)或遵循指定的模式即可實(shí)現(xiàn)。因此沪悲,如果你碰到了一些技術(shù)問題或如果你對一些復(fù)雜用例不確定,那么你就可以在Odoo官方幫助論壇上提交問詢脖苏。這個論壇上有大量活躍的開發(fā)人員方灾,包含一些Odoo官方的員工。
你可以在如下 URL 上搜索或提交你的問題:https://help.odoo.com/讼渊。
從源碼輕松安裝Odoo
推薦使用GNU/Linux環(huán)境來部署Odoo动看。你可能更習(xí)慣于使用Microsoft Windows或Mac OS X,但事實(shí)上大部分的Odoo開發(fā)人員都使用GNU/Linux爪幻,使用GNU/Linux而非Windows你也更有機(jī)會獲取操作系統(tǒng)級別問題的社區(qū)支持菱皆。
也推薦使用和生產(chǎn)環(huán)境相同的環(huán)境(相同發(fā)行版和版本號)進(jìn)行開發(fā)。這樣可以避免討厭的“彩蛋”挨稿,比如在部署當(dāng)天發(fā)現(xiàn)有個庫有一個預(yù)料外的版本仇轻,會有一些不同和不兼容的問題。如果你的工作站使用不同的操作系統(tǒng)奶甘,一個好的方法是在工作站上設(shè)置虛擬機(jī)(VM)并在 VM 上安裝 GNU/Linux發(fā)行版篷店。
小貼士:避免在運(yùn)行開發(fā)環(huán)境的工作站和運(yùn)行 Odoo 的虛擬機(jī)之間拷貝文件,你可以在VM中配置一個SAMBA共享并將源碼存儲在那里臭家。然后在你的工作站上掛載該共享目錄來輕松的編輯文件疲陕。
本書假定你運(yùn)行 Debian GNU/Linux的穩(wěn)定版(在寫本書時為版本9,代號Stretch)侣监。Ubuntu是另一個常用的選擇鸭轮,因?yàn)樗菢?gòu)建在Debian之上的,本書中大部分的示例應(yīng)該都不需要進(jìn)行修改即可在其上運(yùn)行橄霉。不論你選擇哪個Linux發(fā)行版窃爷,你都應(yīng)該要有一個從命令行使用它的概念,有系統(tǒng)運(yùn)維相關(guān)知識顯然也沒有什么壞處姓蜂。
準(zhǔn)備工作
我們假定你已運(yùn)行了Linux并因擁有 root 密碼或配置了 sudo 而擁有root訪問權(quán)限按厘。下面的部分中,我們將在命令行中需要你的工作用戶的登錄名時使用$(whoami)钱慢。這是代替你輸入命令的登錄用戶的shell命令逮京。
譯者注:Debian 的安裝請參見Odoo 12開發(fā)者指南補(bǔ)充知識
如果你有GitHub賬戶的話有些操作一定會更容易。如果你尚未擁有GitHub賬戶束莫,請訪問https://github.com并創(chuàng)建賬戶懒棉。
如何安裝...
使用源碼安裝 Odoo草描,需要按照如下的步驟:
譯者注:如需使用Python 3.6請參照Odoo 12開發(fā)者指南補(bǔ)充知識,另 Alan 也按照下面的命令制作了一個安裝腳本@GitHub
- 運(yùn)行如下命令來安裝主要依賴
$ sudo apt-get update
$ sudo apt-get install -y git python3.5 postgresql nano \
virtualenv xz-utils wget fontconfig libfreetype6 libx11-6 \
libxext6 libxrender1 xfonts-75dpi
> ??Odoo v12的樣式預(yù)處理由less變成了scss策严。因此穗慕,如果你使用12以下的版本,那么你需要安裝node-less node-clean-css來獲取正確的樣式妻导。
- 下載并安裝wkhtmltopdf:
$ wget -O wkhtmltox.tar.xz \
https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz
$ tar xvf wkhtmltox.tar.xz
$ sudo mv wkhtmltox/lib/* /usr/local/lib/
$ sudo mv wkhtmltox/bin/* /usr/local/bin/
$ sudo mv wkhtmltox/share/man/man1 /usr/local/share/man/
# 譯者補(bǔ)充:當(dāng)前官方推薦的版本為0.12.5逛绵,可通過如下命令進(jìn)行安裝
$ wget "https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.xenial_amd64.deb" -O /tmp/wkhtml.deb
$ sudo dpkg -i /tmp/wkhtml.deb
$ sudo apt-get -fy install
- 現(xiàn)在,使用如下命令來安裝構(gòu)建依賴:
$ sudo apt-get install -y gcc python3.5-dev libxml2-dev \
libxslt1-dev libevent-dev libsasl2-dev libssl1.0-dev libldap2-dev \
libpq-dev libpng-dev libjpeg-dev
- 配置PostgreSQL
$ sudo -u postgres createuser --createdb $(whoami)
$ createdb $(whoami)
- 配置git(以下信息請自行修改):
$ git config --global user.name "Your Name"
$ git config --global user.email youremail@example.com
- 克隆 Odoo 基礎(chǔ)代碼:
$ mkdir ~/odoo-dev
$ cd ~/odoo-dev
$ git clone -b 12.0 --depth 1 --single-branch https://github.com/odoo/odoo.git
$ cd odoo
**譯者注:**建議像上面這樣在原文的基礎(chǔ)上添加--depth 1倔韭,否則將下載2G多的文件术浪,國內(nèi)網(wǎng)絡(luò)環(huán)境耗時會非常久
- 創(chuàng)建一個odoo-12.0 虛擬環(huán)境并激活它:
$ virtualenv -p python3 ~/odoo-12.0
$ source ~/odoo-12.0/bin/activate
- 在virtualenv中安裝Odoo的Python依賴:
$ pip3 install -r requirements.txt
- 創(chuàng)建并啟動你的第一個Odoo實(shí)例:
$ createdb odoo-test
$ python3 odoo-bin -d odoo-test --addons-path=addons \
--db-filter=odoo-test$
**譯者注:**初次啟動可能會需要添加-i base參數(shù)來初始化數(shù)據(jù)庫
- 在瀏覽器中訪問http://localhost:8069(虛擬機(jī)請修改為對應(yīng)的 IP 地址),并使用admin賬戶和密碼admin來進(jìn)行登錄
譯者注:此處省略小貼士關(guān)于下載代碼相關(guān)內(nèi)容寿酌,在翻譯和實(shí)操的過程中胰苏,Alan 會將相關(guān)代碼上傳到 GitHub 上
運(yùn)行原理...
依賴來自不同的數(shù)據(jù)源。首先醇疼,你需要Odoo的核心依賴碟联、Python解釋器用于運(yùn)行源代碼,PostgreSQL數(shù)據(jù)庫服務(wù)用于存儲實(shí)例數(shù)據(jù)僵腺。Git用于源碼版本控制以及獲取Odoo本身的源代碼。
??在11.0之前壶栋,Odoo的各版本以Python 2.7進(jìn)行運(yùn)行辰如。從Odoo 11.0開始,支持的Python最小版本為3.5贵试。Python的這兩版本并不兼容琉兜,因此在Python 2.7上運(yùn)行的模塊(Odoo 9.0或10.0)會要求移植為符合Odoo 11.0 以及Python 3的具體要求。
因?yàn)槲覀冃枰诜?wù)器上以root或postgres(PostgreSQL的管理用戶)編輯一些文件毙玻,我們需要安裝一個基本控制臺的文本編輯器豌蟋。我們推薦使用nano,因?yàn)樗褂蒙戏浅:唵紊L玻堊杂蛇x擇你自己所喜歡的編輯器梧疲,只要能在Console中使用即可。例如运准,你可以使用vim, e3或emacs-nox幌氮。
Wkhtmltopdf是Odoo的一個運(yùn)行時依賴,用于生成PDF報告胁澳。Odoo 12.0所要求的版本為0.12.4该互,在當(dāng)前的GNU/Linux發(fā)行版中并沒有包含。所幸wkhtmltopdf的維護(hù)者提供對不同發(fā)行版的預(yù)構(gòu)建包韭畸,地址為http://wkhtmltopdf.org/downloads.html.
有很多其它的運(yùn)行時依賴為Python模塊宇智,我們可以在虛擬環(huán)境中使用pip3進(jìn)行安裝蔓搞。但是,其中一些Python模塊會包含對原生C語言庫的依賴随橘,Python綁定需要它來進(jìn)行編譯喂分。因此,我們安裝了這些C語言庫的開發(fā)包以及Python開發(fā)包和C編譯器太防。在安裝了這些構(gòu)建依賴之后妻顶,我們就可以使用pip3 install -r requirements.txt(Odoo源代碼中的一個文件)來下載、編譯和安裝這些Python模塊了蜒车。
虛擬環(huán)境
Python虛擬環(huán)境或簡稱virtualenv讳嘱,是隔離的Python工作空間。這些對于Python開發(fā)者非常有用酿愧,因?yàn)樗鼈冊试S安裝不同Python解釋器版本上不同版本Python庫的不同工作空間沥潭。
你可以使用virtualenv -p python3 path/to/newenv命令來創(chuàng)建所需數(shù)量的環(huán)境。這會在指定位置創(chuàng)建一個newenv目錄嬉挡,其中包含一個bin/子目錄和一個lib/python3.5(譯者注:或你安裝的其它 Python 3版本)子目錄钝鸽。請記得加上-p python3,不加的話你有可能會創(chuàng)建一個Python 2.7的虛擬環(huán)境庞钢,那就無法運(yùn)行Odoo 12.0了拔恰。
在bin/目錄,你會發(fā)現(xiàn)一些腳本:
- activate:這腳本不被執(zhí)行基括,由內(nèi)置的source命令來進(jìn)行加載颜懊。這會通過調(diào)整PATH環(huán)境變量來包含virtualenv的bin/目錄來激活該環(huán)境。它還會安裝名為的deactivate的shell函數(shù)风皿,通過運(yùn)行它可以退出virtualenv河爹,并通過改變shell提示符來告訴你virtualenv當(dāng)前已激活。
- pip3:這是pip3的一特殊版本桐款,僅在virtualenv中生效咸这。
- python3:這是對系統(tǒng)的Python解釋器的封裝,它使用在virtualenv中已安裝的包魔眨。
??shell內(nèi)置的source命令也可使用 . (單個點(diǎn)媳维,接空格和要進(jìn)行source的文件路徑)。這表示你可以使用 . ~/odoo-12.0/bin/activate 來代替source ~/odoo-12.0/bin/activate遏暴。簡寫形式完全沒有問題侨艾,但本書將出于易讀性的考慮保持使用source。
使用virtualenv有兩種主要方法拓挥。你可以像前例中那樣激活它(并在完成后調(diào)用deactivate)唠梨,或者你可以顯式地使用該環(huán)境下bin/目錄中的腳本來以完整路徑進(jìn)行調(diào)用,這樣你無需激活virtualenv腳本侥啤。這是一個偏好問題当叭,你應(yīng)該通過嘗試來看哪種方式更適合你茬故。
你可以在第一行放上可執(zhí)行Python腳本。應(yīng)該會是這樣:
#! /usr/bin/env python3
通過一個激活的virtualenv腳本這些會更易于使用蚁鳖。
odoo-bin腳本就屬于這種情況磺芭,你可以通過如下方式來進(jìn)行調(diào)用:
$ ./odoo-bin -d odoo-test --addons-path=addons --db-filter=odoo-test
PostgreSQL配置
在GNU/Linux系統(tǒng)中,Odoo使用psycopg2 Python庫來與PostgreSQL數(shù)據(jù)庫進(jìn)行連接醉箕。Odoo可以使用默認(rèn)值非常好地運(yùn)作钾腺,這些默認(rèn)值用于通過psycopg2訪問PostgreSQL數(shù)據(jù)庫。它使用如下的默認(rèn)值:
- 默認(rèn)psycopg2嘗試使用本地連接的當(dāng)前用戶相同的用戶名來連接數(shù)據(jù)庫讥裤,這會啟動無密碼認(rèn)證
- 本地連接使用Unix域套接字
- 數(shù)據(jù)庫服務(wù)監(jiān)聽5432端口
這里沒什么特別的要做放棒,因此我們只是使用了postgres管理員用戶創(chuàng)建了一個與系統(tǒng)當(dāng)前用戶相同的用戶名,并給其使用同名新用戶新建數(shù)據(jù)庫的權(quán)限己英。在我們使用psql命令時這會被用作默認(rèn)數(shù)據(jù)庫间螟。
在開發(fā)服務(wù)器上,給予PostgreSQL用戶更多的權(quán)限并使用 --superuser命令行參數(shù)而不僅僅是--createdb沒有問題损肛。效果是該用戶可以創(chuàng)建其它用戶并可全局管理數(shù)據(jù)庫實(shí)例厢破。如果你覺得--superuser太過了,在創(chuàng)建你的數(shù)據(jù)庫用戶時仍可以在--createdb之外用--createrole治拿。在生產(chǎn)服務(wù)器上要避免這么做摩泪,因?yàn)檫@會給予黑客在一些部署代碼中更多地利用漏洞的機(jī)會(參見第三章 服務(wù)器部署)。
如果你想使用不同的數(shù)據(jù)庫用戶劫谅,則需提供該用戶的密碼加勤。這通過在創(chuàng)建用戶時在命令行傳遞--pwprompt標(biāo)記來實(shí)現(xiàn),此時命令行會提示你輸入密碼同波。
如果用戶已存在而你又想要為其設(shè)置密碼(或修改一個已忘記的密碼),可以使用如下命令:
$ psql -c "alter role $(whoami) with password 'newpassword'"
小貼士:如果這個命令執(zhí)行報錯提示數(shù)據(jù)庫不存在叠国,這是因?yàn)槟銢]按照操作步驟的第4步創(chuàng)建一個與當(dāng)前登錄名相同的數(shù)據(jù)庫未檩。不必?fù)?dān)心,僅需使用 --dbname選項(xiàng)來添加已有數(shù)據(jù)庫名粟焊,例如 --dbname template1冤狡。
Git配置
在本書的某些部分,你會需要使用git commit進(jìn)行提交项棠。必須要進(jìn)行一些基礎(chǔ)設(shè)置否則會報錯悲雳,你需要提供自己的Git用戶名和email地址。Git會很好的提示你這做香追,但你也可以現(xiàn)在就提前設(shè)置好合瓢。
??如果你使用一些諸如Travis或持續(xù)集成的服務(wù)這也是需要謹(jǐn)記于心的,你的測試腳本會需要執(zhí)行一些git合并透典。你需要提供一個名稱和email來讓合并成功執(zhí)行晴楔。
下載Odoo源碼
下載Odoo源代碼由git clone操作來執(zhí)行顿苇;保持耐心,這會花費(fèi)一些時間税弃。--branch 12.0 --single-branch選項(xiàng)會避免下載其它分支纪岁,節(jié)約一些時間。也可以使用--depth選項(xiàng)來避免下載整個倉庫歷史記錄则果,但該選項(xiàng)的缺點(diǎn)是你在查找問題時將無法去查看歷史記錄幔翰。
Odoo開發(fā)者還建議了nightly構(gòu)建,可以通過tarball和發(fā)行包進(jìn)行獲取西壮。使用git clone的主要優(yōu)勢在于在源代碼樹提交了新的漏洞修復(fù)時你可以更新自己的倉庫遗增。你也將可以輕松地測試所建議的修復(fù)并追蹤回退,這會讓你的漏洞報告更精確及對開發(fā)者更有幫助茸时。
啟動實(shí)例
到了你期待已久的時刻了贡定。要啟動我們的第一個實(shí)例,首先我們創(chuàng)建一個新的空數(shù)據(jù)庫可都,然后使用odoo-bin以及如下命令行參數(shù):
- -d database_name:默認(rèn)使用這一數(shù)據(jù)庫缓待。
- --db-filter=database_name很重要,因?yàn)樵谄ヅ淠J街惺褂昧苏齽t表達(dá)式签杈,這會避免選擇以相同的指定字符串開頭的名稱瘫镇。
- --addons-path=directory1,directory2,...:Odoo通過這一逗號分隔列表中的目錄來查找插件(add-on)。在實(shí)例創(chuàng)建的時候掃描該列表來添加實(shí)例中可用的插件模塊列表答姥。
如果你使用了與Linux當(dāng)前登錄用戶不同的數(shù)據(jù)庫用戶铣除,則需要再傳遞如下的參數(shù):
- --db_host=localhost: 使用一個數(shù)據(jù)庫服務(wù)的 TCP連接
- --db_user=database_username: 使用指定的數(shù)據(jù)庫登錄用戶
- --db_password=database_password: 這是用于認(rèn)證PostgreSQL服務(wù)的密碼
使用--help可獲取所有可用選項(xiàng)的一個總覽。我們在本章后面及第二章 管理Odoo服務(wù)器實(shí)例中還會來了解odoo-bin腳本更多的知識鹦付。
Odoo在一個空數(shù)據(jù)庫上啟動時尚粘,它會首先創(chuàng)建一個支持其操作所需的數(shù)據(jù)庫結(jié)構(gòu)。它還會掃描插件路徑來查找可用的插件模塊敲长,并將一些內(nèi)容插入到數(shù)據(jù)庫的初始記錄中郎嫁。這包括admin用戶及默認(rèn)admin密碼,在登錄時你將需要使用祈噪。
Odoo包含一個HTTP服務(wù)器泽铛。默認(rèn),它監(jiān)聽TCP端口8069上的所有本地網(wǎng)絡(luò)接口辑鲤,因此在瀏覽器中訪問http://localhost:8069/( 譯者注:非本地請自行修改為 IP 地址)可以訪問到你所新創(chuàng)建的實(shí)例盔腔。
使用start命令管理Odoo環(huán)境
我們會經(jīng)常要在Odoo實(shí)例中用到自定義或社區(qū)模塊。將它們放在一個單獨(dú)的目錄中會讓為Odoo安裝升級或調(diào)試自定義模塊的問題更為簡單。我們只需將該目錄添加到插件路徑中铲觉,它們就可以同核心模塊一樣在實(shí)例中使用了澈蝙。
可以將這個模塊路徑看作一個Odoo環(huán)境。Odoo的start命令讓以目錄組織Odoo實(shí)例更為方便撵幽,每個目錄中包含自己的模塊灯荧。
準(zhǔn)備工作
這一節(jié)要求已安裝過 Odoo。我們假定代碼的目錄為~/odoo-dev/odoo并且已激活虛擬環(huán)境盐杂。
這表示運(yùn)行如下命令可以成功地啟動Odoo服務(wù):
>$ ~/odoo-dev/odoo/odoo-bin
如何啟動...
為你的實(shí)例創(chuàng)建一個工作環(huán)境逗载,需要按照如下步驟:
- 更改到Odoo所在目錄
$ cd ~/odoo-dev
-
選擇該環(huán)境的名稱并為其創(chuàng)建一個目錄:
$ mkdir my-odoo
3. 更改到這個目錄并為該環(huán)境啟動Odoo服務(wù)實(shí)例
```
$ cd my-odoo/
$ ../odoo/odoo-bin start
運(yùn)行原理...
Odoo的start命令是使用當(dāng)前目錄啟動服務(wù)實(shí)例的一個快捷方式。目錄名自動作為數(shù)據(jù)庫名(-d選項(xiàng))链烈,只要其包含Odoo插件模塊當(dāng)前目錄也自動插入到插件路徑(--addons-path選項(xiàng))中厉斟。在前面的操作步驟中,你不會看到插件路徑中有當(dāng)前目錄强衡,因?yàn)樗€不包含任何模塊擦秽。
??如果你在虛擬環(huán)境中使用start命令,它會使用虛擬環(huán)境的名稱來代替所處目錄名稱來作為數(shù)據(jù)庫名漩勤。但如果你不在虛擬環(huán)境中感挥,就會使用當(dāng)前目錄名。
更多內(nèi)容...
默認(rèn)使用當(dāng)前目錄越败,但--path選項(xiàng)允許你轉(zhuǎn)而設(shè)置一個具體的路徑來供使用触幼。例如,可在任何目錄下使用這條命令:
$ ~/odoo-dev/odoo/odoo-bin start --path=~/odoo-dev/my-odoo
所使用的數(shù)據(jù)庫也可以使用常用的-d 選項(xiàng)來進(jìn)行重選究飞。事實(shí)上置谦,所有其它的odoo-bin 常用命令行參數(shù)都可以使用,除--addons-path外亿傅。例如媒峡,使用如下命令來設(shè)置服務(wù)監(jiān)聽端口:
$ ../odoo/odoo-bin start -p 8080 -i base
可以看到,Odoo的start命令是以自己的模塊路徑快速啟動Odoo實(shí)例的一種很便捷的方式葵擎。
管理Odoo服務(wù)端數(shù)據(jù)庫
在使用Odoo時谅阿,你的實(shí)例所有的數(shù)據(jù)都存儲在PostgreSQL數(shù)據(jù)庫中。你習(xí)慣的所有標(biāo)準(zhǔn)數(shù)據(jù)庫管理工具都可以使用坪蚁,但Odoo為一些通過操作提供了一個網(wǎng)頁界面。
準(zhǔn)備工作
我們假定你的工作環(huán)境已設(shè)置镜沽,并且你已運(yùn)行了一個實(shí)例敏晤。不要使用前面操作中所介紹的odoo-bin start命令來啟動,因?yàn)檫@會使用一些牽涉到多數(shù)據(jù)庫管理選項(xiàng)的服務(wù)配置缅茉。
如何管理...
Odoo數(shù)據(jù)庫管理界面提供創(chuàng)建嘴脾、復(fù)制、刪除、備份和恢復(fù)數(shù)據(jù)庫的工具译打。還有一種修改master密碼的方式耗拓,用于保持對數(shù)據(jù)庫管理界面的訪問。
訪問數(shù)據(jù)庫管理界面
需要執(zhí)行如下步驟來訪問數(shù)據(jù)庫:
- 進(jìn)入實(shí)例的登錄頁面(如果已登錄請先登出)奏司。
- 點(diǎn)擊Manage Databases鏈接乔询。這會導(dǎo)航至http://localhost:8069/web/database/manager(你也可以在瀏覽器中直接訪問這個URL)。
設(shè)置或修改master密碼
如果你已經(jīng)以默認(rèn)值設(shè)置了實(shí)例且尚未像下面講解的那樣做過修改韵洋,數(shù)據(jù)庫管理頁面會顯示一條警告竿刁,告訴你還沒有設(shè)置master密碼并建議你通過點(diǎn)擊鏈接來進(jìn)行設(shè)置:
你需要執(zhí)行如下步驟來設(shè)置master:
-
點(diǎn)擊Set Master Password按鈕。會彈出一個對話框來要求你提供新的 master 密碼:
輸入一個復(fù)雜的新密碼并點(diǎn)擊Continue
如果已設(shè)置了master密碼搪缨,點(diǎn)擊頁面底部的Set Master Password按鈕來進(jìn)行修改食拜。在彈出的對話框中輸入老的master密碼再輸入新密碼,然后點(diǎn)擊Continue副编。
??master密碼是在admin_password鍵下的服務(wù)配置文件负甸。如果啟動服務(wù)時沒有指定配置文件,新的配置會在~/.odoorc中生成痹届。查看下一部分獲取更多有關(guān)配置文件的信息呻待。
創(chuàng)建新數(shù)據(jù)庫
這個對話框用于創(chuàng)建一個由當(dāng)前Odoo服務(wù)處理的新數(shù)據(jù)庫實(shí)例:
-
在數(shù)據(jù)庫管理窗口,點(diǎn)擊頁面底部的Create Database按鈕:
-
填寫表單短纵,如下:
- Master Password:這是這一實(shí)例的master密碼带污。
- Database Name:輸入你所想要創(chuàng)建的數(shù)據(jù)庫名稱。
- Password:輸入你想為新實(shí)例所設(shè)置的admin用戶密碼香到。
- Phone Number:設(shè)置電話號碼(可選)鱼冀。
- Language:在下拉列表中選擇你希望新數(shù)據(jù)庫默認(rèn)安裝的語言。
- Country:在下拉列表中選擇主公司的國家悠就。選擇這一項(xiàng)后會自動做一些配置千绪,如公司的幣種。
- Load demonstration data:勾選獲取演示數(shù)據(jù)梗脾。這對于運(yùn)行交互式測試或?yàn)橛脩粼O(shè)置演示項(xiàng)目非常有用荸型,但針對包含生產(chǎn)數(shù)據(jù)的數(shù)據(jù)庫設(shè)計時則不應(yīng)勾選。
??如果你想使用該數(shù)據(jù)庫來運(yùn)行模塊的自動化測試(參見第八章 調(diào)試)炸茧,你會需要有演示數(shù)據(jù)瑞妇,因?yàn)镺doo中的大多數(shù)自動化測試依賴于這些記錄來成功運(yùn)行。
點(diǎn)擊Continue按鈕并等待新數(shù)據(jù)庫初始化完成梭冠。然后你會被重定向到該實(shí)例并以管理員進(jìn)行連接辕狰。
小貼士:問題解決:如果你被重定向到登錄頁,這可能是因?yàn)橄騉doo傳遞了--db-filter選項(xiàng)并且與新數(shù)據(jù)庫名不匹配造成的控漠。注意odoo-bin start會默默地進(jìn)行這一操作蔓倍,僅讓當(dāng)前數(shù)據(jù)庫可用悬钳。解決這一問題,只需不使用start命令來對Odoo進(jìn)行重啟偶翅,在本章中的從源碼輕松安裝 Odoo 一節(jié)展示過這一做法默勾。如果你有一個配置文件(參見本章后面的在一個文件中存儲實(shí)例配置一節(jié)),那么請檢查db_filter并未進(jìn)行設(shè)置或設(shè)置一個與新數(shù)據(jù)庫匹配的值聚谁。
復(fù)制數(shù)據(jù)庫
通常你已經(jīng)有一個數(shù)據(jù)庫了母剥,你會想要使用它做一存儲過程的試驗(yàn)或運(yùn)行一個測試,但又不修改已有數(shù)據(jù)垦巴。這里的方案很簡單:復(fù)制該數(shù)據(jù)庫并在拷貝上運(yùn)行測試媳搪。可以按需重復(fù)多次:
-
在數(shù)據(jù)庫管理頁面骤宣,在想要復(fù)制的數(shù)據(jù)庫旁點(diǎn)擊Duplicate Database 鏈接:
- 填寫表單如下:
- Master Password:這是Odoo服務(wù)的master密碼
- New Name:給予拷貝的名稱
- 點(diǎn)擊Continue按鈕秦爆。
- 你可以在數(shù)據(jù)庫管理頁面點(diǎn)擊新創(chuàng)建的數(shù)據(jù)庫名稱來訪問該數(shù)據(jù)庫的登錄頁面。
刪除數(shù)據(jù)庫
在完成測試之后憔披,你會想要清理掉所復(fù)制的數(shù)據(jù)庫等限。通過如下步驟來進(jìn)行清理:
-
在數(shù)據(jù)庫管理頁面,點(diǎn)擊想刪除的數(shù)據(jù)庫名稱旁的Delete Database鏈接:
- 填寫表單并輸入 Master Password芬膝,即Odoo服務(wù)的master密碼望门。
- 點(diǎn)擊Delete按鈕。
??小心锰霜!數(shù)據(jù)丟失筹误!
如果你選擇了錯誤的數(shù)據(jù)庫,并且沒有備份癣缅,則無法恢復(fù)損失的數(shù)據(jù)厨剪。
備份數(shù)據(jù)庫
需執(zhí)行如下步驟來創(chuàng)建一個備份:
-
在數(shù)據(jù)庫管理頁面,點(diǎn)擊想要備份的數(shù)據(jù)庫旁的Backup Database鏈接:
-
填寫表單
- Master Password:Odoo服務(wù)的master密碼友存。
- Backup Format:對生產(chǎn)數(shù)據(jù)庫請保持使用zip祷膳,因?yàn)檫@是唯一真正的全量備份格式。僅在備份不關(guān)心文件存儲的開發(fā)數(shù)據(jù)庫時使用pg_dump格式屡立。
點(diǎn)擊Backup直晨。然后瀏覽器會下載備份文件。
恢復(fù)數(shù)據(jù)庫備份
如果你需要恢復(fù)一個備份膨俐,需要按如下步驟操作:
-
在數(shù)據(jù)庫管理頁面勇皇,點(diǎn)擊頁面詢問的Restore Database按鈕:
-
填寫表單:
- Master Password:這是Odoo服務(wù)的master密碼。
- File:這是之前所下載的Odoo備份
- Database Name:提供你需進(jìn)行備份恢復(fù)的數(shù)據(jù)庫名稱焚刺。該數(shù)據(jù)庫在服務(wù)器上一定不能存在敛摘。
- This database might have been moved 或copied:如果原數(shù)據(jù)庫在另一臺服務(wù)器上或是為從當(dāng)前服務(wù)器刪除則選擇數(shù)據(jù)庫被移動。否則選擇數(shù)據(jù)庫是一個拷貝檩坚,這也是安全的默認(rèn)選項(xiàng)着撩。
點(diǎn)擊Continue按鈕。
??不能在數(shù)據(jù)庫自身之上恢復(fù)數(shù)據(jù)庫匾委。這么做會得到一條錯誤消息(Database restore error: Database already exists)拖叙。你需要先刪除該數(shù)據(jù)庫。
運(yùn)行原理...
除Change master password以外的這些頁面上的功能赂乐,在服務(wù)器上運(yùn)行PostgreSQL運(yùn)維命令并通過網(wǎng)頁界面回報結(jié)果薯鳍。
master密碼是非常重要的信息,存儲在Odoo服務(wù)的配置文件中挨措,從不在數(shù)據(jù)庫中進(jìn)行存儲挖滤。曾經(jīng)有一個admin默認(rèn)值,但使用這個值是一個廣為人知的安全問題浅役。在Odoo v9之后的版本中斩松,這被識別為一個未設(shè)置的master密碼,并在訪問數(shù)據(jù)庫管理頁面時會敦促你修改密碼觉既。雖然這在配置文件中以admin_passwd進(jìn)行存儲惧盹,它與admin的密碼是不同的,它們是兩個獨(dú)立的密碼瞪讼。master密碼是為Odoo服務(wù)進(jìn)程設(shè)置的钧椰,進(jìn)程本身可以處理多個數(shù)據(jù)庫實(shí)例,每個實(shí)例都一個獨(dú)立的admin用戶及其自己的密碼符欠。
??安全考慮:記住本章中我們所考慮的是開發(fā)環(huán)境嫡霞。Odoo數(shù)據(jù)庫管理界面在我們運(yùn)行生產(chǎn)服務(wù)時是需要進(jìn)行安全保護(hù)的,因此不會給到太多的敏感信息的訪問權(quán)限希柿,尤其是如果服務(wù)器托管了多個不同客戶端的Odoo實(shí)例時诊沪。這會在第三章 服務(wù)器部署中進(jìn)行講解。
Odoo使用PostgreSQL的createdb工具來新建數(shù)據(jù)庫狡汉,它通過和以空數(shù)據(jù)庫啟動Odoo時相同的方式調(diào)用內(nèi)部的Odoo函數(shù)來初始化新數(shù)據(jù)庫娄徊。
Odoo使用createdb的--template選項(xiàng)傳遞原數(shù)據(jù)庫作為參數(shù)來復(fù)制數(shù)據(jù)庫。這基本上使用內(nèi)部優(yōu)化的PostgreSQL例行程序在新數(shù)據(jù)庫中復(fù)制模板數(shù)據(jù)庫的結(jié)構(gòu)盾戴,這比創(chuàng)建備份和恢復(fù)備份的速度會快很多(尤其是在使用網(wǎng)頁界面時寄锐,還要求你下載備份文件然后再重新上傳)。
備份和恢復(fù)備份操作分別使用pg_dump和pg_restore工具尖啡。在使用zip格式時橄仆,備份還包含文件存儲的拷貝,其中為配置Odoo所不保存在數(shù)據(jù)庫中的文件的拷貝衅斩,這是12.0中的默認(rèn)選項(xiàng)盆顾。如果沒做過修改的話,這些文件存放在~/.local/share/Odoo/filestore中畏梆。
??如果備份很大您宪,下載時會失敗奈懒。這可能是因?yàn)镺doo服務(wù)無法在內(nèi)存中處理這么大的文件或者是因?yàn)榉?wù)在反向代理之后運(yùn)行(參見第三章 服務(wù)器部署)而這個代理設(shè)置了HTTP請求大小的限制。反過來宪巨,出于某些原因磷杏,你可能會在恢復(fù)數(shù)據(jù)庫的操作中遇到問題。當(dāng)你開始碰到這些問題時捏卓,是投入時間建立更健壯的外部備份方案的時候了极祸。
更多內(nèi)容...
有經(jīng)驗(yàn)的Odoo開發(fā)人員通常不使用數(shù)據(jù)庫管理界面,而在命令行執(zhí)行相關(guān)操作怠晴。比如使用演示數(shù)據(jù)初始化新數(shù)據(jù)庫遥金,可以使用如下的一行代碼:
$ createdb testdb && odoo-bin -d testdb
命令行的另一個彩蛋是你可以在使用時要求安裝一些插件,比如 -i sale,purchase,stock(更多內(nèi)容請見第二章 管理Odoo服務(wù)器實(shí)例)蒜田。
停止服務(wù)并運(yùn)行如下這些命令來復(fù)制數(shù)據(jù)庫:
$ createdb -T dbname newdbname
$ cd ~/.local/share/Odoo/filestore # 如果你修改了data_dir請調(diào)整此處
$ cp -r dbname newdbname
$ cd -
注意在開發(fā)的上下文中稿械,文件存儲通常會被省略。
??createdb -T 僅在數(shù)據(jù)庫沒有活躍會話方能使用冲粤,這表示在通過命令行復(fù)制數(shù)據(jù)庫之前你需要關(guān)閉Odoo服務(wù)溜哮。
可運(yùn)行如下命令來刪除一個實(shí)例:
$ dropdb dbname
$ rm -rf ~/.local/share/Odoo/filestore/dbname
可運(yùn)行如下命令來創(chuàng)建一個備份(假設(shè)PostgreSQL服務(wù)在本地運(yùn)行):
$ pg_dump -Fc -f dbname.dump dbname
$ tar cjf dbname.tgz dbname.dump ~/.local/share/Odoo/filestore/dbname
可運(yùn)行如下命令來恢復(fù)備份:
$ tar xf dbname.tgz
$ pg_restore -C -d dbname dbname.dump
??當(dāng)心!
如果你的Odoo實(shí)例使用了另一個用戶來連接數(shù)據(jù)庫色解,需要傳遞-U username來使用正確的用戶作為恢復(fù)數(shù)據(jù)庫的所有者茂嗓。
在一個文件中存儲實(shí)例配置
odoo-bin有幾十個選項(xiàng),記住所有這些以及記得在啟動服務(wù)時適當(dāng)?shù)倪M(jìn)行配置會非常單調(diào)費(fèi)力科阎。所幸可以將所有這些存儲在一個配置文件中述吸,只需對想要修改的選項(xiàng)進(jìn)行手動修改,比如為開發(fā)環(huán)境锣笨。
如何配置
運(yùn)行如下命令來為你的Odoo實(shí)例生成一個配置文件:
$ ./odoo-bin --save --config myodoo.cfg --stop-after-init
你可以添加其它選項(xiàng)蝌矛,它們的值就會被保存到所生成的文件中了。所有未設(shè)置的值都會以默認(rèn)值進(jìn)行保存错英。使用如下命令來獲取選項(xiàng)列表:
$ ./odoo-bin --help | less
這會提供一些不同選項(xiàng)所執(zhí)行內(nèi)容的幫助文檔入撒。要從命令行形式轉(zhuǎn)化為配置形式,使用長選項(xiàng)名椭岩,刪除前面的中間杠茅逮,并將中間的中間杠轉(zhuǎn)換為下劃線:
--without-demo就變成了without_demo。對大多數(shù)選擇都是如此判哥,但有一些例外献雅,在下一部分中會列出。
編輯myodoo.cfg文件(使用下一部分中的表示來查看所要修改的參數(shù))塌计。然后運(yùn)行如下命令來以所保存的選項(xiàng)啟動服務(wù):
$ ./odoo-bin -c myodoo.cfg
??-config選項(xiàng)通常簡寫為-c挺身。
運(yùn)行原理
啟動時,Odoo通過三個步驟來加載它的配置锌仅。首先章钾,所有選項(xiàng)的一組默認(rèn)值會從源碼中進(jìn)行初始化墙贱,然后解析配置文件,該文件中所定義的任意值會覆蓋默認(rèn)值贱傀。最后嫩痰,會分析命令行選項(xiàng),它們的值會覆蓋前面步驟中所獲取的配置窍箍。
前面我們已提到,配置變量的名稱可通過刪除命令行選項(xiàng)的前置中間杠以及將中間的連接符轉(zhuǎn)換為下劃線來獲取丽旅。其中有一些例外椰棘,特別是下面這些:
命令行 | 配置文件 |
---|---|
--db-filter | dbfilter |
--no-http | http_enable = True/False |
--database | db_name |
--dev | dev_mode |
--i18n-import/--i18n-export | 不可用 |
以下是通過配置文件設(shè)置的常用選項(xiàng)列表:
選項(xiàng) | 格式 | 用途 |
---|---|---|
without_demo | 逗號分隔的模塊名列表,或 all(取消所有模塊的演示數(shù)據(jù))榄笙,或 False(為所有模塊啟用演示數(shù)據(jù)) | 該選項(xiàng)阻止模塊演示數(shù)據(jù)被加載 |
addons_path | 逗號分隔的路徑列表 | 這是一個服務(wù)查找插件的路徑名列表(參見第二章 管理Odoo服務(wù)器實(shí)例) |
admin_passwd | 文本 | 這是 master 密碼(參見前面部分的內(nèi)容) |
data_dir | 一個目錄路徑 | 這個目錄中服務(wù)會存儲session信息邪狞、從網(wǎng)上下載的插件以及在啟用了文件存儲時存放文檔。 |
db_host | 主機(jī)名 | 這是運(yùn)行PostgreSQL服務(wù)的服務(wù)器名茅撞。使用 False 來使用本地 Unix 域套接字帆卓,以及 localhost 來使用本地 TCP 套接字。 |
db_user | 數(shù)據(jù)庫登錄用戶 | 在db_host為 False 時這通常為空米丘。這將是用于連接數(shù)據(jù)庫的用戶剑令。 |
db_password | 數(shù)據(jù)庫用戶密碼 | 在db_host為 False以及 db_user 與運(yùn)行服務(wù)的用戶相同時通常為空运敢。閱讀pg_hba.conf的主頁面來獲取更多相關(guān)信息幽污。 |
db_name | 數(shù)據(jù)庫名 | 用于設(shè)置一些默認(rèn)執(zhí)行命令作用的數(shù)據(jù)庫名。這不會限制服務(wù)所操作的數(shù)據(jù)庫哟楷。參照下面的 dbfilter 參數(shù)堕扶。 |
dbfilter | 一個正則表達(dá)式 | 該表達(dá)式應(yīng)匹配服務(wù)所使用的數(shù)據(jù)庫名碍脏。如果你運(yùn)行網(wǎng)站,應(yīng)該匹配單個數(shù)據(jù)庫稍算,類似^databasename$典尾。更多相關(guān)信息請參見第三章 服務(wù)器部署。 |
http_interface | 網(wǎng)絡(luò)接口的 IP 地址 | 默認(rèn)為0.0.0.0糊探,表示服務(wù)監(jiān)聽所有接口钾埂。 |
http_port | ||
longpolling_port | 端口號 | 這些是 Odoo 服務(wù)所會監(jiān)聽的端口。你需要指定這兩者來在同一臺主機(jī)上運(yùn)行多個 Odoo 服務(wù)科平;longpolling_port僅在workers不為0時使用勃教。 |
http_port默認(rèn)值為8069,longpolling_port默認(rèn)為8072匠抗。 | ||
logfile | 文件路徑 | Odoo 寫入日志的文件故源。 |
log_level | 日志信息級別 | 指定日志的級別」常可接受的值(內(nèi)容逐漸增加)包括critical, error, warn, info, debug, debug_rpc, debug_rpc_answer, debug_sql绳军。 |
workers | 整數(shù) | worker進(jìn)程的數(shù)量印机,更多信息參見第三章 服務(wù)器部署。 |
list_db | True/False | 設(shè)置為 True 來取消列出數(shù)據(jù)庫门驾。更多信息請參見第三章 服務(wù)器部署射赛。 |
proxy_mode | True/False | 激活反向代理WSGI封裝。僅在運(yùn)行于可信任的 web 代理后啟用它奶是。 |
譯者注:表中的pg_hba.conf文件位置:/etc/postgresql/xxx/main/pg_hba.conf
??Odoo對配置文件的解析現(xiàn)在使用Python的ConfigParser模塊楣责。但是在Odoo 11.0中的實(shí)現(xiàn)發(fā)生了變化,它不再支持使用變量插值聂沙。因此秆麸,如果你習(xí)慣了使用%(section.variable)s表達(dá)式從其它變量的值定義變量值的話,你會需要改變這一習(xí)慣并恢復(fù)使用顯示的值及汉。
有些選項(xiàng)不在配置文件 使用沮趣,但廣泛用于開發(fā)之中:
選項(xiàng) | 格式 | 用途 |
---|---|---|
-i或--init | 逗號分隔的模塊名列表 | 它會在初始化數(shù)據(jù)庫時默認(rèn)安裝給定的模塊 |
-u 或-update | 逗號分隔的模塊名列表 | 它會在重啟服務(wù)時更新給定的模塊。多在修改了源代碼或從 git 更新了分支時使用 |
--dev | all, reload, qweb, | |
werkzeug, xml | 這會啟用開發(fā)者模式并自動加載功能坷随。 |
激活Odoo開發(fā)者工具
開發(fā)人員在使用Odoo時房铭,應(yīng)當(dāng)知道如何在網(wǎng)頁界面激活開發(fā)者模式,這樣你就可以訪問技術(shù)設(shè)置菜單及開發(fā)者信息温眉。啟動調(diào)試模式會暴露出一些高級配置項(xiàng)及字段缸匪。在Odoo中隱藏這些選項(xiàng)和字段來獲取更佳的易用性,因?yàn)槿粘2粫褂玫剿鼈儭?/p>
如何激活
按照如下步驟來在網(wǎng)頁界面中激活開發(fā)者模式:
- 連接到你的實(shí)例并以 admin 登錄
- 訪問Settings菜單
- 找到Share the love版塊类溢,應(yīng)該是在頁面的右手邊
譯者注:原書中使用企業(yè)版進(jìn)行截圖豪嗽,Alan 將盡量全部使用社區(qū)版本進(jìn)行操作 - 點(diǎn)擊Activate the developer mode鏈接
- 等待用戶界面重載
??其它方式:也可以通過編輯 URL 來激活開發(fā)者模式。在鏈接的#號前豌骏,插入?debug龟梦。例如,如果你的鏈接是http://localhost:8069/web#menu_id=102&action=94窃躲,那么你需要將其修改為http://localhost:8069/web?debug#menu_id=102&action=94计贰。此外,如果你想要使用帶靜態(tài)文件的調(diào)試模式蒂窒,則將 URL修改為http://localhost:8069/web?debug=assets#menu_id=102&action=94
譯者注:加(with assets)的模式會將靜態(tài)文件(css, js)分拆每一個具體文件躁倒,這將有助于調(diào)試,但相對于合并的靜態(tài)文件而言會損失一些加載速度
通過如下其中一種方式可退出開發(fā)者模式:
- 編輯URL并刪除該字符串
- 在開發(fā)者模式激活時使用Share the love版塊中的Deactivate the developer mode鏈接
很多開發(fā)者使用瀏覽器插件來切換調(diào)試者模式洒琢。通過使用插件秧秉,你可以無需訪問settings菜單快速地切換調(diào)試模板。這些插件可在Firefox和Chrome瀏覽器中使用衰抑。參見如下截圖象迎,它有助于你在Chrome商店中找到該插件:
運(yùn)行原理
開發(fā)者模式中,會發(fā)生兩件事情:
- 鼠標(biāo)在表單視圖的字段上或列表視圖的列名上懸浮時會給出提示信息,提供有關(guān)字段的技術(shù)信息(內(nèi)部名稱砾淌、類型等)啦撮。
- 調(diào)試圖標(biāo)下拉菜單會顯示在右上角用戶菜單旁,給到顯示的模型相關(guān)技術(shù)信息的訪問汪厨,有各種關(guān)聯(lián)的視圖定義赃春、工作流、自定義過濾管理等等劫乱。
開發(fā)模式有一個變體:Developer mode (with assets)织中。這一模式和普通的開發(fā)者模式相似,但除此之外衷戈,發(fā)送到瀏覽器的avaScript 和 CSS沒有做最小化處理狭吼,這表示你瀏覽器的網(wǎng)頁調(diào)試工具可以方便地用于調(diào)試JavaScript代碼(更多內(nèi)容請見第十五章 CMS網(wǎng)站開發(fā))。
??注意脱惰!
使用非開發(fā)者模式及開發(fā)者模式來測試你的插件,因JavaScript庫的非最小化版本會隱藏最小化版本中傷你至深的 bug窿春。
從源碼更新Odoo
在第一部分中拉一,我們看到了如何使用git倉庫從源碼安裝Odoo。這一設(shè)置的主要好處是可以使用git更新源碼獲取最新的 bug 修復(fù)旧乞。
準(zhǔn)備工作
停止任意當(dāng)前需更新源代碼的運(yùn)行中Odoo實(shí)例蔚润,然后對所有你關(guān)心的數(shù)據(jù)庫做備份,以免更新出現(xiàn)問題尺栖。顯然這是你對生產(chǎn)數(shù)據(jù)庫所需做的事情嫡纠。參見本章中的管理Odoo服務(wù)端數(shù)據(jù)庫一節(jié)獲取更新操作指南。
接下來延赌,記錄下你所運(yùn)行源碼的當(dāng)前版本號除盏。這么做最好的方式是使用如下命令創(chuàng)建一個輕量的標(biāo)簽:
$ cd ~/odoo-dev/odoo
$ git checkout 12.0
$ git tag 12.0-before-update-$(date --iso)
如何更新
使用如下代碼來更新Odoo源碼:
$ git pull –-ff-only origin 12.0
這會獲取提交到當(dāng)前分支的最新版源代碼。
運(yùn)行如下代碼更新運(yùn)行這一代碼的實(shí)例:
$ ./odoo-bin -c myodoo.cfg --stop-after-init -u base
??-u是odoo-bin的--update選項(xiàng)的簡寫方式挫以。
如果你沒有在配置文件中設(shè)置數(shù)據(jù)庫者蠕,則需添加-d database_name選項(xiàng)。該命令在運(yùn)行這一版本源代碼的所有實(shí)例上都要執(zhí)行掐松。
如果更新失敗了踱侣,不必慌張,因?yàn)槟阌袀浞荩?/p>
- 仔細(xì)閱讀報錯信息并將其保存到一個文件中大磺,因?yàn)檫@稍后做漏洞報告時會有用抡句。
- 如果你不能確定問題,將服務(wù)和Odoo源代碼恢復(fù)到上一個版本杠愧,我們已知這個本版本可用并在更新源碼版本前使用了標(biāo)簽進(jìn)行設(shè)置待榔。
$ git reset --hard 12.0-before-update-$(date --iso)
- 刪除出問題的數(shù)據(jù)庫并從所做的備份進(jìn)行恢復(fù)(參見本章的管理Odoo服務(wù)端數(shù)據(jù)庫一節(jié)獲取操作指南)。
- 重啟實(shí)例并告知用戶更新延遲了流济。
??注意在現(xiàn)實(shí)生活中究抓,這絕不應(yīng)該發(fā)生在生產(chǎn)數(shù)據(jù)庫上猾担,因?yàn)槟銘?yīng)該使用一個復(fù)制數(shù)據(jù)庫來對升級先進(jìn)行測試、修復(fù)問題刺下,并僅在確保其運(yùn)行沒有問題時在生產(chǎn)服務(wù)器上進(jìn)行升級绑嘹。但是有時還是會中招,所以即便你很確定橘茉,還是要做備份工腋。
運(yùn)行原理
更新源碼要確保使用git checkout來確定我們處于正確的分支上,然后使用git pull獲取最新的代碼畅卓。如果本地做了提交卻沒有在遠(yuǎn)程倉庫中時--ff-only會產(chǎn)生錯誤擅腰。如果發(fā)生了這一錯誤且你想要保留自己的修改,你可以使用git pull(不加--ff-only)來將遠(yuǎn)程的修改與你自己的進(jìn)行合并翁潘。如果不保留趁冈,使用 git reset --hard origin/12.0來強(qiáng)制更新,這會丟失掉本地的修改拜马。
更新命令使用如下選項(xiàng):
- -c:指定配置文件
- --stop-after-init:在更新結(jié)束時停止實(shí)例
- -u base或--update base:請求base模塊的更新
在更新模塊時渗勘,Odoo進(jìn)行如下操作:
- 它更新結(jié)構(gòu)變化了的模塊中所定義的模型數(shù)據(jù)庫結(jié)構(gòu)。對于Odoo穩(wěn)定分支的更新俩莽,應(yīng)該不會有這些變化 旺坠,對你自己的插件或第三方插件上可能會發(fā)生。
- 它更新存儲在模塊數(shù)據(jù)文件中的數(shù)據(jù)庫記錄扮超,尤其是視圖取刃。然后遞歸更新聲明依賴這一模塊的已安裝模塊。
因?yàn)閎ase模塊是所有Odoo模塊的隱式依賴出刷,更新它會觸發(fā)你的實(shí)例中所有已安裝模塊的更新璧疗。要更新所有已安裝模塊,可使用別名 all 來替代 base馁龟。