在 Rocky、Alma、CentOS、RHEL 9|8 上安装 Odoo ERP 17
在撰写本文时,Odoo ERP 17 是最新版本的出色开源企业资源计划(ERP)软件,旨在帮助您的业务流程保持高效顺畅。Odoo ERP 为您提供一个集成应用的平台,解决所有业务问题,包括人力资源、客户关系管理、库存管理、财务、制造、销售到电子商务。在 Odoo ERP 中,所有这些集成都通过模块化方式分布,这让您可以从少量模块开始,并根据需要集成更多模块。这使得 Odoo 成为一个高度灵活且可扩展的解决方案。
要在 Rocky Linux、AlmaLinux、CentOS 或 RHEL 9/8 上安装 Odoo ERP 17,您需要遵循几个步骤:
- 安装运行 Odoo 17 所需的依赖项
- 创建 Python 虚拟环境
- 在 Rocky/AlmaLinux/RHEL 9|8 上安装 Odoo 17
- Odoo 和网络服务器的配置
- 访问和使用 Odoo
有关 Odoo ERP 17 的功能,请参阅 Odoo 17 发布说明
先决条件
在您可以继续之前,您需要满足以下要求。
系统要求:
- 操作系统:已安装 Rocky、Alma、CentOS Stream 或 RHEL 8/9
- CPU:至少双核 CPU(如果是四核则更好)。
- 内存:最少2GB内存(如果能有4GB或更高更好)。
- 磁盘:至少 20GB 的可用磁盘空间用于存储 Odoo 数据。
软件需求:
- Python:Python 3.10 或更高版本。
- PostgreSQL:PostgreSQL 12 或以上。
- Node.js 和 npm:需要 Node.js 12.x 或更高版本,以及用于资源管理的 npm。
- Wkhtmltopdf:打印 PDF 报告需要特定版本的 wkhtmltopdf(0.12.5 或 0.12.6)。
- Nginx 或 Apache:用于反向代理(一般更推荐 Nginx)。
让我们开始安装 Odoo ERP。
步骤 1 – 安装构建依赖项
在进行任何安装之前,请更新您的系统:
sudo dnf -y update如果有内核更新,请考虑在继续操作之前重启系统:
sudo reboot接下来在你的系统中安装开发工具。
sudo dnf groupinstall -y "Development Tools"安装在从源代码构建 Odoo 时可能需要的额外库:
sudo dnf install -y vim git gcc bzip2-devel redhat-rpm-config libxslt-devel openldap-devel libjpeg-devel freetype-devel第2步 – 安装 Python 3.11 和 Node.js
我们需要安装 Python 3.10 及以上版本。在本文中,我们将使用 Python 3.11。
sudo dnf install python3.11 python3.11-devel python3.11-pip通过检查版本确认是否安装成功。
$ python3.11 --version
Python 3.11.9我们也来安装 Node.js。没有特定的版本,我们将使用 Node.js v18。
sudo dnf module reset nodejs -y
sudo dnf module install nodejs:18 -y通过检查 Node.js 版本号进行验证。
$ node --version
v18.20.2使用 npm 安装 rtlcss 节点模块:
sudo npm install -g rtlcss还要安装 Less 和 Less 插件 Clean CSS:
sudo npm install -g less less-plugin-clean-css步骤 3 – 安装并配置 PostgreSQL 数据库
需要 PostgreSQL 12 及以上版本。我们可以安装 OS APPStream 仓库中提供的 PostgreSQL 16。重置当前的 PostgreSQL 模块。
sudo dnf module -y disable postgresql启用 PostgreSQL 16 模块。
sudo dnf install -y @postgresql:16还需要安装postgresql-devel软件包。
sudo dnf install -y postgresql-devel初始化数据库服务器。
sudo postgresql-setup initdb启动并启用数据库服务。
sudo systemctl enable --now postgresql最后创建 odoo 数据库用户。当系统提示时,提供该用户的密码。
sudo su - postgres -c "createuser -s odoo"要创建一个带密码的用户,请运行:
sudo -u postgres createuser odoo -U postgres -dP对于远程 PostgreSQL 数据库服务器,您需要在数据库服务器上启用远程连接,以便 Odoo 可以连接它。
步骤 4 – 安装 wkhtmltopdf
Wkhtmltopdf 是一个开源的命令行工具,Odoo 使用它通过强大的 Webkit 渲染引擎将 HTML 渲染为 PDF 以及其他图像格式。这对于生成发票、报表和其他可打印文档是必需的。
下载并安装 wkhtmltopdf RPM 软件包。
- 基于 RHEL 9 的系统
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux9.x86_64.rpm- 基于 RHEL 8 的系统
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm
sudo dnf install -y ./wkhtmltox-0.12.6.1-2.almalinux8.x86_64.rpm
验证安装:
$ wkhtmltopdf --version
wkhtmltopdf 0.12.6.1 (with patched qt)步骤5 – 设置Odoo Python环境
创建一个名为 odoo 的用户来运行 Odoo 服务。
sudo useradd -m -U -r -d /opt/odoo -s /bin/bash odoo安装 virtualenv:
sudo pip3.11 install virtualenv切换到已创建的 odoo 用户账户。
sudo su - odoo在本地克隆 Odoo 的 Github 仓库。
git clone --depth 1 --branch 17.0 --single-branch https://github.com/odoo/odoo.git使用 virtualenv 命令为 Odoo ERP 创建 Python 虚拟环境。
virtualenv odoo-venv激活已创建的虚拟环境。
source odoo-venv/bin/activate激活后升级 pip。
pip3.11 install --upgrade pip在环境中安装 wheel Python 包
pip3.11 install wheel安装 Odoo 17 的 Python 依赖
pip3.11 install -r odoo/requirements.txt要列出虚拟环境中安装的所有 Python 软件包,请运行以下命令:
pip3.11 list创建一个用于存放所有第三方插件的目录。
mkdir odoo/custom-addons退出虚拟环境。
exit步骤6 – 配置Odoo ERP
将示例 Odoo 配置文件复制到系统的 /etc 目录。
sudo cp /opt/odoo/odoo/debian/odoo.conf /etc/odoo.confodoo.conf 文件包含 Odoo 正常运行所需的关键配置。打开该文件进行编辑。
# Open with vim
sudo vim /etc/odoo.conf
# Open with nano
sudo nano /etc/odoo.conf将设置调整为如下所示。
[options]
; This is the password that allows database operations:
admin_passwd = Str0ngAdminPasw0rd
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo/odoo/addons, /opt/odoo/odoo/custom-addons
default_productivity_apps = True
xmlrpc_port = 8069对于远程 PostgreSQL 服务器,设置:
- db_host:PostgreSQL 数据库服务器 IP 地址
- db_password:远程数据库上创建用户的密码
- db_user:远程数据库用户已创建。
为文件授予适当的权限:
sudo chown odoo:odoo /etc/odoo.conf
sudo chmod 640 /etc/odoo.conf创建 Odoo systemd 服务。
sudo tee /etc/systemd/system/odoo.service<<EOF
[Unit]
Description=Odoo ERP System
Documentation=http://www.odoo.com
Requires=postgresql.service
After=network.target postgresql.service
[Service]
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin \
--config=/etc/odoo.conf \
--addons-path=/opt/odoo/odoo/addons/ \
--logfile /var/log/odoo/odoo-server.log
StandardOutput=journal+console
KillMode=mixed
[Install]
WantedBy=multi-user.target
EOF创建日志目录。
sudo mkdir /var/log/odoo/
sudo chown -R odoo:odoo /var/log/odoo/启动并启用 odoo 服务。
sudo systemctl daemon-reload
sudo systemctl enable --now odoo.service检查服务状态是否正常运行。
$ systemctl status odoo
● odoo.service - Odoo ERP System
Loaded: loaded (/etc/systemd/system/odoo.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-07-18 11:34:34 UTC; 21s ago
Docs: http://www.odoo.com
Main PID: 70809 (python3.11)
Tasks: 4 (limit: 48750)
Memory: 88.2M
CGroup: /system.slice/odoo.service
└─70809 /opt/odoo/odoo-venv/bin/python3.11 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log
Jul 18 11:34:34 rocky8.cloudspinx.com systemd[1]: Started Odoo ERP System.步骤 7 – 配置 firewalld
服务正在监听端口 8069。
$ ss -tunelp | grep 8069
tcp LISTEN 0 128 0.0.0.0:8069 0.0.0.0:* users:(("python3.11",pid=70809,fd=4)) uid:989 ino:115353 sk:5 <->如果你有 firewalld,请允许 8069 端口
sudo firewall-cmd --add-port=8069/tcp --permanent
sudo firewall-cmd --reload您可以通过 http://serverip:8069 访问 Odoo 网络控制台并完成设置。
输入在 odoo.conf 中设置的 admin_passwd 值作为管理员密码。指定要创建的数据库名称,例如 odoo17。然后通过提供电子邮件地址和密码创建第一个管理员用户。可选择设置电话号码、语言和国家。
完成设置后,使用创建的管理员账户和密码登录。
您将进入 Odoo 仪表板以启用模块等功能。
步骤 8 – 配置 Nginx 代理
我们可以使用 Nginx 将请求代理到 Odoo ERP。安装 nginx 软件包。
sudo dnf -y install nginx启用服务以便在系统启动时自动启动。
sudo systemctl enable nginx为 Odoo 服务创建 Nginx 配置文件。
sudo vim /etc/nginx/conf.d/odoo.conf粘贴并编辑以下内容。您必须将 odoo.example.com 替换为您实际的域名。
# Odoo Upstreams
upstream odooserver {
server 127.0.0.1:8069;
}
server {
listen 80;
server_name odoo.example.com;
access_log /var/log/nginx/odoo_access.log;
error_log /var/log/nginx/odoo_error.log;
# Proxy settings
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;
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;
# Request for root domain
location / {
proxy_redirect off;
proxy_pass http://odooserver;
}
# Cache static files
location ~* /web/static/ {
proxy_cache_valid 200 90m;
proxy_buffering on;
expires 864000;
proxy_pass http://odooserver;
}
# Gzip Compression
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;
}验证 nginx 配置。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful如果一切正常,请重启服务。
sudo systemctl restart nginx在 http://yourdomain.com 访问 Odoo 网络仪表板
步骤 9 – 使用 Let’s Encrypt SSL
对于公共域名上的服务器,您可以使用免费的 Let’s Encrypt SSL。
安装 certbot 及其 Nginx 插件。
sudo dnf install epel-release
sudo dnf install certbot python3-certbot-nginx -y请求 Let’s Encrypt SSL。
DOMAIN=odoo.example.com #replace with your actual domain
sudo certbot --nginx -d $DOMAIN --agree-tos如果你不想提供电子邮件地址,请使用 L
sudo certbot --nginx -d $DOMAIN --agree-tos --register-unsafely-without-email示例输出:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for odoo.example.com
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/odoo.example.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/odoo.example.com/privkey.pem
This certificate expires on 2024-10-16.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for odoo.cloudlabske.com to /etc/nginx/conf.d/odoo.conf
Congratulations! You have successfully enabled HTTPS on https://odoo.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -它将自动配置 /etc/nginx/conf.d/odoo.conf 以包含 SSL。
cat /etc/nginx/conf.d/odoo.conf结论
我们已经完成了关于在 Rocky、AlmaLinux、CentOS 和 RHEL 9 Linux 系统上安装 Odoo 的教程。我们首先准备了服务器并安装了必要的依赖,然后继续安装和配置 Odoo ERP。凭借 Odoo 丰富的模块、灵活且强大的自定义功能,它成为了一个非常适合自动化业务流程的解决方案。


