如何在 Ubuntu 20.04 上安裝 Odoo 14

Odoo 是一套開源商業應用程序。 它包括 CRM、電子商務、庫存、銷售點、項目管理等。 這些應用程序完全集成,並可通過通用 Web 界面訪問。 使用 Odoo,您可以集成您的應用程序並使商業生活更輕鬆。

Oddo 有兩個版本——社區版和企業版。 社區版對所有人免費。

Odoo 的安裝選項很少,例如來自 APT 存儲庫、使用 docker 或在虛擬環境中安裝。

在本教程中,我們將解釋如何 安裝 Odoo 14 CEUbuntu 20.04 在 Python 虛擬環境中。 使用 Let’s Encrypt 證書在 Nginx 上託管 Odoo 作為 SSL 終止代理。

先決條件

  1. 至少 2 GB RAM 的 Ubuntu 20.04 實例
  2. 對於數據庫管理 Odoo 需要 PostgreSQL
  3. 一個非 root 用戶 sudo 特權

步驟 1. 安裝依賴項

首先,更新您的系統。

sudo apt update
sudo apt upgrade

以下命令將安裝所有 Odoo 依賴項。

sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libfreetype6-dev libxml2-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less libjpeg-dev zlib1g-dev libpq-dev libxslt1-dev libldap2-dev libtiff5-dev libjpeg8-dev libopenjp2-7-dev liblcms2-dev libwebp-dev libharfbuzz-dev libfribidi-dev libxcb1-dev

步驟 2. 創建系統用戶

為了運行 Odoo,我們需要創建一個新系統 用戶和組 路徑 /opt/odoo14 下的主目錄需要能夠運行 Odoo 服務。

sudo useradd -m -d /opt/odoo14 -U -r -s /bin/bash odoo14

步驟 3. 安裝和配置 PostgreSQL

首先,使用 apt 安裝 PostgreSQL。

sudo apt install postgresql

一旦PostgreSQL安裝完成,那麼我們需要 創建一個 PostgreSQL 用戶. 請記住,我們將使用與之前創建的系統用戶相同的名稱。 那是oddo14。

sudo su - postgres -c "createuser -s odoo14"

步驟 4. 安裝 wkhtmltopdf

wkhtmltopdf – 是一個開源命令行工具,支持將 HTML 頁面呈現為 PDF 和其他類似格式。

為了能夠在 Odoo 中打印 PDF 格式和報告,需要安裝 wkhtmltopdf 包。

首先,使用 wget 命令下載包。

sudo wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.bionic_amd64.deb

下載完成後,使用 apt 命令安裝 wkhtmltopdf:

sudo apt install ./wkhtmltox_0.12.6-1.bionic_amd64.deb

步驟 5. 安裝和配置 Odoo 14

正如我們在介紹中提到的,我們將從源代碼安裝 Odoo 作為隔離的 Python 虛擬環境。

首先,使用以下命令將用戶更改為 odoo14。

sudo su - odoo14

克隆 Odoo 14 官方源代碼來自 GitHub, 類型:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 14.0 /opt/odoo14/odoo

然後將目錄更改為 /opt/odoo14

cd /opt/odoo14

從那裡,使用以下命令為 Odoo 創建一個新的 Python 虛擬環境。

python3 -m venv odoo-venv

啟用 虛擬環境。

source odoo-venv/bin/activate

激活虛擬環境後,使用 pip3 安裝所有必需的 Python 模塊。

(odoo-venv) $ pip3 install wheel

並安裝

(odoo-venv) $ pip3 install -r odoo/requirements.txt

這可能需要一些時間,完成後,使用以下命令停用環境。

(odoo-venv) $ deactivate

在 /opt/odoo14 路徑中創建一個新目錄,其中將包含我們將包含在配置中的第 3 方插件。

mkdir /opt/odoo14/odoo-custom-addons

我們將此目錄添加到 addons_path 參數。 此參數將定義 Odoo 將在其中搜索模塊的目錄列表。

接下來,退出 odoo 用戶,並切換回您的 sudo 用戶。

exit

創建配置文件:

sudo nano /etc/odoo14.conf

並在文件中添加以下內容:

[options]
; This is the password that allows database operations:
admin_passwd = put_your_secure_password
db_host = False
db_port = False
db_user = odoo14
db_password = False
addons_path = /opt/odoo14/odoo/addons,/opt/odoo14/odoo-custom-addons

步驟 6. 創建 Systemd 單元文件

創建一個 服務單元文件 在目錄 /etc/systemd/system/ 中調用 odoo14.service。

sudo nano /etc/systemd/system/odoo14.service

並通過以下配置:

[Unit]
Description=Odoo14
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo14
PermissionsStartOnly=true
User=odoo14
Group=odoo14

ExecStart=/opt/odoo14/odoo-venv/bin/python3 /opt/odoo14/odoo/odoo-bin -c /etc/odoo14.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

告訴 systemd 已經創建了一個新的單元文件。

sudo systemctl daemon-reload

並使用以下命令啟動 Odoo 服務並使其在啟動時啟動:

sudo systemctl enable --now odoo14

