在虛擬機上odoo14安裝教程
本系列背景介紹
Odoo 是一個基於Python語言構建的開源軟體,面向企業應用的CRM,ERP等領域,其目標是對標SAP,Oracle等大型軟體提供商,但卻通過僅僅一個平台滿足企業所有管理的業務需求。
本系列文章針對Odoo 14版,從系統安裝,開發環境配置,代碼結構,主要功能升級,源碼賞析,對Odoo的關鍵擴展等角度,預先給大家介紹即將在2020年發佈的這一最新版本。
本篇概述
Odoo14的安裝和歷史版本差不多,同樣也包括安裝文件、源碼、Docker等多種形式,本文則通過源碼方式在Ubuntu 18.04上安裝Odoo 14。
Postgresql數據庫準備
在PostgreSQL官網,或者通過apt命令安裝數據庫。
https://www.postgresql.org/
https://www.postgresql.org/download/linux/ubuntu/
sudo apt update
sudo apt install postgresql postgresql-contrib
由於是開發環境,使用當前用戶,以及使用postgresql的createdb命令增加數據庫:
已建立odoo14
通過源碼安裝
由於Anodoo在Odoo上進行源碼級別的擴展,所以本文優先演示源碼安裝模式。
在http://nightly.odoo.com/ 下載和準備Odoo14的原始碼檔案,利用tar或unzip命令解壓縮原始檔案,解壓縮到~/odoo14目錄。本案例中進一步更名為形如~/odoo14/odoo的目錄。
創建虛擬環境
由於在開發環境,有多個odoo或者python的環境,建議創建Python的虛擬環境。通過在~/odoo14目錄下運行python3 -m venv python3創建虛擬環境,並通過
source python3/bin/activate啟動,注意完成後退出虛擬環境的命令是deactivate
安裝依賴
透過以下命令安裝所有的依賴
sudo apt install libpq-dev libldap2-dev libsasl2-dev libxslt1-devsudo apt install python3-setuptools python3-wheelsudo apt-get install libsasl2-dev python-dev libldap2-dev libssl-dev python3-pypdf2pip3 install wheelpip3 install -r odoo/requirements.txtsudo apt install wkhtmltox_0.12.5-1.bionic_amd64.deb
創建配置文件
在~odoo14/下創建odoo.conf文件,內容如下:
[options]db_host=Falsedb_port=Falsedb_name=odoo14db_user=odoodevdb_password=Falselogfile=/var/log/odoo/odoo14.logaddons_path=/home/lionger/odoo14/odoo/addons
啟動Odoo 14
python3 odoo /odoo.py -c odoo.conf -i base
注意,在啟動了虛擬環境的基礎上,透過在~odoo14/目錄下運行python3 odoo /odoo.py -c odoo.conf -i base。其中-i base 是第一次啟動時,用來初始化資料庫的。第二次啟動則可以不用。
預覽Odoo 14的功能
通過以上啟動好Odoo 14後,首次預設沒有安裝Module,啟動速度很快。啟動完成後,通過訪問http://localhost:8070訪問,首次直接點擊進入系統後,即可看到如下界面。
結語
從下載源碼,創建Python虛擬環境,安裝依賴,創建配置文件到啟動,簡單幾個步驟,就可以快速安裝史上最強開源CRM、ERP並試用一把,建議大家盡快試試。
以上所述是小編給大家介紹的Ubuntu18.04通過源碼安裝Odoo14的教程,希望對大家有所幫助!

