如何在 Ubuntu 22.04 上安装 Odoo 16 ERP 软件
本教程适用于这些操作系统版本
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 15.04(Vivid Vervet)
在此页
- 先决条件
- 安装依赖项
- 安装 Node.js
- 安装 Wkhtmltopdf 应用程序
- 安装 PostgreSQL 数据库服务器
- 正在下载 Odoo 16
- 为 Odoo 安装 Python 依赖项
- 创建 Odoo 配置
- 将 Odoo 作为系统服务运行
- 使用 Nginx 反向代理运行 Odoo
- 设置 UFW 防火墙
- 迁移数据库并安装 Odoo 16
- 结论
Odoo(以前称为 OpenERP)是一个拥有超过 10,000 个开放的自托管套件 Odoo 是一个免费的开源 ERP 解决方案,适用于多种类型的企业。它提供客户关系管理 (CRM)、销售管道、项目管理、制造、发票、会计、电子商务等。
Odoo 是适合您企业的完整 ERP 解决方案之一。默认自带30个核心模块,提供4500多个社区模块,助力您的多项业务。
在本教程中,我们将在 Ubuntu 22.04 服务器上运行 Odoo 开源 ERP。我们将安装和配置 Odoo 16 的最新稳定版本,为 Odoo 设置 PostgreSQL 数据库,最后设置 Nginx 作为 Odoo 应用程序的反向代理。
先决条件
要开始本教程,您需要满足以下要求:
- Ubuntu 22.04 服务器 - 此示例使用主机名为 odoo-server 的 Ubuntu 服务器。
- 具有 sudo root/管理员权限的非 root 用户 - 或者您也可以使用 root 用户。
- 指向服务器 IP 地址的域名 - 对于生产,您将需要一个用于安装 Odoo 的域名。
安装依赖
要安装 Odoo,您首先需要将一些包依赖项安装到您的 Ubuntu 系统。 Odoo ERP 是一个主要使用 Python 编写的 Web 应用程序,因此您还需要安装一些 Python 包。
在开始安装软件包之前,运行以下 apt 命令来更新和刷新您的软件包索引。
sudo apt update
接下来,通过以下 apt 命令安装 odoo 的包依赖项。本次安装将包含最新版本的Python 3.10、编译Python包的build-essentials,以及odoo需要的一些库。
sudo apt install git wget python3 build-essential libzip-dev python3-dev libxslt1-dev python3-pip libldap2-dev python3-wheel libsasl2-dev python3-venv python3-setuptools node-less libjpeg-dev xfonts-75dpi xfonts-base libxrender1 libpq-dev libffi-dev fontconfig
出现提示时,输入 y 确认并按 ENTER 继续。安装将开始。

安装 Python 和其他依赖项后,下一步是安装将用于生成静态文件的 Node.js,并安装用于生成 PDF 报告的 wkhtmltopdf 包。
安装节点
要安装 Odoo,您必须确保系统上安装了 Node.js。 Node.js 用于为 odoo web 应用程序生成静态文件。在此步骤中,您将从第三方 Nodesource 存储库安装 Node.js 16。
运行以下命令下载并设置 Node.js 16 的 Nodesource 存储库。
sudo curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
此命令将下载并运行安装程序脚本,然后安装程序脚本将自动为 Node.js 设置存储库,添加 GPG 密钥,并自动更新和刷新系统上的包索引。

接下来,运行以下 apt 命令来安装 Node.js 包。出现提示时,输入 y 确认并按 ENTER 继续。
sudo apt install nodejs

安装 Node.js 后,运行以下 npm 命令来安装 rtlcss 包。
odoo 需要 rtlcss 包,尤其是当您使用从右到左的用户界面时特定语言,例如阿拉伯语和希伯来语。
sudo npm install -g rtlcss
安装 Wkhtmltopdf 应用程序
odoo 开源 ERP 需要安装 wkhtmltopdf 包。通过 Qt Webkit 将 HTML 页面呈现为 PDF 和各种图像格式需要此包。 wkhtmltopdf 包将通过 .deb 包手动安装到 Ubuntu 系统。
运行以下命令下载 Wkhtmltopdf 包的 .deb 文件。
cd /tmp
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
通过下面的 dpkg 命令安装 Wkhtmltopdf 包。
sudo dpkg -i wkhtmltox_0.12.6.1-2.jammy_amd64.deb

