网站搜索

在 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 发布说明

先决条件

在您可以继续之前,您需要满足以下要求。

系统要求:
  1. 操作系统:已安装 Rocky、Alma、CentOS Stream 或 RHEL 8/9
  2. CPU:至少双核 CPU(如果是四核则更好)。
  3. 内存:最少2GB内存(如果能有4GB或更高更好)。
  4. 磁盘:至少 20GB 的可用磁盘空间用于存储 Odoo 数据。
软件需求:
  1. Python:Python 3.10 或更高版本。
  2. PostgreSQL:PostgreSQL 12 或以上。
  3. Node.js 和 npm:需要 Node.js 12.x 或更高版本,以及用于资源管理的 npm。
  4. Wkhtmltopdf:打印 PDF 报告需要特定版本的 wkhtmltopdf(0.12.5 或 0.12.6)。
  5. 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.conf

odoo.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 丰富的模块、灵活且强大的自定义功能,它成为了一个非常适合自动化业务流程的解决方案。