跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 安装指南
  4. 使用Nginx Upstream 部署 OpenERP

使用Nginx Upstream 部署 OpenERP

已定时 已固定 已锁定 已移动 Odoo 安装指南
12 帖子 7 发布者 16.0k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • W 离线
    W 离线
    wangbuke
    写于 最后由 编辑
    #1

    Openerp 6.1 使用werkzeug 作为web服务的框架,性能比之前的cherrypy 有了很大的改善。但无论是 werkzeug 还是cherrypy ,都不是专门的web服务器。通常的做法是在openerp 之前加一个 Nginx、Apache或其他服务器。下面介绍使用Nginx Upstream 部署openerp 的方法。

    一 前提

    此处假设您已经安装好 openerp ,并运行在 127.0.0.1:8069

    二 安装Nginx

    debian/ubuntu:
    # apt-get install nginx

    redhat/centos:
    # yum install nginx

    三 配置Nginx
    1、修改/etc/nginx/nginx.conf ,开启gzip 压缩

    <br /># vi /etc/nginx/nginx.conf<br /><br />--------------nginx.conf 需修改内容节选--------------------------<br />&nbsp; &nbsp; &nbsp; &nbsp; gzip on;<br />&nbsp; &nbsp; &nbsp; &nbsp; gzip_disable &quot;msie6&quot;;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; gzip_vary on;<br />&nbsp; &nbsp; &nbsp; &nbsp; gzip_proxied any;<br />&nbsp; &nbsp; &nbsp; &nbsp; gzip_comp_level 6;<br />&nbsp; &nbsp; &nbsp; &nbsp; gzip_buffers 16 8k;<br />&nbsp; &nbsp; &nbsp; &nbsp; gzip_http_version 1.1;<br />&nbsp; &nbsp; &nbsp; &nbsp; #添加一个类型 application/javascript<br />&nbsp; &nbsp; &nbsp; &nbsp; gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;<br />
    


    吐槽一下,是否开启gzip,差别真不小。oe 首页加载的http://127.0.0.1/web/webclient/js 开启前文件大小是 1.4M , 开启后大小是350.6 KB (通过firebug 查看)。

    2、建立 openerp 配置文件

    <br /># touch /etc/nginx/sites-enabled/openerp<br /># vi /etc/nginx/sites-enabled/openerp<br /><br />--------------------openerp 文件内容---------------------------<br /><br />proxy_temp_path /tmp/nginx_proxy_temp;<br />proxy_cache_path&nbsp; /tmp/nginx_proxy_cache levels=1:2&nbsp; keys_zone=oecache:100m inactive=3d max_size=1000m;<br /><br />proxy_buffer_size&nbsp; &nbsp;  32k;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #设置代理服务器(nginx)保存用户头信息的缓冲区大小<br />proxy_buffers&nbsp; &nbsp; &nbsp; &nbsp;  4 32k;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置<br />proxy_busy_buffers_size&nbsp; 64k;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  #高负荷下缓冲大小(proxy_buffers*2)<br />proxy_temp_file_write_size&nbsp; 64k;&nbsp; &nbsp; &nbsp;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传<br /><br />proxy_connect_timeout&nbsp; &nbsp; &nbsp; 60;<br />proxy_send_timeout&nbsp; &nbsp; &nbsp; &nbsp;  60;<br />proxy_read_timeout&nbsp; &nbsp; &nbsp; &nbsp;  3000;<br /><br />upstream oeserver{<br />&nbsp; &nbsp; &nbsp; &nbsp; server 127.0.0.1:8069;<br />}<br /><br />server {<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; server_name&nbsp; www.example.com;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; root /var/www/openerp-6.1-1/openerp/addons;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; location /{<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_cache&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; oecache;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #proxy_cache_key &quot;$host$request_uri$request_body&quot;;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_cache_key $host$request_uri$request_body;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_cache_valid&nbsp; 200 304 1d;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_cache_valid&nbsp; any&nbsp;  1d;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_next_upstream http_502 http_504 error timeout invalid_header;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_pass_header Set-Cookie;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_set_header&nbsp;  Host&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  $host;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_set_header&nbsp;  X-Real-IP&nbsp; &nbsp; &nbsp; &nbsp; $remote_addr;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_set_header&nbsp;  X-Forwarded-For&nbsp; $proxy_add_x_forwarded_for;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_redirect&nbsp; off;<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_pass [检测到链接无效,已移除] br /><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_buffering on;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_cache_valid&nbsp; &nbsp; &nbsp;  1d;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; expires 1d;<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br /><br />&nbsp; &nbsp; &nbsp; &nbsp; location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_buffering on;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; proxy_cache_valid&nbsp; &nbsp; &nbsp;  1d;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; expires 1d;<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br /><br />}<br />
    



    完成 !

        Nginx 此处仅仅是作为 openerp 的前端WEB服务器,Nginx 还有更大的作用是可以实现Openerp 的负载平衡。此处按下不表,呵呵

    1 条回复 最后回复
    0
    • J 离线
      J 离线
      jinxiu89163.com
      写于 最后由 编辑
      #2

      我找这个东西很久了哦,哈哈,谢谢你的启发。!

      1 条回复 最后回复
      0
      • digitalsatoriD 离线
        digitalsatoriD 离线
        digitalsatori 管理员
        写于 最后由 编辑
        #3

        wangbuke兄确实是强人。我对Nginx的设置还不是很精通,有几点疑问向你请教:
        1. 设置中的root应该是没有用的吧?
        2. cache一般是用于cache静态文件的,静态文件的目录如何设置?
        3. proxy_cache_valid设一天,对系统和内存资源有什么样的影响?

        【上海先安科技】(tony AT openerp.cn)

        1 条回复 最后回复
        0
        • W 离线
          W 离线
          wangbuke
          写于 最后由 编辑
          #4

          谢谢校长关注~

          Q1. 设置中的root应该是没有用的吧?
          A1: 有用,否则您会发现 css jpg 等静态文件没法显示。

          Q2. cache一般是用于cache静态文件的,静态文件的目录如何设置?
          A2: 
          location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
                          proxy_buffering on;
                          proxy_cache_valid      1d;
                          expires 1d;
          }
          这部分其实已经将静态文件缓存了。

          location /{
                          proxy_buffering on;
                          proxy_cache_valid      1d;
                          expires 1d;
          }
          这里面的我的策略比较激进,这里默认会缓存 http get 请求,但oe 都是通过ajax http post 来获取的。所以这里缓存的只是少量的 html 代码。
          我测试的话,这里缓存是无害的。担心的话,可以将 / 里面的缓存语句删除。但建议保留静态文件缓存。

          Q3. proxy_cache_valid设一天,对系统和内存资源有什么样的影响?
          A3: 影响基本忽略不计。。。

          1 条回复 最后回复
          0
          • digitalsatoriD 离线
            digitalsatoriD 离线
            digitalsatori 管理员
            写于 最后由 编辑
            #5

            谢谢wangbuke的详细解答,我也试试

            【上海先安科技】(tony AT openerp.cn)

            1 条回复 最后回复
            0
            • N 离线
              N 离线
              NewMoon
              写于 最后由 编辑
              #6

              OpenERP6.0的CherryPy能和web服务器配合使用吗?6.0貌似不符合WSGI吧?

              1 条回复 最后回复
              0
              • W 离线
                W 离线
                wangbuke
                写于 最后由 编辑
                #7

                wsgi 是一个标准,一般的框架如 web.py 或 cherrypy 等都自带了  wsgi container。

                nginx upstream 其实就是个反向代理,与 wsgi 无关。

                在这里其实用nginx 主要是用于:
                1、管理连接
                2、开启GZIP
                3、直接处理并缓存静态文件
                4、将其他请求转发到后面的 server

                1 条回复 最后回复
                0
                • L 离线
                  L 离线
                  linx124
                  写于 最后由 编辑
                  #8

                  谢谢~~~标记学习

                  1 条回复 最后回复
                  0
                  • 天 离线
                    天 离线
                    天火同人
                    写于 最后由 编辑
                    #9

                    [quote author=wangbuke link=topic=4251.msg11587#msg11587 date=1342603313]

                    location /{
                                    proxy_buffering on;
                                    proxy_cache_valid      1d;
                                    expires 1d;
                    }

                    直接域名不带端口访问的时候,这个缓存设置我发现会导致登陆和注销的异常,无法登陆和登出。 带端口访问的时候,这个缓存设置没有影响。
                    报告一下

                    1 条回复 最后回复
                    0
                    • Z 离线
                      Z 离线
                      zzwqw
                      写于 最后由 编辑
                      #10

                      location /{
                                      proxy_buffering on;
                                      proxy_cache_valid      1d;
                                      expires 1d;
                      }
                      这里面的我的策略比较激进,这里默认会缓存 http get 请求,但oe 都是通过ajax http post 来获取的。所以这里缓存的只是少量的 html 代码。
                      我测试的话,这里缓存是无害的。担心的话,可以将 / 里面的缓存语句删除。但建议保留静态文件缓存。

                      在ubuntu14上安装ODOO8.0 上面的这段代码不注释的话,登录后台会有很多意想不到的后果。注释掉后就正常了。可是不能正常显示网站的logo,请楼主看看什么原因,谢谢

                      1 条回复 最后回复
                      0
                      • Z 离线
                        Z 离线
                        zzwqw
                        写于 最后由 编辑
                        #11

                        location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
                                        proxy_buffering on;
                                        proxy_cache_valid      1d;
                                        expires 1d;
                        }

                        经测试,这段代码有问题,ubuntu14.04 odoo8.0  出现链接错误,包括楼上的问题,也是这个引起的。请楼主或大侠解惑。

                        1 条回复 最后回复
                        0

                        • 登录

                        • 没有帐号? 注册

                        • 登录或注册以进行搜索。
                        • 第一个帖子
                          最后一个帖子
                        0
                        • 版块
                        • 标签
                        • 热门
                        • 用户
                        • 群组