輸出:

Created symlink /etc/systemd/system/multi-user.target.wants/odoo14.service → /etc/systemd/system/odoo14.service.

驗證服務狀態:

sudo systemctl status odoo14

顯示 Odoo 服務已啟動並正在運行的輸出:

● odoo14.service - Odoo14
Loaded: loaded (/etc/systemd/system/odoo14.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-07-22 00:42:45 UTC; 48s ago
Main PID: 149632 (python3)
Tasks: 4 (limit: 1073)
Memory: 63.7M
CGroup: /system.slice/odoo14.service
└─149632 /opt/odoo14/odoo-venv/bin/python3 /opt/odoo14/odoo/odoo-bin -c /etc/odoo14.conf


Jul 22 00:42:45 li1129-224 systemd[1]: Started Odoo14.
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,927 149632 INFO ? odoo: Odoo version 14.0
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: Using configuration file at /etc/odoo14.conf
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: addons paths: ['/opt/odoo14/odoo/odoo/addons', '/opt/odoo14/.local/share/Odoo/addons/14.0', '/opt/odoo14/odoo/addons', '/opt/odoo14/odoo-custom-addons>
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: database: odoo14@default:default
Jul 22 00:42:46 li1129-224 odoo14[149632]: 2021-07-22 00:42:46,525 149632 INFO ? odoo.service.server: HTTP service (werkzeug) running on linoxide:8069

要查看 Odoo 服務記錄的消息,請運行:

sudo journalctl -u odoo14

輸出:

-- Logs begin at Tue 2021-07-13 12:50:08 UTC, end at Thu 2021-07-22 00:45:23 UTC. --
Jul 22 00:42:45 li1129-224 systemd[1]: Started Odoo14.
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,927 149632 INFO ? odoo: Odoo>
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: Usin>
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: addo>
Jul 22 00:42:45 li1129-224 odoo14[149632]: 2021-07-22 00:42:45,932 149632 INFO ? odoo: data>
Jul 22 00:42:46 li1129-224 odoo14[149632]: 2021-07-22 00:42:46,210 149632 INFO ? odoo.addon>
Jul 22 00:42:46 li1129-224 odoo14[149632]: 2021-07-22 00:42:46,525 149632 INFO ? odoo.servi>

打開瀏覽器並輸入: https://<your_domain_or_IP_address>:8069

Odoo14 登錄

主密碼 您之前在配置路徑 /etc/odoo14.conf 中定義的,並輸入其他憑據以創建數據庫。

Odoo14 儀表板

成功創建數據庫後,將重定向到 Odoo14 儀表板。

步驟 7. 將 Nginx 配置為 SSL 終止代理(可選)

如果您想讓 Odoo 對您的環境更加安全,我們可以設置 Nginx 作為 SSL 終止代理 它將通過 HTTPS 提供流量,而不是默認的 Odoo 網絡通過 HTTP 提供流量。

SSL 終止代理提供了一個代理服務器來處理 SSL 加密。 在我們的例子中,終止代理是 Nginx,他將處理和解密傳入的 TLS 連接 (HTTPS),並將未加密的請求傳遞給 Odoo 服務。

先決條件

  1. 指向您的公共服務器 IP 的域名
    對於本文,我們將使用 example.conf
  2. 安裝了 Nginx
  3. 讓我們加密 SSL 證書

請務必檢查您是否正確設置了 Let’s Encrypt 或其他一些 SSL 證書。

安裝讓我們加密 SSL 證書我們首先需要安裝certbot:

# apt install certbot
# apt install python3-certbot-nginx

接下來,運行以下命令 example.com 域名並填寫所需信息:

# certbot --nginx -d example.com -d www.example.com

輸出:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):

1. 創建或編輯域服務器塊

sudo nano /etc/nginx/sites-enabled/example.com.conf

並通過以下配置:

# 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;
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;

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 parameters
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;

# log files
access_log /var/log/nginx/odoo.access.log;

error_log /var/log/nginx/odoo.error.log;

# Handle longpoll requests
location /longpolling {
proxy_pass https://odoochat;
}

# Handle / requests
location / {
proxy_redirect off;
proxy_pass https://odoo;
}

# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass https://odoo;
}

# Gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}

注意:不要忘記更換 example.com 與您的 Odoo 域並設置 SSL 證書文件的正確路徑。

2. 重啟 Nginx 服務

sudo systemctl restart nginx

重啟 Nginx 服務後,我們需要告訴 Odoo 使用這個配置的代理。

3. 打開配置文件。

sudo nano /etc/odoo14.conf

4. 並添加以下行。

proxy_mode = True

5. 最後,重啟 Odoo 服務。

sudo systemctl restart odoo14

如果您按照所有步驟操作,將能夠通過 https:// 訪問您的 Odoo Web 實例example。和

結論

在本教程中,我們學習瞭如何在 Ubuntu 20.04 上安裝和配置 Odoo 14。 您可以開始發現開源 ERP Odoo 的強大之處,也可以嘗試研究 ADempiere,這是另一種類似於 Odoo 的開源 ERP 解決方案。