使用“让我们加密SSL”在CentOS 8上安装Odoo 14

这篇文章旨在指导Linux用户在CentOS 8上安装Odoo14 ERP系统。 Odoo是具有POS,CRM,项目管理,网站构建器,市场营销,仓库管理,电子商务和计费功能的开源业务管理应用程序。 与会计,制造和许多其他很酷的功能。这些附加功能可以通过许多可以安装的Odoo插件来解锁。

在本文更新时,Odoo ERP软件的最新版本为版本14。通过系统升级开始安装,安装所有必需的依赖项(例如PostgreSQL数据库服务器),最后在CentOS 8上实际安装Odoo ERP14。 Nginx用作CentOS8上Odoo14 ERP和CRM系统的前端代理。

步骤1:更新操作系统并设置主机名和DNS

登录到CentOS 8服务器,执行系统更新,然后重新启动。

sudo dnf -y update
sudo reboot

重新启动系统后,配置正确的主机名。

sudo hostnamectl set-hostname erp.hirebestengineers.com --static
sudo hostnamectl set-hostname erp.hirebestengineers.com --transient

它还将有效的A记录添加到DNS服务器。

保存记录并运行ping或dig来验证记录是否正常。

$ sudo dnf -y install bind-utils
$ dig A erp.hirebestengineers.com +short
168.119.127.45

步骤2:将EPEL储存库添加到CentOS服务器

运行命令以将EPEL存储库添加到CentOS 8。

sudo yum -y install epel-release vim bash-completion

将SELinux置于可接受的模式。

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

执行yumrepolist命令。

$ sudo yum repolist
repo id                                                     repo name
AppStream                                                   CentOS-8 - AppStream
BaseOS                                                      CentOS-8 - Base
epel                                                        Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                                Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                                      CentOS-8 - Extras

步骤3:安装PostgreSQL数据库服务器

Odoo ERP资源库使用PostgreSQL数据库服务器进行数据存储。该软件包在DNF模块中可用。

禁用当前的默认PostgreSQL模块。

sudo dnf -qy module disable postgresql

启用PostgreSQL 12模块。

sudo dnf module -y enable postgresql:12

然后安装PostgreSQL服务器和客户端软件包。

sudo dnf -y install @postgresql

安装后,需要在启动服务之前初始化数据库。

$ sudo /usr/bin/postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

启动并启用数据库服务器。

$ sudo systemctl enable --now postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.

创建一个odoo数据库用户。

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

步骤4:在CentOS 8上安装wkhtmltopdf

Odoo使用wkhtmltopdf生成PDF格式的报告。推荐安装的wkhtmltopdf版本为0.12.5,可从存档部分的wkhtmltopdf下载页面获得。

sudo dnf install -y https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm

检查安装的版本。

$ wkhtmltopdf --version
wkhtmltopdf 0.12.5 (with patched qt)

在CentOS 8上实际安装Odoo 14的下一步。

步骤5:在CentOS 8上安装Odoo 14

添加一个EPEL存储库。

yum -y install epel-release

同时启用PowerTools存储库。

sudo dnf config-manager --set-enabled PowerTools

安装Python和其他构建依赖项。

sudo yum -y install vim bash-completion zip git gcc openldap-devel python3 python3-devel redhat-rpm-config libxslt-devel libjpeg-devel freetype-devel bzip2-devel

为Odoo系统添加用户和组。

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

为创建的用户帐户设置密码。

$ sudo passwd odoo
Changing password for user odoo.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

检查用户详细信息。

$ id odoo
uid=992(odoo) gid=989(odoo) groups=989(odoo)

切换到您创建的用户帐户。

$ sudo su - odoo

从Github克隆版本14分支。

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

创建一个PythonVirtualenv。

cd /opt/odoo
python3 -m venv odoo-venv

激活您创建的虚拟环境。

source odoo-venv/bin/activate

在需求文件中安装Python依赖项。

pip3 install -r odoo/requirements.txt

如果安装成功完成,则将停用虚拟环境。

deactivate
exit

创建一个Odoo日志文件。

sudo touch /var/log/odoo.log

创建自定义加载项路径:

sudo mkdir /opt/odoo/odoo/custom-addons

设置正确的目录权限。

sudo chown -R odoo:odoo /opt/odoo/ /var/log/odoo.log

创建一个Odoo实例配置文件。

sudo tee  /etc/odoo.conf<<EOF
[options]
proxy_mode = True
; This is the password that allows database operations:
admin_passwd = [email protected]
db_host = False
db_port = False
db_user = odoo
db_password = False
xmlrpc_port = 8069
logfile = /var/log/odoo.log
logrotate = True
addons_path = /opt/odoo/odoo/addons,/opt/odoo/odoo/custom-addons
EOF

创建一个Systemd服务单元文件。

