Ubuntu 18.04服务器中安装和配置Odoo 13
在Ubuntu 18.04服务器上的安装和配置Odoo 13,我们将从其Github存储库中下载Odoo,并使用Nginx作为反向代理。可以根据用例和可用技术以多种方式安装Odoo,安装Odoo的最简单,最快的方法是使用官方的Odoo APT存储库。在虚拟环境中安装Odoo或作为Docker容器进行部署,使您可以更好地控制系统设置,并在同一系统上运行多个Odoo版本。
一、安装先决条件及创建系统用户
1、安装先决条件
1
2
|
sudo apt–get install –y python3–pip
pip3 install Babel passlib lxml decorator docutils ebaysdk feedparser gevent greenlet html2text Jinja2 Mako MarkupSafe mock num2words ofxparse Pillow psutil psycogreen psycopg2 pydot pyparsing PyPDF2 pyserial python–dateutil python–openid pytz pyusb PyYAML qrcode reportlab requests six suds–jurko vatnumber vobject Werkzeug XlsxWriter xlwt xlrd
|
安装报表所需的wkhtmltopdf:
1
2
3
4
5
|
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.2.1/wkhtmltox-0.12.2.1_linux-trusty-amd64.deb
sudo dpkg –i wkhtmltox–0.12.2.1_linux–trusty–amd64.deb
sudo ln –s /usr/local/bin/wkhtmltopdf /usr/bin
sudo ln –s /usr/local/bin/wkhtmltoimage /usr/bin
|
2、创建系统用户
二、安装和配置PostgreSQL
参考:在Ubuntu系统上安装和配置PostgreSQL的方法。
三、安装和配置Odoo 13
如前所述,我们将从一个隔离的Python虚拟环境中的源代码安装Odoo。
首先,更改为用户“odoo”:
sudo su - odoo
从GitHub存储库克隆Odoo 13源代码:
git clone https://www.github.com/odoo/odoo --depth 1 --branch 13.0 /opt/odoo/odoo13
安装依赖
sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list apt-get clean apt-get update apt-get install -y libsasl2-dev python3-dev libldap2-dev libssl-dev python3 -m pip install -r /opt/odoo/odoo13/requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
在该目录下放置自定义配置文件:
第一次启动先初始化数据库:
python3 /opt/odoo/odoo13/odoo-bin -c /opt/odoo/conf/odoo.conf -i base
8、让odoo随着系统自动启动:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
sudo vi /lib/systemd/system/odoo.service
#添加代码
[Unit]
Description=Odoo
After=postgresql.service
[Service]
Type=simple
User=odoo
Group=odoo
ExecStart=/home/odoo/odoo12/odoo–bin –c /etc/odoo/odoo.conf
[Install]
WantedBy=multi–user.target
#注册为系统服务:
sudo systemctl enable odoo.service
# 启动服务
sudo systemctl start odoo<code>
|
以下可以忽略
四、创建系统单位文件及测试安装
1、创建系统单位文件
打开您的文本编辑器,并创建一个名为odoo13.service的服务单元文件:
sudo nano /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/odoo-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
输出应如下所示,表明Odoo服务处于活动状态并正在运行:
要查看Odoo服务记录的消息,请使用以下命令:
sudo journalctl -u odoo13
2、测试安装
打开浏览器并输入:http://<your_domain_or_IP_address>:8069。
假设安装成功,将出现类似以下的屏幕:
五、将Nginx配置为SSL终止代理
默认的Odoo Web服务器通过HTTP提供流量,为了使Odoo部署更加安全,我们将Nginx配置为SSL终止代理,该代理将通过HTTPS提供流量。
SSL终止代理是处理SSL加密/解密的代理服务器,这意味着终止代理(Nginx)将处理并解密传入的TLS连接(HTTPS),并将未加密的请求传递给内部服务(Odoo),Nginx和Odoo之间的流量不会被加密(HTTP)。
使用反向代理可以为您带来很多好处,例如负载平衡、SSL终止、缓存、压缩、提供静态内容等。
在继续本节之前,请确保您满足以下先决条件:
1]、指向您的公共服务器IP的域名,我们将使用example.com。
2]、已安装Nginx,参考在Ubuntu 18.04/19.04系统上安装Nginx最新版本的方法。
3]、您的域的SSL证书,您可以安装免费的Let\’s Encrypt SSL证书。
打开文本编辑器,然后创建/编辑域服务器块:
sudo nano /etc/nginx/sites-enabled/example.com
以下配置设置SSL终止,HTTP到HTTPS重定向,WWW到非WWW重定向,缓存静态文件并启用GZip压缩:
# 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内存大小,您可以使用以下公式和假设:
1、工号计算
1]、理论上的最大工作者数= (system_cpus * 2) + 1。
2]、1个工作人员可以服务~= 6个并发用户。
3]、Cron工人也需要CPU。
2、RAM内存大小计算
1]、我们将认为所有请求中有20%是重度请求,而80%是轻度请求,繁重的请求使用大约1 GB的RAM,而较轻的请求使用大约150 MB的RAM
2]、所需的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用户。
1]、30 users / 6 = **5**(5是所需的理论工人数)。
2]、(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一起安装在同一服务器上,根据您的设置,您可能还会在服务器上运行其他服务。
至此,在Ubuntu 18.04服务器上安装Odoo 13的全部步骤操作完成了,您可以随时应用搭载好的Odoo 13环境。