如果您收到诸如丢失包之类的错误,请通过以下 apt 命令修复它。
sudo apt install -f
Wkhtmltopdf 安装完成后,您可以在/usr/local/bin 目录下验证默认可用的二进制文件Wkhtmltopdf 包。您应该会看到 wkhtmltopdf 和 wkhtmltoimage 这两个程序。
ls /usr/local/bin
现在运行以下命令来验证 PATH 环境变量并确保 /usr/local/bin 目录在二进制 PATH 上可用。否则,Wkhtmltopdf 包将无法正常工作。
echo $PATH
最后,运行以下命令以确保 Wkhtmltopdf 包的二进制路径可用。如果 Wkhtmltopdf 包可用,您应该会收到 Wkhtmltopdf 包的完整路径的输出。
which wkhtmltopdf
which wkhtmltoimage

安装 PostgreSQL 数据库服务器
odoo 开源 ERP 支持 MySQL、SQLite 和 PostgreSQL 等数据库。在此步骤中,您将安装并使用 PostgreSQL 作为 odoo 安装的默认数据库。您还将设置 PostgreSQL 角色并更改 PostgreSQL 配置。
运行以下 apt 命令来安装 PostgreSQL 数据库服务器。当提示确认时,输入 y,然后按 ENTER。
sudo apt install postgresql

安装 PostgreSQL 后,运行以下命令来验证 PostgreSQL 并确保该服务已启用并正在运行。
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
在以下输出中,您可以看到 PostgreSQL 服务已启用并将在系统启动时自动运行。而PostgreSQL的状态是running。

接下来,您将为 odoo 创建一个新角色。运行以下命令登录到 postgres 用户并创建一个名为 odoo 的新角色。
su - postgres
createuser -sdP odoo
输入新角色的密码 odoo 并重复。
现在,通过下面的 psql 命令登录到 PostgreSQL shell。
psql
运行以下查询以验证 PostgreSQL 上的角色列表并确保角色 odoo 可用。
\du
现在输入 \q 退出 PostgreSQL shell。然后,键入 exit 从 postgres 用户注销。

现在,在为 odoo 创建角色后,您现在将为 odoo 角色设置身份验证。
使用以下 nano 编辑器编辑 PostgreSQL 配置 /etc/postgresql/14/main/pg_hba.conf。
sudo nano /etc/postgresql/14/main/pg_hba.conf
将以下配置添加到文件中。这样,您将允许角色 odoo 使用密码身份验证 scram-sha-256 访问 PostgreSQL。
host all odoo 127.0.0.1/32 scram-sha-256
完成后保存文件并退出编辑器。
现在运行以下命令重新启动 PostgreSQL 服务并应用新的更改。
sudo systemctl restart postgresql
最后,以 postgres 用户身份登录并通过 psql 命令登录到 PostgreSQL shell 来验证 odoo 角色,如下所示。
su - postgres
psql -h 127.0.0.1 -U odoo -d postgres
登录后,使用以下查询进行验证。
\conninfo
您现在应该看到您已使用 odoo 角色连接到 PostgreSQL。

至此,odoo 的 PostgreSQL 数据库准备工作就完成了。接下来,您将通过下载源代码并安装 Python 依赖项来启动 odoo 安装。
下载 Odoo 16
对于此演示,您将使用用户 odoo 设置和运行 odoo v16。所以现在你将创建一个新的 Unix 用户 odoo 并下载最新版本的 odoo 16 源代码。
运行以下命令创建一个新用户 odoo。在此示例中,用户 odoo 的默认主目录为 /opt/odoo,默认 shell 为 bash。
sudo adduser --system --group --home=/opt/odoo --shell=/bin/bash odoo
现在将工作目录移动到 /opt/odoo 并通过以下 git 命令下载 odoo 源代码。在此示例中,您将安装 odoo 16。
cd /opt/odoo
git clone https://github.com/odoo/odoo.git --depth 1 --branch 16.0 --single-branch odoo-server
您现在应该在 /opt/odoo 目录中获取新目录 odoo-server。
最后,运行以下命令将 odoo 源代码的所有权更改为用户和组 odoo。
sudo chown -R odoo:odoo /opt/odoo/odoo-server

