GoodERP用户手册
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

11KB

Odoo是世界上最受欢迎的多合一商务软件。我们提供各种无缝集成的业务应用程序,例如CRM,网站,电子商务,计费,会计,制造,仓储,项目管理和库存。

本教程描述了如何在CentOS 8计算机上的Python虚拟环境中从源代码安装Odoo 13。从Github下载Odoo源并将Nginx配置为反向代理。

先决条件 要完成安装,您必须以具有root或sudo特权的用户身份登录。

安装依赖项 安装从Python 3,Git和源代码构建Odoo所需的所有库和工具。

sudo dnf install python3 python3-devel git gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel 创建系统用户 使用主目录创建新的系统用户和组 /opt/odoo Odoo服务将运行:

sudo useradd -m -U -r -d /opt/odoo13 -s /bin/bash odoo13 您可以给用户任何名称。用相同的名称创建一个PostgreSQL用户。

安装和配置PostgreSQL 从标准CentOS 8存储库安装PostgreSQL 10。

sudo dnf install @postgresql:10 安装完成后,创建一个新的PostgreSQL数据库集群。

sudo postgresql-setup initdb 启用并启动PostgreSQL服务。

sudo systemctl enable --now postgresql 创建一个与先前创建的系统用户同名的PostgreSQL用户。在此示例中,它是“ odoo13”。

sudo su - postgres -c “createuser -s odoo13” 安装Wkhtmltopdf 的 wkhtmltox 该软件包提供了一组开源命令行工具,可以将HTML呈现为PDF和各种图像格式。要打印PDF报告,您需要: wkhtmltopdf 工具推荐的Odoo版本是 0.12.5这在官方的CentOS 8存储库中不可用。

安装 rpm 输入以下内容以从Github创建一个包。

sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm 安装和配置Odoo 13 在开始安装过程之前,请更改为用户“ odoo13”。

sudo su - odoo13 首先从Odoo GitHub存储库复制Odoo 13源代码。

git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo 前往 /opt/odoo13 创建目录并创建用于Odoo安装的新Python虚拟环境。

cd /opt/odoo13 python3 -m venv venv 用于激活环境 source 命令:

source venv/bin/activate 安装所需的Python模块。

pip3 install -r odoo/requirements.txt 如果在安装过程中遇到编译错误,请确保安装了下面列出的所有必需的依赖项。 Installing Dependencies 部分。

安装完成后,请停用环境。

deactivate 为自定义加载项创建一个新目录。

mkdir /opt/odoo13/odoo-custom-addons 切换到sudo用户。

exit 接下来,打开一个文本编辑器并创建以下配置文件:

sudo nano /etc/odoo13.conf /etc/odoo13.conf

(options) ; This is the password that allows database operations: admin_passwd = superadmin_passwd db_host = False db_port = False db_user = odoo13 db_password = False addons_path = /opt/odoo13/odoo/addons, /opt/odoo13/odoo-custom-addons 保存并关闭文件。

别忘了改变 superadmin_passwd 为了更安全。

创建系统单位文件 打开文本编辑器并创建一个名为 odoo13.service 中号 /etc/systemd/system/ 目录:

sudo nano /etc/systemd/system/odoo13.service 粘贴以下内容:

/etc/systemd/system/odoo13.service

(Unit) Description=Odoo13 Requires=postgresql.service After=network.target postgresql.service

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

(Install) WantedBy=multi-user.target 保存文件并关闭编辑器。

通知Systemd一个新的单位文件存在。

sudo systemctl daemon-reload 运行以下命令以启动并启用Odoo服务:

sudo systemctl enable --now odoo13 您可以使用以下命令检查服务的状态:

sudo systemctl status odoo13 ● odoo13.service - Odoo13 Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-12-11 20:04:52 UTC; 5s ago Main PID: 28539 (python3)

Tasks: 4 (limit: 11524)

Memory: 94.6M CGroup: /system.slice/odoo13.service

       └─28539 /opt/odoo13/venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf

要查看由Odoo服务记录的消息,请使用以下命令:

sudo journalctl -u odoo13 测试安装 打开浏览器并输入以下内容: http://:8069

如果安装成功,将显示以下屏幕。

在CentOS 8上安装Odoo 13 1

如果您无法访问该页面,则可能是防火墙阻止了该端口 8069。

使用以下命令打开所需的端口:

sudo firewall-cmd --permanent --zone=public --add-port=8069/tcp sudo firewall-cmd --reload 将Nginx配置为SSL终止代理 默认的Odoo Web服务器通过HTTP处理流量。为了使Odoo部署更加安全,请将Nginx配置为处理HTTPS上的流量的SSL终止代理。

SSL终止代理是处理SSL加密/解密的代理服务器。这意味着终止代理(Nginx)处理并解密传入的TLS连接(HTTPS),并将未加密的请求传递给内部服务(Odoo)。 Nginx和Odoo之间的流量未加密(HTTP)。