sudo tee /etc/systemd/system/odoo.service<<EOF
[Unit]
Description=Odoo ERP Server
Requires=postgresql.service
After=network.target postgresql.service

[Service]
User=odoo
Group=odoo
Type=simple
SyslogIdentifier=odoo
PermissionsStartOnly=true
ExecStart=/opt/odoo/odoo-venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target
EOF

系统服务重载:

sudo systemctl daemon-reload

启动创建的doo服务。

sudo systemctl start odoo
sudo systemctl restart odoo

允许您在启动时开始。

$ sudo systemctl enable odoo
Created symlink /etc/systemd/system/multi-user.target.wants/odoo.service → /etc/systemd/system/odoo.service.

检查Odoo服务是否设置为在启动时启动。

$ systemctl is-enabled odoo
enabled

检查它是否正在运行。

$ systemctl status odoo
● odoo.service - Odoo ERP Server
   Loaded: loaded (/etc/systemd/system/odoo.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-10-11 18:38:30 CEST; 48s ago
 Main PID: 25201 (python3)
    Tasks: 4 (limit: 24392)
   Memory: 59.2M
   CGroup: /system.slice/odoo.service
           └─25201 /opt/odoo/odoo-venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo.conf

Oct 11 18:38:30 erp.hirebestengineers.com systemd[1]: Started Odoo ERP Server.

Odoo服务必须绑定到TCP端口 8069 它开始一次。

$ sudo ss -tunelp | grep 8069
tcp     LISTEN   0        128              0.0.0.0:8069          0.0.0.0:*       users:(("python3",pid=25201,fd=4)) uid:992 ino:64882 sk:5 <->

在CentOS8上安装Nginx Web Server。

sudo yum -y install nginx
sudo systemctl enable --now nginx

为odoo创建一个新的配置文件。

sudo vim /etc/nginx/conf.d/odoo.conf

修改此配置代码片段以适合您的设置。

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

server {
    listen 80;
    server_name erp.hirebestengineers.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
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}

交换 erp.computingforgeeks 使用域名验证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

如果一切顺利,请重新启动Nginx。

sudo systemctl restart nginx

如果您的服务器具有公共IP,则可以为您的域创建DNS A记录,指向您的Odoo服务器,然后申请免费的Let’s Encrypt SSL证书。

在CentOS8服务器上安装Nginx。

sudo yum -y install nginx
sudo systemctl enable --now nginx

安装certbot-auto工具。

sudo yum -y install wget
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto

停止Nginx服务。

sudo systemctl stop nginx

加密您域的SSL证书。

export DOMAIN="erp.hirebestengineers.com"
export EMAIL="[email protected]"
sudo /usr/local/bin/certbot-auto certonly --standalone -d ${DOMAIN} --preferred-challenges http --agree-tos -n -m ${EMAIL} --keep-until-expiring

证书文件的路径为“重要笔记“ 部分。

IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/erp.hirebestengineers.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/erp.hirebestengineers.com/privkey.pem
Your cert will expire on 2021-01-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew all of your certificates, run
"certbot-auto renew"
Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
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

创建证书更新的cron。

$ sudo crontab -e
15 3 * * * /usr/local/bin/certbot-auto renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"

创建一个Nginx配置文件。

sudo vim /etc/nginx/conf.d/odoo.conf

将以下内容粘贴到文件中 更改 它适合您的环境。

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

# http to https redirection
server {
    listen 80;
    server_name erp.hirebestengineers.com;
    return 301 https://erp.hirebestengineers.com$request_uri;
}

server {
    listen 443 ssl;
    server_name erp.hirebestengineers.com;
    access_log /var/log/nginx/odoo_access.log;
    error_log /var/log/nginx/odoo_error.log;
   
   # SSL
    ssl_certificate /etc/letsencrypt/live/erp.hirebestengineers.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/erp.hirebestengineers.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/erp.hirebestengineers.com/chain.pem;


    # 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

重新启动Nginx。

sudo systemctl restart nginx

步骤8:在CentOS 8服务器上访问Odoo 14

从Web上访问域名Odoo网页– https:// DNS主机名。使用“让我们加密SSL”在CentOS 8上安装Odoo 14

您也可以直接访问Odoo网页。

http://<your_server_IP_address>:8069

在第一页上,设置数据库名称,管理员用户电子邮件地址和管理员用户密码。使用“让我们加密SSL”在CentOS 8上安装Odoo 14

Odoo ERP现在已安装并在您的CentOS 8服务器上运行。检查我们的网站以获取最新文章。

有关CentOS 8的其他文章:

如何在CentOS 8上安装Micro K8s Kubernetes集群

如何使用Rent的CentOS 8配置TigerVNC

在CentOS 8上安装Google Hangout Client

Sidebar