下载odoo源码后,接下来开始安装odoo的Python包依赖。
为 Odoo 安装 Python 依赖
在此步骤中,您将为 odoo 设置 Python 虚拟环境并通过 pip3 命令安装 Python 依赖项。
将工作目录移动到 /opt/odoo/odoo-server 并通过以下命令创建一个新的 Python 虚拟环境 venv。
cd /opt/odoo/odoo-server
python3 -m venv venv
接下来,通过以下命令激活 venv Python 虚拟环境。
source venv/bin/activate
激活 Python 虚拟环境后,您会看到当前的 shell 变成了 (venv) [email 。

现在运行以下 pip3 命令来安装 Python 包 wheel 并通过文件 requirements.txt 安装 odoo Python 依赖项。
pip3 install wheel
pip3 install -r requirements.txt

Python依赖安装完成后,执行以下命令退出Python venv虚拟环境。
deactivate
您现在已经下载了 odoo 源代码并安装了 Python 依赖项。接下来,您将为 odoo 安装创建一个新的配置和目录。
创建 Odoo 配置
为 Odoo 安装包依赖项后,您接下来将开始为 odoo 创建配置并将 odoo 设置为 systemd 服务。
使用以下 nano 编辑器创建一个新的配置文件 /etc/odoo.conf。
sudo nano /etc/odoo.conf
将以下配置添加到文件中。并确保使用您的详细信息更改 admin_passwd 和详细信息数据库用户和密码。
[options]
; This is the password that allows database operations:
admin_passwd = adminpassodoo
db_host = 127.0.0.1
db_port = 5432
db_user = odoo
db_password = odoopass
addons_path = /opt/odoo/odoo-server/addons
xmlrpc_port = 8069
logfile = /var/log/odoo/odoo-server.log
log_level = debug
保存文件并退出编辑器。
现在,将 odoo 配置文件 /etc/odoo.conf 的所有权更改为系统用户 odoo。
sudo chown odoo:odoo /etc/odoo.conf
接下来,运行以下命令创建一个新目录,用于存储 odoo 的日志。
sudo mkdir /var/log/odoo
然后,将odoo日志目录/var/log/odoo的所有权更改为用户odoo,并将权限更改为755。
sudo chown odoo:odoo /var/log/odoo
sudo chmod 755 /var/log/odoo

Runnnig Odoo 作为系统服务
此时,您可以通过命令行手动运行odoo。为了简化操作,您可以将 odoo 作为 systemd 服务运行。这允许您通过 systemctl 命令管理 odoo。
您现在将创建一个新的 systemd 服务文件并将 odoo 作为 systemd 服务运行。
首先,使用以下 nano 编辑器创建一个新的 systemd 服务文件 /lib/systemd/system/odoo-server.service。
sudo nano /lib/systemd/system/odoo-server.service
将以下配置添加到文件中。
[Unit]
Description=Odoo 16.0 Service
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-server/venv/bin/python3 /opt/odoo/odoo-server/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target
完成后保存文件并退出编辑器。
接下来,通过下面的 systemctl 命令重新加载 systemd 管理器以应用新的服务文件。
sudo systemctl daemon-reload
使用以下命令启动并启用服务 odoo-server。
sudo systemctl start odoo-server
sudo systemctl enable odoo-server

最后,验证 odoo 服务以确保服务正在运行。
sudo systemctl status odoo-server
您应该收到服务 odoo-server 运行的输出。

使用 Nginx 反向代理运行 Odoo
在生产中部署 odoo 的推荐方法是使用反向代理。这允许您仅在本地主机上运行 odoo,并且所有客户端访问都将由反向代理处理。
在此步骤中,您将安装并设置 Nginx Web 服务器作为 odoo Web 应用程序的反向代理。您还将使用 SSL 保护 odoo 安装。因此,在开始配置 Nginx 之前,请确保您的域名指向服务器 IP 地址并生成了 SSL Letsencrypt。
首先,使用以下 nano 编辑器修改 odoo 配置文件 /etc/odoo.conf。
sudo nano /etc/odoo.conf
将以下配置添加到文件中。此配置将运行 odoo 作为将在 127.0.0.1 上运行的后端应用程序。
xmlrpc_interface = 127.0.0.1
proxy_mode = True
完成后保存文件并退出编辑器。
现在运行以下命令重新启动 odoo-server 服务并应用新的更改。
sudo systemctl restart odoo-server
现在验证 odoo-server 服务以确保该服务正在运行。
sudo systemctl status odoo-server

接下来,您将安装和配置 Nginx。
运行以下 apt 命令来安装 Nginx Web 服务器包。出现提示时输入 y,然后按 ENTER 继续并确认安装。
sudo apt install nginx

安装 Nginx 后,使用以下 nano 编辑器创建一个新的 Nginx 服务器块配置 /etc/nginx/sites-available/odoo.conf。
sudo nano /etc/nginx/sites-available/odoo.conf
将以下配置添加到文件中,并确保使用您的设置更改域名和 SSL 证书的路径。
#odoo server
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}
# http -> https
server {
listen 80;
server_name odoo.hwdomain.io;
rewrite ^(.*) https://$host$1 permanent;
}
server {
listen 443 ssl http2;
server_name odoo.hwdomain.io;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
# Add Headers for odoo proxy mode
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/odoo.hwdomain.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.hwdomain.io/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}
# Redirect requests to odoo backend server
location / {
proxy_redirect off;
proxy_pass http://odoo;
}
# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}
完成后保存文件并关闭编辑器。
现在激活新的 Nginx 服务器块配置并验证 Nginx 配置以确保您具有正确的配置。
sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
sudo nginx -t
如果您的配置正确,您将看到输出消息,例如测试成功 - 语法正常。
最后,运行以下 systemctl 命令以重新启动 Nginx 服务并应用新的更改。
sudo systemctl restart nginx
至此,您已经完成了odoo ERP 的Nginx 反向代理的安装和配置。您现在可以通过网络浏览器访问安装。

