全球第一开源ERP Odoo操作手册 使用Nginx Upstream来优化Odoo的网络传输性能
1.7.1 简介
Odoo使用werkzeug作为 web 服务的框架,性能比之前的cherrypy有了很大的改善。但无论是werkzeug还是cherrypy,都不是专门的web服务器。通常的做法是在Odoo之前加一个Nginx、Apache或其它服务器。
1.7.2 使用Nginx Upstream部署Odoo的方法。
此处假设您已经安装好Odoo,并运行在127.0.0.1:8069
1.7.2.1 安装Nginx
sudo apt-get install nginx
1.7.2.2 修改nginx.conf,开启gzip压缩
# vi /etc/nginx/nginx.conf
将下面内容中前面的注释符“#”去掉
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
将下面一行前的注释符“#”去掉,并在其后面 添加“application/javascript”
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
改后内容为:
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
是否开启gzip,差别很大。OE首页加载的http://127.0.0.1/web/webclient/js开启前文件大小是1.4M ,开启后大小是 350.6 KB。
下面是一个完整的 nginx.conf 文件内容
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
#添加一个类型 application/javascript
gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
}
1.7.2.3 修改default配置文件
# vi /etc/nginx/sites-available/default
-------------------- default 文件内容---------------------------
upstream oeserver{
server 127.0.0.1:8069;
}
server {
listen 80;
server_name _;
root /usr/lib/python2.7/dist-packages/odoo/addons;
location /{
proxy_pass http://oeserver;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 3000;
}
location /longpolling/{
proxy_pass http:// 192.168.1.105 :8072/longpolling/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
上面内容中加粗并带下划线的部分是需要根据自己的实际情况进行修改的部分。
本例是使用的80端口来代理的Odoo服务,如果使用其它端口,如8080,修要将“listen 80;”改成listen 8080;”;另外将“proxy_set_header Host $host;”改成“proxy_set_header Host $host:8080;”。
重启nginx服务。
# service nginx restart
现在你就可以通过直接输入其IP地址来访问Odoo服务了。
1.7.3 注意事项
重启Odoo服务后,需要重启下Nginx,此代理才能正常工作。
1.7.4 常见错误及解决办法
CPU limit out,不要急着升级 CPU,修改 odoo.conf 里的 limit_time_cpu 即可。
Nginx 504错误,修改Nginx配置里的timeout时间。
Nginx 502错误,跟Nginx无关,修改odoo.conf里的limit_time_real即可
文章编辑:PS Cloud——源自欧洲,连接中国。开源云ERP,赋能成长型企业。
https://www.mypscloud.com