擴展閱讀:
在CentOS8上安裝Odoo13
Odoo 是世界上最流行的多功能商業軟體。它提供了一系列商業應用程式,包括 CRM,網站,電子商務,帳單,帳戶,工業製造,倉庫,專案管理,庫存管理,等等,所有的東西都無縫整合。
這個指南講解了如何在 CentOS 8 上一個 Python 虛擬機環境中從原始碼安裝 Odoo 13。我們將會從 Github 上編譯 Odoo 原始碼並且配置 Nginx 作為反向代理伺服器。
一、前提條件
你需要以 root 或者其他有 sudo 權限的使用者身分登入,以便完成整個安裝過程。
二、安裝依賴
安裝 Python 3,Git,以及其他從原始碼編譯 Odoo 所需的函式庫和工具:sudo dnf install python3 python3-devel git gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel
三、創建一個系統用戶
創建一個系統用戶和用戶組,以/opt/odoo為主目錄,用來運行 Odoo 服務:sudo useradd -m -U -r -d /opt/odoo13 -s /bin/bash odoo13
你可以使用其他你想要的名字作為用戶名稱,只要能夠保證使用這個名字可以建立一個 PostgreSQL 用戶。
四、安裝和配置 PostgreSQL
我們將會從標準的 CentOS 8 源倉庫中安裝 PostgreSQL 10。sudo dnf install @postgresql:10
一旦安裝完成,建立一個 PostgreSQL 資料庫:sudo postgresql-setup initdb
啟用並且啟動 PostGreSQL 服務:sudo systemctl enable --now postgresql
創建一個 ProtgreSQL 用戶,使用和前面創建的系統用戶名字一樣的名字作為數據庫用戶名。在我們的例子中,這個名字是odoo13:sudo su - postgres -c "createuser -s odoo13"
五、安裝 Wkhtmltopdf
Wkhtmltopdf軟體套件提供了一系列開源命令列工具,可以將 HTML 渲染成 PDF,以及各種圖片格式。想要列印 PDF 報告,你將需要Wkhtmltopdf工具。Odoo 推薦的版本是0.12.5,這個版本不在 CentOS 8 官方軟體源倉庫中。
從 github 安裝它的rpm軟體包:sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm
六、安裝和配置 Odoo 13
在開始安裝之前,切換用戶至odoo13:sudo su - odoo13
開始從 Odoo 的 Github 源倉庫中克隆 Odoo 13 原始碼:git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo
切換到/opt/odoo13目錄,並且為安裝 Odoo 建立一個新的 Python 虛擬環境:cd /opt/odoo13
python3 -m venv venv
使用source命令去激活這個環境:source venv/bin/activate
安裝必要的 Python 模組:pip3 install -r odoo/requirements.txt如果你在安裝過程中遇見任何編譯錯誤,請確保你安裝了所有的依賴軟體套件。具體依賴套件參考`Installing Dependencies`
一旦安裝完成,解除這個環境:deactivate
為自定義組件創建一個新的目錄:mkdir /opt/odoo13/odoo-custom-addons
切換回 sudo 用戶exit
下一步,使用文字編輯器打開並且創建下面的配置文件:sudo nano /etc/odoo13.conf[options]
; 這是允許資料庫操作的密碼:
admin_passwd = superadmin_passwd
db_host = False
db_port = False
db_user = odoo13
db_password = False
addons_path = /opt/odoo13/odoo/addons, /opt/odoo13/odoo-custom-addons
保存並且關閉檔案。不要忘記將`superadmin_passwd`改成更安全的密碼。
七、創建一個 Systemd Unit 檔案
打開你的文本編輯器,並且在/etc/systemd/system/目錄下創建一個名為odoo13.service的檔案:sudo nano /etc/systemd/system/odoo13.service
將下面的內容粘貼到文件中:[Unit]
Description=Odoo13
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo13
PermissionsStartOnly=true
User=odoo13
Group=odoo13
ExecStart=/opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf
StandardOutput=journal+console
[安裝]
WantedBy=multi-user.target
保存文件並且關閉編輯器。
通知 Systemd 有一個新的 unit 檔案:sudo systemctl daemon-reload
通過執行下面命令啟用並且啟動 Odoo 服務:sudo systemctl enable --now odoo13
你可以通過下面的命令檢查服務狀態:sudo systemctl status odoo13● odoo13.service - Odoo13
Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2019-12-11 20:04:52 UTC; 5s ago
Main PID: 28539 (python3)
任務:4(限制:11524)
記憶體:94.6M
CGroup: /system.slice/odoo13.service
└─28539 /opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf
想要查看 Odoo 服務日誌,使用下面的命令:sudo journalctl -u odoo13
八、測試安裝
打開你的瀏覽器,輸入:http://
假設所有安裝完成,你將會看到下面這樣的螢幕:
如果你無法訪問這個頁面,那很可能是你的防火牆阻止了端口8069。
使用下面的命令打開必要的端口:sudo firewall-cmd --permanent --zone=public --add-port=8069/tcp
sudo firewall-cmd --reload
九、將 Nginx 配置成 SSL 代理伺服器
預設的 Odoo 網站伺服器透過 HTTP 服務。想要使 Odoo 部署更安全,我們將會配置 Nginx 作為 SSL 代理伺服器,使網站伺服器透過 HTTPS 進行服務。
SSL 代理伺服器是一個用來處理 SSL 加密解密的代理伺服器。這意味著,Nginx 將會處理並且解密進來的 TLS 連接(HTTPS),並且傳遞未被加密的請求到內部服務(Odoo)。在 Nginx 和 Odoo 之間的流量將不會被加密。
使用一個反向代理伺服器有很多好處,比如負載均衡,SSL,快取,壓縮,靜態內容服務,等等。
確保你滿足下面的前提條件,再繼續下一步的安裝配置:一個指向你的伺服器的公網 IP 的域名,我們使用example.com。
安裝 Nginx
域名的 SSL 證書。你可以安裝一個免費的 Encrypt SSL 證書。
打開你的文本編輯器,創建或者編輯域名服務器配置塊:sudo nano /etc/nginx/conf.d/example.com
下面的配置將會建立 SSL,HTTP 轉向 HTTPS,WWW 轉向 non-www,快取靜態檔案,並且開啟 GZip 壓縮。# Odoo servers
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
# HTTP -> HTTPS
server {
listen 80;
server_name www.example.com example.com;
include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;
}
# WWW -> NON WWW
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Proxy headers
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
# SSL 參數
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
# 日誌檔案
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# 處理長輪詢請求
location /longpolling {
proxy_pass http://odoochat;
}
# 處理 / 請求
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
# 快取靜態檔案
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odoo;
}
# Gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}不要忘記使用你自己的 Odoo 域名替換 example.com並且設置正確的 SSL 證書地址。證書中的配置段,請參考:https://linuxize.com/post/secure-nginx-with-let-s-encrypt-on-centos-7/
一旦你完成了,重啟 Nginx 服務:sudo systemctl restart nginx
下一步,我們需要告訴 Odoo 使用代理伺服器。想要這麼做,打開設定檔,並且添加下面的內容: /etc/odoo13.conf
重啟 Odoo 服務並且使修改生效:sudo systemctl restart odoo13
此時,反向代理伺服器配置好了,你可以透過https://example.com來訪問 Odoo 了。
十、改變監聽端口
這一步是可選的,但是它是一個很好的實踐操作。
默認情況下,Odoo 服務監聽所有網路介面的8069埠。想要禁止對 Odoo 的直接訪問,你可以封鎖8069埠,並且強制 Odoo 只監聽本地監控。
我們將會配置 Odoo 僅僅監聽 127.0.0.1。打開配置文件,添加下面的內容到文件最後面: /etc/odoo13.confxmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1
保存配置文件,並且重啟 Odoo 伺服器,使修改生效:sudo systemctl restart odoo13
十一、啟用多進程
默認情況下,Odoo 工作在多執行緒模式。對於產品級別的部署,我們推薦修改成多進程伺服器,提升穩定性,並且充分利用系統資源。
想要啟用多進程,你需要編輯 Odoo 設定檔,並且設定一個非 0 的工作進程數字。工作進程數字,基於 系統中的 CPU 核心數字和可用的 RAM 記憶體來計算。
通過 Odoo 官方文檔計算工作進程的數量以及需要的 RAM 記憶體大小,你可以使用下面的公式:
工作進程數量計算:工作進程最大數量理論值 = (system_cpus * 2) + 1
1 個工作進程可以服務 約等於 6 個並行客戶。
Cron 進程也需要 CPU
RAM 記憶體大小計算我們考慮 20% 的請求是重請求,並且 80% 的請求是輕量級請求。重量級請求使用將近 1GB RAM,而輕量級請求使用將近 150MB RAM。
Required RAM = number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )
如果你不知道你的系統有多少 CPU,你可以使用下面的grep命令:grep -c ^processor /proc/cpuinfo
比方說,你有一個系統,擁有 4 核心 CPU,8GB RAM 記憶體,和 30 個並行 Odoo 用戶。30 users / 6 = **5**(5 是所需要的理論工作進程數量)
(4 * 2) + 1 = **9**(9 是理論的最大工作進程數量)
基於上面的計算,你可以使用 5 個進程+1 個進程(Cron 進程)總共 6 個進程。
基於工作進程,計算 RAM 記憶體:RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM
計算結果顯示,Odoo 安裝將會需要大概 2GB 記憶體。
想要切換到多進程模式,打開配置文件,並且添加計算值: /etc/odoo13.conflimit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 5
重啟 Odoo 服務,使修改生效:sudo systemctl restart odoo13
餘下的系統資源將會被分配給系統其他服務使用。在這篇指南中,我們將 Odoo,PostgreSQL 和 Nginx 安裝在同一個伺服器上。依賴於你的設置,你的伺服器上還有其他的服務。
十二、總結
這篇指南帶你瀏覽了如何在 CentOS 8 上的 Python 虛擬環境中安裝 Odoo 13,並使用 Nginx 作為反向代理伺服器。我們展示了如何在生產環境中啟用多進程以及優化 Odoo。