运行以下命令来验证 Nginx 服务并确保该服务正在运行。
sudo systemctl restart nginx
你应该让 Nginx 服务正在运行。

设置 UFW 防火墙
建议在您的 odoo 安装上启用防火墙。在此步骤中,您将学习如何设置 UFW 防火墙。
默认情况下,通用 Ubuntu 服务器安装了 ufw 包,因此您可以开始配置它。
运行以下命令将 OpenSSH 应用程序添加到 ufw 防火墙。然后,运行并启用 ufw。
sudo ufw allow "OpenSSH"
sudo ufw enable
当提示确认时,输入 y 并按 ENTER 继续。并且 ufw 防火墙服务将被启用并运行。

接下来,运行以下命令以添加 Nginx Full 应用程序。此应用程序配置文件由默认安装的 Nginx 包提供,并将为您的应用程序打开 HTTP 和 HTTPS 端口。
sudo ufw allow "Nginx Full"
最后,验证 ufw 上启用的规则列表。您应该会看到两个应用程序 OpenSSH 和 Nginx Full 已启用。
sudo ufw status

迁移数据库并安装 Odoo 16
打开您的网络浏览器并访问您的 odoo 安装的域名(即:https://odoo.hwdomain.io/)。
首先,您需要为 odoo 迁移数据库并创建一个新的管理员用户。
此处的主密码是您刚刚添加到 /etc/odoo.conf 文件中的 admin_passwd。
输入将自动创建的新数据库名称,并为您的 odoo 安装输入新的管理员用户和密码的详细信息。此外,您还可以选中演示数据复选框以将演示数据添加到您的安装中。
点击创建数据库开始odoo安装。

安装 odoo 后,您将被重定向到 odoo 登录页面。输入您的 odoo 的管理员电子邮件和密码,然后单击登录。

您现在应该获得 odoo 用户仪表板。

结论
恭喜!您现在已经在 Ubuntu 22.04 服务器上安装了 Odoo 开源 ERP。您现在还了解了 PostgreSQL 数据库服务器和配置为反向代理的 Nginx Web 服务器的基本安装。
此时,您已在 Ubuntu 服务器上完全保护 Odoo 安装。您现在可以开始添加一些适合您业务的附加插件/附加组件。