如何在 Rocky Linux 9 上安装 Odoo 17 ERP 软件
Odoo(以前称为 OpenERP)是一个自托管套件,包含 10,000 多个开源应用程序,可满足各种业务需求,包括 CRM、电子商务、会计、股票、项目管理和销售点。 这些应用程序完全集成并通过熟悉的 Web 界面进行访问。
本教程将教我们在 Rocky Linux 9 服务器上安装 Odoo 16 Stack。
先决条件
-
一台 Rocky Linux 9 服务器,至少具有 2GB RAM 来托管 Odoo Stack。
-
第二台 Rocky Linux 9 服务器至少具有 2GB RAM,用于托管 PostgreSQL 数据库。 但是,您可以将数据库安装在与 Odoo 相同的服务器上,但对于生产环境,强烈建议您将其安装在单独的服务器上。 您还可以选择您选择的任何提供商提供的任何托管数据库选项。
-
RAM 要求取决于将使用堆栈的并发用户数量。 有关如何计算系统要求的详细指南可以在 Odoo 的文档中找到。
-
保持您的系统更新。
$sudo dnf update
-
在两台服务器上都具有 sudo 权限的非 root 用户。
-
应安装 Fail2Ban。 此步骤是可选的。 您可以按照我们在 Rocky Linux 上安装 Fail2Ban 的指南进行操作。
-
SELinux 应该被禁用。
-
您的系统需要的软件包很少。
$sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
其中一些软件包可能已经安装在您的系统上。
第 1 步 – 配置防火墙规则
第一步是配置防火墙。 Rocky Linux 使用 Firewalld 防火墙。 对于本教程,我们假设您在两台服务器上都安装了 Firewalld 防火墙。
检查防火墙的状态。
$sudo firewall-cmd --state running
防火墙适用于不同的区域,公共区域是我们将使用的默认区域。 列出防火墙上所有活动的服务和端口。
$sudo firewall-cmd --zone=public --list-all
它应该显示以下输出。
public target: default icmp-block-inversion: no interfaces: eth0 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
在 Odoo 服务器上,我们需要打开端口 22、80、443、6010、5432 和 8069。 22用于SSH,80用于HTTP,443用于HTTPS,6010用于Odoo通信,5432用于PostgreSQL,8069用于Odoo服务器应用程序。
运行以下命令打开 Odoo 服务器上所需的端口。
$sudo firewall-cmd --zone=public --add-port={6010,5432,8069,8072}/tcp $sudo firewall-cmd --zone=public --add-service=http $sudo firewall-cmd --zone=public --add-service=https
检查防火墙的状态。
$sudo firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: cockpit dhcpv6-client http https ssh ports: 6010/tcp 5432/tcp 8069/tcp 8072/tcp protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
在 PostgreSQL 服务器上,我们需要打开端口 22、6010 和 5432。使用以下命令打开它们。
$sudo firewall-cmd --zone=public --add-port={6010,5432}/tcp
使所有更改永久生效并重新加载防火墙以启用更改。
$sudo firewall-cmd --runtime-to-permanent $sudo firewall-cmd --reload
第 2 步 – 分配主机名
您可以使用服务器的 IP 地址或使用其完全限定域名 (FQDN)(如果可用)。 在我们的教程中,我们将使用 FQDN,为此,我们需要在两台服务器上设置主机名。
使用以下命令在 Odoo 服务器上设置主机名。
$sudo hostnamectl set-hostname odoo.yourdomain.com
使用以下命令在 PostgreSQL 服务器上设置主机名。
$sudo hostnamectl set-hostname postgresql.yourdomain.com
在 Odoo 服务器上,打开 /etc/hosts
文件。
$sudo nano /etc/hosts
确保它看起来像下面这样。
127.0.0.1 localhost 127.0.0.1 odoo.yourdomain.com odoo 10.1.1.10 postgresql.yourdomain.com postgresql
在 PostgreSQL 服务器上,打开文件并确保其如下所示。
127.0.0.1 localhost 127.0.0.1 postgresql.yourdomain.com postgresql 10.1.2.10 odoo.yourdomain.com odoo
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
第 3 步 – 安装和配置 PostgreSQL
Rocky Linux 9 默认附带 PostgreSQL 13,并且默认附带 PostgreSQL 15 postgresql:15
模块流。 但是,我们将从其官方存储库安装撰写本教程时可用的最新版本 PostgreSQL 16。
安装 PostgreSQL 存储库 RPM。
$sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
禁用内置 PostgreSQL 模块。
$sudo dnf -qy module disable postgresql
安装 PostgreSQL 16。
$sudo dnf install -y postgresql16-server postgresql16-contrib
初始化数据库。
$sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
启用并启动 PostgreSQL 服务。
$sudo systemctl enable postgresql-16 $sudo systemctl start postgresql-16
检查服务的状态。
$sudo systemctl status postgresql-16
您应该得到类似的输出。
? postgresql-16.service - PostgreSQL 16 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled) Active: active (running) since Sun 2024-04-07 02:22:42 UTC; 3s ago Docs: https://www.postgresql.org/docs/16/static/ Process: 8673 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 8678 (postgres) Tasks: 7 (limit: 10819) Memory: 17.4M CPU: 60ms CGroup: /system.slice/postgresql-16.service ??8678 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/ ??8679 "postgres: logger " ??8680 "postgres: checkpointer " ??8681 "postgres: background writer " ??8683 "postgres: walwriter " ??8684 "postgres: autovacuum launcher " ??8685 "postgres: logical replication launcher " Apr 07 02:22:42 postgresql systemd[1]: Starting PostgreSQL 16 database server... Apr 07 02:22:42 postgresql postgres[8678]: 2024-04-07 02:22:42.370 UTC [8678] LOG: redirecting log output to logging collector process Apr 07 02:22:42 postgresql postgres[8678]: 2024-04-07 02:22:42.370 UTC [8678] HINT: Future log output will appear in directory "log". Apr 07 02:22:42 postgresql systemd[1]: Started PostgreSQL 16 database server.
接下来我们需要创建一个数据库用户 odoo
。 系统将要求您输入该角色的密码。 输入您选择的强密码。
$sudo -u postgres createuser odoo -U postgres -dP
选项 -u
执行命令为 postgres
用户。
选项 -U
指示连接时使用的用户名。
选项 -d
授予用户创建数据库的权限。
选项 -p
提示输入新用户的密码。
配置基于主机的身份验证
我们需要授予 PostgreSQL 服务权限才能连接到 Odoo 服务器。
首先,停止 PostgreSQL 服务。
$sudo systemctl stop postgresql-16
要查找 PostgreSQL 存储客户端身份验证文件的位置,请运行以下命令来启动 PostgreSQL shell。
$sudo -u postgres psql
运行以下查询以查找文件的位置。
postgres=# SHOW hba_file;
您将收到以下输出。
hba_file ------------------------------------ /var/lib/pgsql/16/data/pg_hba.conf (1 row)
类型 exit
退出外壳程序。
打开文件 /var/lib/pgsql/16/data/pg_hba.conf
进行编辑。
$sudo nano /var/lib/pgsql/16/data/pg_hba.conf
将以下行粘贴到末尾。
host all odoo odoo.yourdomain.com scram-sha-256
该行授予权限 odoo
用户连接到该服务器内的所有数据库。 您也可以指定数据库的名称,而不是使用 all
关键词。
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
配置PostgreSQL监听地址
接下来,我们需要允许数据库服务器监听远程连接。
启动 PostgreSQL shell 并运行以下命令以找到 PostgreSQL 配置文件。
$sudo -u postgres psql postgres=# SHOW config_file;
您将收到以下输出。
config_file ---------------------------------------- /var/lib/pgsql/16/data/postgresql.conf (1 row)
类型 exit
退出外壳程序。
打开文件 /var/lib/pgsql/16/data/postgresql.conf
进行编辑。
$sudo nano /var/lib/pgsql/16/data/postgresql.conf
换线 listen_addresses
从
#listen_addresses = 'localhost' # what IP address(es) to listen on;
到。
listen_addresses = '*'
这 *
意味着它将监听所有 IP 地址。 您可以将其更改为 odoo 实例的 IP 地址。
listen_addresses = 'localhost, '
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
启用并启动 PostgreSQL 服务
由于我们的配置已经完成,是时候启动 PostgreSQL 服务了。
$sudo systemctl start postgresql-16
第 4 步 – 安装 Odoo
安装Python 3.10
Rocky Linux 9 附带 Python 3.9,而 Odoo 17 需要 Python 3.10 及更高版本。 因此,我们需要先安装它。
您可以先查看当前可用的版本。
$python --version Python 3.9.18
安装 Python 所需的依赖项。
$sudo dnf groupinstall "Development Tools" $sudo dnf install readline-devel ncurses-devel openssl-devel sqlite-devel tk-devel gdbm-devel libc6-dev libbz2-dev libffi-dev zlib1g-dev $sudo dnf install -y openssl-devel bzip2-devel libffi-devel readline-devel ncurses-devel sqlite-devel tk-devel
从 Python 网站下载源代码。 在编写本教程时,可用的最新 3.10.x 版本是我们使用的 3.10.14。
$wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
提取存档。
$tar xzf Python-3.10.14.tgz
切换到解压后的目录。
$cd Python-3.10.14
配置源代码。
$./configure --enable-optimizations
安装Python 3.10.14。 这 altininstall
使用命令是为了避免覆盖系统的Python版本。
$sudo make altinstall
确认安装。
$python3.10 -V OR $python3.10 --version
您应该得到以下输出。
Python 3.10.14
接下来,我们需要将 Python 3.10 设置为默认的 Python 版本。 为服务器上安装的每个 Python 版本创建符号链接。 创建符号版本时,您应该在命令中包含准确的 Python 版本。 运行以下命令来创建符号链接。
$sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.10 1 $sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2
要查看可用的 Python 版本,请使用以下命令。
$sudo update-alternatives --config python3
您应该看到以下输出。
There are 2 programs which provide 'python3'. Selection Command ----------------------------------------------- 1 /usr/local/bin/python3.10 *+ 2 /usr/bin/python3.9 Enter to keep the current selection[+], or type selection number:
选择数字 1 以切换到 Python 3.10。
注销并重新登录终端以切换到Python版本。 您现在可以通过使用 Python 3.10.14 python
直接地。
安装依赖项并准备安装
创建一个新的系统用户,用于管理 Odoo 服务器上的 Odoo 进程,主目录为 /opt/odoo
。 这是为了防止在 root 用户下运行它带来的任何安全风险。
$sudo useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
安装 Odoo 17 安装所需的系统依赖项。
$sudo dnf install -y git libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel libpq-devel
安装 Nodejs。 Rocky Linux 9 附带 Node 18.x,这是 Nodejs 的当前 LTS 版本。 但是,我们将使用官方 Nodesource 存储库。
添加 Node 20 存储库。
$curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
安装 Nodejs。
$sudo dnf -y install nodejs
确认节点版本。
$node --version v20.12.1
使用 Node.js 安装 Less CSS 包如果您使用的是从右到左界面的语言,请安装 rtlcss
包也是如此。
$sudo npm install -g less rtlcss
安装 wkhtmltopdf
。 我们将使用 Wkhtmltopdf GitHub 打包存储库中的 RPM 包。 在撰写本教程时可用的最新版本是 0.12.6.1 r3。
下载 Wkhtmltopdf RPM。
$cd ~ $wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox-0.12.6.1-3.almalinux9.x86_64.rpm
安装 Wkhtmltopdf 所需的字体。
$sudo dnf install xorg-x11-fonts-75dpi.noarch xorg-x11-fonts-Type1.noarch
安装 Wkhtmltopdf。
$sudo rpm -i wkhtmltox-0.12.6.1-3.almalinux9.x86_64.rpm
检查版本 wkhtmltopdf
安装。
$wkhtmltopdf --version wkhtmltopdf 0.12.6.1 (with patched qt)
下载 Odoo 文件
切换到Odoo系统用户。
$sudo su - odoo
将 Odoo 的 Github 存储库克隆到您的系统上。
$git clone https://github.com/odoo/odoo.git --depth 1 --branch 17.0 --single-branch
为了我们的目的,我们将 Odoo 复制到 /opt/odoo
将安装它的目录。 这将创建 /opt/odoo/odoo
我们将用于安装的目录。
设置 Virtualenv Python 环境
此步骤是可选的,但建议这样做,因为 Odoo 的虚拟 Python 环境将有助于避免与操作系统的 Python 模块发生冲突,尤其是在执行操作系统升级时。
为此,我们将使用 virtualenv
。
-
创建一个新的
virtualenv
Odoo 的环境。$python3 -m venv odoo-env
-
激活虚拟环境。 我们正在系统用户的主目录下创建一个环境。 您可以自由选择您喜欢的任何位置。
$source odoo-env/bin/activate
-
更新 PIP 以防万一。
(odoo-env) $pip3 install --upgrade pip
-
在虚拟环境中安装Python的wheel。
$pip3 install wheel
安装Python依赖项
安装 Odoo 17 所需的 Python 依赖项。
$pip3 install -r /opt/odoo/odoo/requirements.txt
安装这些要求将需要一些时间,因此请耐心等待。
通过检查已安装的Python模块列表来检查需求是否正确安装。
$pip3 list Package Version ----------------- -------- attrs 23.2.0 Babel 2.9.1 beautifulsoup4 4.12.3 cached-property 1.5.2 certifi 2024.2.2 cffi 1.16.0 chardet 4.0.0 cryptography 3.4.8 decorator 4.4.2 docopt 0.6.2 docutils 0.17 ebaysdk 2.1.5 freezegun 1.1.0 geoip2 2.9.0 gevent 21.8.0 greenlet 1.1.2 idna 2.10 isodate 0.6.1 Jinja2 3.0.3 libsass 0.20.1 lxml 4.8.0 MarkupSafe 2.0.1 maxminddb 2.6.0 num2words 0.5.10 ofxparse 0.21 passlib 1.7.4 Pillow 9.0.1 pip 24.0 platformdirs 4.2.0 polib 1.1.1 psutil 5.9.0 psycopg2 2.9.2 pyasn1 0.6.0 pyasn1_modules 0.4.0 pycparser 2.22 pydot 1.4.2 pyOpenSSL 21.0.0 pyparsing 3.1.2 PyPDF2 1.26.0 pyserial 3.5 python-dateutil 2.8.1 python-ldap 3.4.0 python-stdnum 1.17 pytz 2024.1 pyusb 1.2.1 qrcode 7.3.1 reportlab 3.6.8 requests 2.25.1 requests-file 2.0.0 requests-toolbelt 1.0.0 rjsmin 1.1.0 setuptools 65.5.0 six 1.16.0 soupsieve 2.5 urllib3 1.26.5 vobject 0.9.6.1 Werkzeug 2.0.2 wheel 0.43.0 xlrd 1.2.0 XlsxWriter 3.0.2 xlwt 1.3.0 zeep 4.1.0 zope.event 5.0 zope.interface 6.2
退出Python虚拟环境。
$deactivate
为第 3 方插件创建目录
$mkdir /opt/odoo/odoo/custom-addons
该目录应添加到 addons_path
定义 Odoo 查找模块的目录的参数。 退出Odoo系统用户。
$exit
第 5 步 – 配置 Odoo
复制默认的 Odoo 配置文件以创建一个新配置文件。
$sudo cp /opt/odoo/odoo/debian/odoo.conf /etc/odoo.conf
打开文件进行编辑。
$sudo nano /etc/odoo.conf
编辑该文件,使其如下所示。
[options] ; This is the password that allows database operations: admin_passwd = admin db_host = postgresql.yourdomain.com db_port = False db_user = odoo db_password = odoo_password addons_path = /opt/odoo/odoo/addons, /opt/odoo/odoo/custom-addons xmlrpc_port = 8069 default_productivity_apps = True
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
选项 admin_passwd
是允许在 Odoo GUI 中进行管理操作的密码。 请务必选择安全的密码。
选项 db_host
是 PostgreSQL 服务器的 FQDN 或 IP 地址。
选项 db_port
设置为 false,因为使用默认 PostgreSQL 端口 5432。 如果您想使用不同的端口,则需要更新此值。
选项 db_user
是 PostgreSQL 用户的名称。
选项 db_password
是我们之前在 PostgreSQL 服务器上创建的 PostgreSQL ‘odoo’ 用户密码。
选项 addons_path
是默认的插件路径。 您还可以为插件添加自定义路径,并用逗号分隔它们。
选项 xmlrpc_port
是 Odoo 监听的端口。
选项 default_productivity_apps
确保默认生产力应用程序(即员工、电子邮件营销、项目和调查)保持启用状态。 这四个应用程序是 Odoo 社区版的默认应用程序。 在企业版上,默认情况下可以启用其他生产力应用程序,包括约会、知识、规划和签名。
创建 Odoo 服务
为了确保 Odoo 在系统重新启动后也能继续运行,我们需要为其创建一个服务。
创建文件 /lib/systemd/system/odoo-server.service
并打开它进行编辑。
$sudo nano /lib/systemd/system/odoo-server.service
将以下代码粘贴到其中。
[Unit] Description=Odoo Open Source ERP and CRM Requires=postgresql-16.service After=network.target postgresql-16.service [Service] Type=simple SyslogIdentifier=odoo-server User=odoo Group=odoo ExecStart=/opt/odoo/odoo-env/bin/python3 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log WorkingDirectory=/opt/odoo/odoo/ StandardOutput=journal+console KillMode=mixed [Install] WantedBy=multi-user.target
代替 /home/
与您选择安装 Python 虚拟环境的位置。
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
为 Odoo 创建日志目录
$sudo mkdir /var/log/odoo
设置文件权限
设置权限 odoo-server.service
文件,以便只有 Odoo 用户可以读取或执行它。
$sudo chmod 755 /lib/systemd/system/odoo-server.service $sudo chown odoo: /lib/systemd/system/odoo-server.service
设置 Python 环境、Odoo 安装和日志目录的所有权。
$sudo chown -R odoo: /opt/odoo/ $sudo chown -R odoo: /opt/odoo/odoo-env $sudo chown -R odoo: /var/log/odoo
限制 Odoo 配置文件。
$sudo chown odoo: /etc/odoo.conf $sudo chmod 640 /etc/odoo.conf
启动 Odoo 服务器
启动并启用 Odoo 服务器。
$sudo systemctl start odoo-server $sudo systemctl enable odoo-server
检查服务器的状态。
$sudo systemctl status odoo-server ? odoo-server.service - Odoo Open Source ERP and CRM Loaded: loaded (/usr/lib/systemd/system/odoo-server.service; enabled; preset: disabled) Active: active (running) since Tue 2024-04-09 23:59:38 UTC; 1s ago Main PID: 102598 (python3) Tasks: 4 (limit: 10736) Memory: 69.6M CPU: 895ms CGroup: /system.slice/odoo-server.service ??102598 /opt/odoo/odoo-env/bin/python3 /opt/odoo/odoo/odoo-bin --config=/etc/odoo.conf --addons-path=/opt/odoo/odoo/addons/ --logfile /var/log/odoo/odoo-server.log Apr 09 23:59:38 odoo.yourdomain.com systemd[1]: Started Odoo Open Source ERP and CRM.
第 6 步 – 安装和配置 Nginx
Rocky Linux 9 附带旧版本的 Nginx。 您需要使用官方 Nginx 存储库来安装最新版本。
创建并打开文件 /etc/yum.repos.d/nginx.repo
进行编辑。
$sudo nano /etc/yum.repos.d/nginx.repo
将以下代码粘贴到其中。
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
完成后,按 Ctrl + X 并在出现提示时输入 Y 来保存文件。 我们将使用 Nginx 的主线版本,因此通过使用在上述文件中启用了主线存储库 enabled=1
在主线部分而不是稳定部分下。 您可以选择其中之一。
安装 Nginx。
$sudo dnf install -y nginx
验证安装。
$nginx -v nginx version: nginx/1.25.4
启用并启动 Nginx 服务器服务。
$sudo systemctl enable nginx --now
检查服务状态。
$sudo systemctl status nginx ? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled) Active: active (running) since Wed 2024-04-10 06:52:14 UTC; 3s ago Docs: http://nginx.org/en/docs/ Process: 103452 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 103453 (nginx) Tasks: 3 (limit: 10736) Memory: 3.1M CPU: 17ms CGroup: /system.slice/nginx.service ??103453 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??103454 "nginx: worker process" ??103455 "nginx: worker process"
第 7 步 – 安装 SSL
我们需要安装 Certbot 来生成 Let’s Encrypt 提供的免费 SSL 证书。 为此,我们将使用 Snapd 软件包安装程序。 它需要 EPEL(企业 Linux 额外包)存储库才能工作。
安装 EPEL 存储库。
$sudo dnf install -y epel-release
Rocky Linux 9 未安装 Snapd。 安装 Snapd 软件包。
$sudo dnf install -y snapd
启用并启动 Snap 服务。
$sudo systemctl enable snapd --now
安装 Snap 核心包,并确保您的 Snapd 版本是最新的。
$sudo snap install core $sudo snap refresh core
创建 Snapd 工作所需的链接。
$sudo ln -s /var/lib/snapd/snap /snap $echo 'export P新高=$P新高:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
安装证书机器人。
$sudo snap install --classic certbot
使用以下命令确保 Certbot 命令可以通过创建指向该命令的符号链接来运行 /usr/bin
目录。
$sudo ln -s /snap/bin/certbot /usr/bin/certbot
验证 Certbot 是否正常运行。
$certbot --version certbot 2.10.0
生成证书。 我们还需要创建 DHParams 证书。
$sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d odoo.yourdomain.com
生成 Diffie-Hellman 密钥交易所证书。
$sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
检查 Certbot 续订调度程序服务。
$sudo systemctl list-timers
你会找到 snap.certbot.renew.service
作为计划运行的服务之一。
NEXT LEFT LAST PASSED UNIT ACTIVATES .... .... .... ...... .... ......... Wed 2024-04-10 13:32:11 UTC 1h 42min left Wed 2024-04-10 11:43:41 UTC 5min ago dnf-makecache.timer dnf-makecache.service Wed 2024-04-10 19:08:00 UTC 7h left - - snap.certbot.renew.timer snap.certbot.renew.service Thu 2024-04-11 00:00:00 UTC 12h left Wed 2024-04-10 00:00:36 UTC 11h ago logrotate.timer logrotate.service
对该过程进行一次演练,以检查 SSL 续订是否正常工作。
$sudo certbot renew --dry-run
如果没有看到任何错误,则一切都已准备就绪。 您的证书将自动更新。
第 8 步 – 配置 Nginx
要通过 Nginx 运行它,我们需要在本地主机上运行 Odoo。 要更改此情况,请停止 Odoo 服务。
$sudo systemctl stop odoo-server
打开 Odoo 服务器配置文件。
$sudo nano /etc/odoo.conf
将以下行添加到其中。
xmlrpc_interface = 127.0.0.1 proxy_mode = True
为 Odoo 创建 Nginx 配置文件。
$sudo nano /etc/nginx/conf.d/odoo.conf
粘贴下面的代码。
#odoo server upstream odoo { server 127.0.0.1:8069; } upstream odoochat { server 127.0.0.1:8072; } map $http_upgrade $connection_upgrade { default upgrade; '' close; } map $sent_http_content_type $content_type_csp { default ""; ~image/ "default-src 'none'"; } # http -> https server { listen 80; listen [::]:80; server_name odoo.yourdomain.com; return 301 https://$host$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; http2 on; http3 on; quic_retry on; server_name odoo.yourdomain.com; 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.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/odoo.yourdomain.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/odoo.yourdomain.com/chain.pem; ssl_session_timeout 30m; 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_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_prefer_server_ciphers off; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; # 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; } location /websocket { proxy_pass http://odoochat; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-Forwarded-Host $http_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; proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8 } # Redirect requests to odoo backend server location / { # Add Headers for odoo proxy mode proxy_set_header X-Forwarded-Host $http_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; proxy_redirect off; proxy_pass http://odoo; proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8 } # common gzip gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript; gzip on; # Serve static files right away location ~ ^/[^/]+/static/.+${ # root and try_files both depend on your addons paths root /opt/odoo/odoo; try_files /opt/odoo/odoo/addons$uri @odoo; expires 24h; add_header Content-Security-Policy $content_type_csp; } }
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
打开文件 /etc/nginx/nginx.conf
进行编辑。
$sudo nano /etc/nginx/nginx.conf
在该行之前添加以下行 include /etc/nginx/conf.d/*.conf;
。
server_names_hash_bucket_size 64;
按 Ctrl + X 并在出现提示时输入 Y 保存文件。
测试 Nginx 配置。
$sudo nginx -t
如果您没有看到任何错误,则表示您可以开始了。 重新启动 Nginx 服务器。
$sudo systemctl restart nginx
第 9 步 – 启动 Odoo
一切设置完毕后,我们可以再次启动 Odoo 服务器。
$sudo systemctl start odoo-server
通过以下方式在浏览器中启动 Odoo https://odoo.yourdomain.com
。 在浏览器中打开 URL http://:8069
或者 http://odoo.yourdomain.com:8069
。 如果一切正常,您应该会看到 Odoo 的数据库创建屏幕。
选择您的电子邮件和密码来创建您的登录凭据。 主密码是 admin_passwd
您在中添加的 /etc/odoo.conf
文件。 填写所有剩余字段。
检查 Demo Data
字段用示例数据填充数据库。 不要在面向互联网的服务器上安装演示数据。 包含演示数据的数据库包含默认登录名和密码,可用于进入您的系统并造成严重麻烦,即使在登台/开发系统上也是如此。 我们仅将其用于教程目的。
单击创建数据库按钮继续完成安装。 第一次创建数据库时,加载项页面将需要一些时间来加载,因此请勿刷新页面。 创建数据库后,您将自动重定向到以下登录页面。
输入上一步中使用的凭据登录 Odoo ERP,您将进入仪表板页面,如下所示。 它将预先填充演示数据。 如果您尚未检查数据库创建页面上的演示数据选项,您将获得一个不同且更清晰的仪表板。
从现在开始您可以开始使用 Odoo 来管理您的业务。
第 10 步 – 更新 Odoo
停止 Odoo 服务器。
$sudo systemctl stop odoo-server
切换到Odoo系统用户。
$sudo su - odoo
从 GitHub 获取最新源代码。
$git fetch $git rebase --autostash
如果您手动更改源,第二个命令可能会遇到源代码冲突。 您将获得冲突文件的列表。 您将需要手动更改所有文件并重新运行命令来解决问题。
如果您想放弃冲突的更改,可以运行以下命令来重置源。
$git reset --hard
激活Python虚拟环境。
$source odoo-env/bin/activate
安装 Python 依赖项。
$pip3 install -r /opt/odoo/odoo/requirements.txt
退出Python虚拟环境。
$deactivate
启动 Odoo 服务器。
$sudo systemctl start odoo-server
第 11 步 – 使用 Fail2Ban 保护 Odoo
此步骤是可选的,但如果您安装了 Fail2Ban,您可以添加 Odoo 配置来保护它。
创建并打开 odoo-login.conf
文件进行编辑。
$sudo nano /etc/fail2ban/jail.d/odoo-login.conf
将以下代码粘贴到其中。
[odoo-login] enabled = true port = http,https bantime = 900 ; 15 min ban maxretry = 10 ; if 10 attempts findtime = 60 ; within 1 min /!\ Should be adjusted with the TZ offset logpath = /var/log/odoo.log ; set the actual odoo log path here
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
创建并打开 odoo-login.conf
过滤文件进行编辑。
$sudo nano /etc/fail2ban/filter.d/odoo-login.conf
将以下代码粘贴到其中。
[Definition] failregex = ^ \d+ INFO \S+ \S+ Login failed for db:\S+ login:\S+ from ignoreregex =
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
重新启动 Fail2Ban。
$sudo systemctl restart fail2ban
结论
我们关于在 Rocky Linux 9 服务器上安装和配置 Odoo 的教程到此结束。 如果您有任何疑问,请在下面的评测中发表。
资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载