使用反向代理具有许多好处,例如负载平衡,SSL终止,缓存,压缩和提供静态内容。

在继续本节之前,请确保您满足以下先决条件:

指向公共服务器IP的域名。使用方法 example.com。 Nginx已安装。

域SSL证书。您可以安装免费的Let' s Encrypt SSL证书。 打开文本编辑器,然后创建/编辑域服务器块。

sudo nano /etc/nginx/conf.d/example.com 以下配置可配置SSL终止,HTTP到HTTPS重定向,WWW到非WWW重定向,缓存静态文件并启用GZip压缩。

/etc/nginx/conf.d/example.com

Odoo servers

upstream odoo { server 127.0.0.1:8069; }

upstream odoochat { server 127.0.0.1:8072; }

HTTP -> HTTPS

server {

listen 80;
server_name www.example.com example.com;

include snippets/letsencrypt.conf;
return 301 https://example.com$request_uri;

}

WWW -> NON WWW

server {

listen 443 ssl http2;
server_name www.example.com;

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;

return 301 https://example.com$request_uri;

}

server {

listen 443 ssl http2;
server_name example.com;

proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;

# Proxy headers
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/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;

# log files
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;

# Handle longpoll requests
location /longpolling {
    proxy_pass http://odoochat;
}

# Handle / requests
location / {
   proxy_redirect off;
   proxy_pass http://odoo;
}

# Cache static files
location ~* /web/static/ {
    proxy_cache_valid 200 90m;
    proxy_buffering on;
    expires 864000;
    proxy_pass http://odoo;
}

# Gzip
gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
gzip on;

} 不要忘记用Odoo域替换example.com并为SSL证书文件设置正确的路径。本指南中创建了此配置中使用的代码段。

完成后,重新启动Nginx服务。

sudo systemctl restart nginx 接下来,您需要告诉Odoo使用代理。为此,请打开配置文件并添加以下行:

/etc/odoo13.conf

proxy_mode = True 重新启动Odoo服务以使更改生效。

sudo systemctl restart odoo13 至此,反向代理已配置完毕,您可以在以下位置访问Odoo实例: https://example.com

更改绑定界面 此步骤是可选的,但是很好的安全做法。

默认情况下,Odoo服务器在端口上侦听 8069 在所有接口上。要禁用对Odoo实例的直接访问,可以阻止端口 8069 强制Odoo侦听所有公共接口或仅侦听本地接口。

设置为仅在Odoo上收听 127.0.0.1。打开配置,并在文件末尾添加以下两行:

/etc/odoo13.conf

xmlrpc_interface = 127.0.0.1 netrpc_interface = 127.0.0.1 保存配置文件,然后重新启动Odoo服务器,以使更改生效。

sudo systemctl restart odoo13 启用多重处理 默认情况下,Odoo在多线程模式下运行。对于生产部署,我们建议您更改为多处理服务器,因为它可以提高稳定性并改善系统资源的使用。

要启用多重处理,必须编辑Odoo配置并设置非零数量的工作进程。根据系统中CPU内核的数量和可用的RAM内存来计算工作程序的数量。

根据Odoo的官方文档,可以使用以下公式和假设来计算工作线程数和所需的RAM内存大小:

计算工人数

理论上的最大工人人数=(system_cpus * 2)+ 1 一名工作人员最多可处理6个并发用户 Cron工人也需要CPU 计算RAM内存大小

我们认为所有请求中有20%较重,而80%较轻。大量请求使用大约1 GB的RAM,轻度请求使用大约150 MB的RAM 所需的RAM = number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) ) 如果您不知道系统有多少个CPU,请使用 grep 命令:

grep -c ^processor /proc/cpuinfo 假设您的系统具有4个CPU内核,8 GB RAM内存和30个并发Odoo用户。

30 users / 6 = 5 (5是所需的理论工人数) (4 * 2) + 1 = 9 (9是理论上的最大工人人数) 根据以上计算,可以将5名工人+ 1名工人用作cron工人(总共6名工人)。

根据工作程序数计算RAM内存消耗。

RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM 计算表明,Odoo安装需要大约2GB的RAM。

要切换到多处理模式,请打开配置文件并添加计算值。

/etc/odoo13.conf

limit_memory_hard = 2684354560 limit_memory_soft = 2147483648 limit_request = 8192 limit_time_cpu = 600 limit_time_real = 1200 max_cron_threads = 1 workers = 5 重新启动Odoo服务以使更改生效。

sudo systemctl restart odoo13 剩余的系统资源由该系统上运行的其他服务使用。在本指南中,我们将Odoo与PostgreSQL和Nginx安装在同一服务器上。根据您的配置,服务器可能正在运行其他服务。

总结 本教程展示了如何使用Nginx作为反向代理在Python虚拟环境中的CentOS 8上安装Odoo 13。我们还展示了如何启用多处理并优化Odoo的生产。

上海开阖软件有限公司 沪ICP备12045867号-1