How To Install Odoo 12 on Ubuntu 18.04
目录:
- 安装先决条件
- 创建系统用户
- 安装和配置PostgreSQL
- 安装Wkhtmltopdf
- 安装和配置Odoo 13
- 创建系统单位文件
- 测试安装
- 将Nginx配置为SSL终止代理
- 更改绑定界面
- 启用多重处理
- 结论
Odoo是流行的开源商务应用程序套件。 它提供了一系列应用程序,包括CRM,电子商务,网站构建器,计费,会计,制造,仓库,项目管理,库存等等,所有这些都无缝集成在一起。
可以根据用例和可用技术以多种方式安装Odoo。 安装Odoo的最简单,最快的方法是使用官方的Odoo APT存储库。
在虚拟环境中安装Odoo或作为Docker容器进行部署,使您可以更好地控制系统的设置,并在同一系统上运行多个Odoo版本。
在本指南中,我们将引导您在Ubuntu 18.04上的Python虚拟环境中安装和部署Odoo 13。 我们将从其Github存储库中下载Odoo,并将Nginx用作反向代理。
安装先决条件
以sudo用户身份登录到Ubuntu,并更新Apt缓存:
sudo apt update
安装Git,Pip,Node.js和构建Odoo依赖项所需的工具:
sudo apt install git python3-pip build-essential wget python3-dev python3-venv python3-wheel libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools node-less
创建系统用户
创建一个将运行Odoo的系统用户,名为
odoo13
,其主目录为
/opt/odoo13
:
sudo useradd -m -d /opt/odoo13 -U -r -s /bin/bash odoo13
您可以将用户名设置为任何所需的名称,只要您创建具有相同名称的PostgreSQL用户即可。
安装和配置PostgreSQL
Odoo使用PostgreSQL作为数据库后端。 要安装PostgreSQL,请运行以下命令:
sudo apt install postgresql
安装完成后,以与先前创建的系统用户相同的名称创建一个PostgreSQL用户,在我们的情况下为
odoo13
:
sudo su - postgres -c "createuser -s odoo13"
安装Wkhtmltopdf
wkhtmltox
软件包提供了一组开源命令行工具,可以将HTML渲染为PDF和各种图像格式。 为了能够打印PDF报告,您需要安装
wkhtmltopdf
工具。 Odoo的推荐版本为0.12.5,默认的Ubuntu 18.04存储库中不提供该版本。
使用以下wget命令下载软件包:
wget
下载完成后,输入以下命令安装软件包:
sudo apt install./wkhtmltox_0.12.5-1.bionic_amd64.deb
安装和配置Odoo 13
如前所述,我们将在隔离的Python虚拟环境中从源代码安装Odoo。
首先,更改为用户“ odoo13”:
sudo su - odoo13
从GitHub克隆Odoo 13源代码:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo13/odoo
下载完成后,为Odoo创建一个新的Python虚拟环境:
cd /opt/odoo13
python3 -m venv odoo-venv
使用以下命令激活环境:
source odoo-venv/bin/activate
使用pip3安装所有必需的Python模块:
pip3 install wheel
pip3 install -r odoo/requirements.txt
如果在安装过程中遇到任何编译错误,请确保已安装“
Installing Prerequisites
部分中列出的所有必需依赖项。
完成后,通过键入以下命令停用环境:
deactivate
我们将创建一个新目录,其中将包含第三方插件。
mkdir /opt/odoo13/odoo-custom-addons
稍后,我们将此目录添加到
addons_path
参数。 此参数定义Odoo在其中搜索模块的目录列表。
切换回您的sudo用户:
exit
创建具有以下内容的配置文件:
sudo nano /etc/odoo13.conf
/etc/odoo13.conf
; This is the password that allows database operations: admin_passwd = my_admin_passwd db_host = False db_port = False db_user = odoo13 db_password = False addons_path = /opt/odoo13/odoo/addons, /opt/odoo13/odoo-custom-addons
不要忘记将
my_admin_passwd
更改为更安全的方式。
创建系统单位文件
打开您的文本编辑器,并创建一个名为
odoo13.service
的服务单元文件,其内容如下:
sudo nano /etc/systemd/system/odoo13.service
/etc/systemd/system/odoo13.service
Description=Odoo13 Requires=postgresql.service After=network.target postgresql.service Type=simple SyslogIdentifier=odoo13 PermissionsStartOnly=true User=odoo13 Group=odoo13 ExecStart=/opt/odoo13/odoo-venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf StandardOutput=journal+console WantedBy=multi-user.target
通知systemd一个新的单位文件存在:
sudo systemctl daemon-reload
启动Odoo服务,并通过运行以下命令使其在启动时启动:
sudo systemctl enable --now odoo13
验证服务状态:
sudo systemctl status odoo13
输出应如下所示,表明Odoo服务处于活动状态并正在运行。
● odoo13.service Loaded: loaded (/etc/systemd/system/odoo13.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2019-10-19 20:06:23 UTC; 3s ago Main PID: 1860 (python3) Tasks: 4 (limit: 2362) CGroup: /system.slice/odoo13.service └─1860 /opt/odoo13/odoo-venv/bin/python3 /opt/odoo13/odoo/odoo-bin -c /etc/odoo13.conf
要查看Odoo服务记录的消息,请使用以下命令:
测试安装
打开浏览器并输入:
http://:8069
http://:8069
假设安装成功,将出现类似以下的屏幕:

将Nginx配置为SSL终止代理
默认的Odoo Web服务器通过HTTP提供流量。 为了使Odoo部署更加安全,我们将Nginx配置为SSL终止代理,该代理将通过HTTPS提供流量。
SSL终止代理是处理SSL加密/解密的代理服务器。 这意味着终止代理(Nginx)将处理并解密传入的TLS连接(HTTPS),并将未加密的请求传递给内部服务(Odoo)。 Nginx和Odoo之间的流量不会被加密(HTTP)。
使用反向代理可以为您带来很多好处,例如负载平衡,SSL终止,缓存,压缩,提供静态内容等。
在继续本节之前,请确保您满足以下先决条件:
- 指向您的公共服务器IP的域名。 我们将为您的域使用
example.com.Nginx安装的SSL证书。 您可以安装免费的“让我们加密SSL”证书。
打开文本编辑器,然后创建/编辑域服务器块:
sudo nano /etc/nginx/sites-enabled/example.com
以下配置设置SSL终止,HTTP到HTTPS重定向,WWW到非WWW重定向,缓存静态文件并启用GZip压缩。
/etc/nginx/sites-enabled/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
至此,反向代理已配置完毕,您可以通过以下
https://example.com
访问您的Odoo实例:
https://example.com
://example.com
更改绑定界面
此步骤是可选的,但这是一个很好的安全实践。
默认情况下,Odoo服务器在所有接口上监听端口
8069
。 要禁用对Odoo实例的直接访问,您可以阻止所有公共接口的端口
8069
,或强制Odoo仅在本地接口上侦听。
我们将Odoo配置为仅监听
127.0.0.1
。 打开配置,在文件末尾添加以下两行:
xmlrpc_interface = 127.0.0.1 netrpc_interface = 127.0.0.1
保存配置文件并重新启动Odoo服务器,以使更改生效:
启用多重处理
默认情况下,Odoo在多线程模式下工作。 对于生产部署,建议更改为多处理服务器,因为它可以提高稳定性并更好地利用系统资源。
要启用多处理,您需要编辑Odoo配置并设置非零数量的工作进程。 根据系统中CPU内核的数量和可用的RAM内存来计算工作程序的数量。
根据Odoo的官方文档来计算工人的数量和所需的RAM内存大小,您可以使用以下公式和假设:
工号计算
- 理论上的最大工作者数=(system_cpus * 2)+ 11个工作者可以服务〜= 6个并发用户
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))
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虚拟环境中,如何在Ubuntu 18.04上安装Odoo 13。 我们还向您展示了如何针对生产环境启用多处理和优化Odoo。
您可能还需要查看有关如何创建Odoo数据库每日自动备份的教程。
ubuntu odoo PostgreSQL python pip nginx代理ssl如何在Ubuntu Linux中安装最新的Firefox 3.6.6
Firefox 3.6.6具有浏览器防崩功能。下面介绍如何在Ubuntu Linux中轻松安装它。
如何在Ubuntu 18.04上添加交换空间
交换是物理RAM内存已满时使用的磁盘空间。 当Linux系统的RAM用完时,非活动页面将从RAM移动到交换空间。 本教程介绍了将交换文件添加到Ubuntu 18.04所需的步骤。
如何在Ubuntu 16.04上安装Odoo 11
Odoo是世界上最受欢迎的商业软件之一。 本指南介绍了在Ubuntu 16.04上使用Git源和Python虚拟环境安装和配置Odoo的必要步骤。







