跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. CentOS6.5下源代码安装OE7+nginx代理配置+防火墙配置+自动备份

CentOS6.5下源代码安装OE7+nginx代理配置+防火墙配置+自动备份

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

    以前根据自己的安装经历并且在很多坛友的帮助下写过一篇《CentOS6.4下源代码安装以及nginx配置》,论坛版主抬爱,给置顶了,本人倍感荣幸, :)。

    [color=orange]最近由于疏忽大意,结果服务器被黑了(被捉去当了肉鸡,  😠 ),为了安全起见只好把系统重做,这次顺带把这次安装经历更新到论坛,希望能给有需要新安装OE的坛友做个参考,如有谬误,请坛友多指正[/color]

    [size=18pt][b]整个部署分四个部分 安装OE、安装Nginx、安装防火墙iptables、配置自动备份脚本[/b][/size]

    [size=18pt][b]第一部分,安装OE[/b][/size]
    [color=navy][b]说明:CentOS版本为6.5版本,命令行采用bash,PostgreSQL为9.3版本,Nginx为1.4.7版本[/b][/color]

    [b]1、[/b]CentOS 的安装选项有最小化安装、基本服务器安装、虚拟主机安装等等的,我这里采用的是基本服务器安装(带的东西较少,其实我们也只需要网络能联通加上yum可用即可)
    [b]2、[/b]安装postgresql9.3

    [color=navy]注意:#代表root用户命令行状态(不做特别说明了),中间会涉及到切换到其他用户[/color]

    #cd /tmp              //进入tmp目录,这是系统的临时目录,里面的文件不重要,即使误删危害也不大,所以推荐在tmp目录下做临时性操作
    #yum remove postgres  //卸载原有的pg,如果pg默认没有安装这条命令则无视
    #rpm -Uvh [检测到链接无效,已移除] //RPM方式从网络上安装pg的RPM包
    #yum -y install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel //使用yum安装相关依赖包
    #service postgresql-9.3 initdb  //初始化pg数据库
    #cd /etc/init.d/
    #ln -sf  postgresql-9.3  pg93    //做个链接文件,这样省的名字太长敲起来麻烦
    #service pg93            start    //启动pg服务(LINUX下的服务名称就是启动目录下的文件名,即使该文件为链接文件)
    #chkconfig pg93 on                //将pg启动服务加入CentOS的启动列表,相当于windows里面的启动项

    #su - postgres                      //切换到postgres用户,该用户为安装pg时安装包自动创建的,它是pg默认的超级用户,在该用户环境下有一些管理命令
    -bash-4.1(postgres)$createuser --superuser openerp    //创建一个叫openerp的超级用户(此时创建的用户只是数据库的用户,openerp在操作系统中并不存在,请注意其中的区别)

    #rpm -ivh [检测到链接无效,已移除] //从网络上安装epel包,我这里的RPM链接是针对x86_64版本的,如果是其他版本请做对应修改
    #yum -y install  python-dateutil python-docutils python-feedparser python-imaging python-jinja2 python-ldap libxslt-python python-lxml python-mako python-mock python-openid  python-psutil python-psycopg2 python-reportlab python-yaml  pywebdav  python-vobject  python-vatnumber python-unittest2  python-simplejson pytz python-gdata python-ZSI  pychart pydot pybabel pyparsing python-werkzeug  //安装OE依赖的库,大部分都是python库,也有一部分其他依赖库


    #unzip gdata-2.0.18.zip    //google的网站都改成了https了,所以请用网页下载然后传入系统目录下
    #cd gdata-2.0.18
    #python setup.py install   

    #cd /tmp
    #rm -rf openerp*                          //清理不用的旧的openerp开头的所有文件(慎用)
    #wget [检测到链接无效,已移除] //下载OE源代码包,准备安装
    #tar xvzf openerp-7.0-latest.tar.gz          //解压OE源代码包

    #adduser openerp -d /opt/openerp                          //创建openerp用户,它与postgres创建的openerp是关联的

    #cp -R openerp*/{openerp,install/{openerp-server.init,openerp-server.conf},openerp-server,setup.py} /opt/openerp  //将我们需要的文件拷贝到安装目录

    #chown openerp:openerp  /opt/openerp -R          //将OE安装目录下的所有文件所有者设定为oe7用户

    #cd /opt/openerp
    #chmod u+x openerp-server.init          //.init文件是oe的一个启动脚本,需要给它设置可执行权限
    #ln -sf /opt/openerp/openerp-server.init    /etc/init.d/oe7server   
    #chkconfig oe7server on                  //将oe加入CentOS启动列表
    #ln -sf /opt/openerp/openerp-server.conf    /etc          //将oe目录下的配置文件做一份链接到/etc下,如果想自定义配置文件路径可以通过给openerp-server设置选项或者修改openerp-server.init文件里面的路径来实现,这里采用的方法不用做修改,较为简单
    #ln -sf /opt/openerp/openerp-server  /usr/bin/          //将OE的主执行文件链接到/usr/bin目录,主要是因为官方启动文件使用了/usr/bin目录
    ;;到这里OE基本上安装完成了
    #service oe7server start            //启动OE,这时候应该可以通过浏览器访问OE了


    [size=18pt][b]第二部分,安装Nginx[/b][/size]
    OE本身自带的webserver效能较低,在前端采用nginx做代理

    #rpm -Uvh  [检测到链接无效,已移除] //nginx安装很简单
               
    配置/etc/nginx/nginx.conf文件,如果只是为OE服务,建议一个配置文件即可

    ;;/etc/nginx/nginx.conf配置文件
    #设定http服务器,利用它的反向代理功能提供负载均衡支持

    user              nginx;
    worker_processes  1;

    error_log  /var/log/nginx/error.log;
    #error_log  /var/log/nginx/error.log  notice;
    #error_log  /var/log/nginx/error.log  info;

    pid        /var/run/nginx.pid;

    events {
        use epoll;
        worker_connections  1024;
    }

    http {
        #设定mime类型,类型由mime.type文件定义
        include      /etc/nginx/mime.types;
        default_type  application/octet-stream;
        #设定日志格式
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        sendfile        on;
        #tcp_nopush    on;

        #keepalive_timeout  0;
        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;

        # Load config files from the /etc/nginx/conf.d directory
        # The default server is in conf.d/default.conf
        include /etc/nginx/conf.d/.conf;

        upstream oe_server{
            #这里可以给出多个server,用来分担OE服务器的负担,并且还可以设定权重(具体请参考nginx配置)
            server 127.0.0.1:8069;    //这是OE提供服务的地址及端口,可以指定多个server,也就是可以使用多个OE服务器来均衡负载,但是后台数据库还是要保证在逻辑上是一台
                                    //我是因为nginx与OE在同一台机器,所以可以写成127段地址
        }

      #第一个虚拟服务器
      server {
            #侦听192.168.1.2的80端口
            listen      80;
            server_name  192.168.1.2;

            location /{
              root  /opt/openerp/openerp/addons/;      #定义服务器的默认网站根目录位置
              proxy_pass  [检测到链接无效,已移除] ;#请求转向mysvr 定义的服务器列表
              #以下是一些反向代理的配置可删除.
              proxy_redirect off;
              #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              client_max_body_size 10m;    #允许客户端请求的最大单文件字节数
              client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,
              proxy_connect_timeout 90;  #nginx跟后端服务器连接超时时间(代理连接超时)
              proxy_send_timeout 90;        #后端服务器数据回传时间(代理发送超时)
              proxy_read_timeout 90;        #连接成功后,后端服务器响应时间(代理接收超时)
              proxy_buffer_size 4k;            #设置代理服务器(nginx)保存用户头信息的缓冲区大小
              proxy_buffers 4 32k;              #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
              proxy_busy_buffers_size 64k;    #高负荷下缓冲大小(proxy_buffers
    2)
              proxy_temp_file_write_size 64k;  #设定缓存文件夹大小,大于这个值,将从upstream服务器传
            }
        }
    }


    #service nginx start 


    OK,现在可以通过nginx来访问OE了


    [size=18pt][b]第三部分,配置防火墙[/b][/size]
    ;;由于我的疏忽大意,造成服务器被黑,所以这次安装配置添加上了防火墙设置(当然防火墙不是万能的,单服务器还是不要裸奔好)
    ;;如果没有安装防火墙,请先安装
    #yum install iptables
    ;;启动防火墙
    #service iptables start

    #iptables -F  //清空防火墙所有的当前规则
    #iptables -L  //该命令可以查看当前防火墙规则
    ;;我们采用命令行的方式逐一添加防火墙规则(也可以直接编辑防火墙配置文件/etc/sysconfig/iptalbes),切记命令执行完之后请使用/etc/init.d/iptables save 来保存配置)

    #iptables -A INPUT -S 192.168.1.0/24 -j  ACCEPT    //允许内网ip访问该服务器所有端口

    #iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT  //允许所有ip访问80端口

    #iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT  //允许本地发起的连接返回数据到任意端口。本地作为客户端可以发起到任何ip和端口的请求,这条规则确保能够收到返回

    #iptables -A OUTPUT  -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT  //允许80端口返回数据

    #iptables -A OUTPUT -j ACCEPT    //允许返回数据给所有ip所有端口(上面那条就没用了)

    #iptables -P INPUT DROP    //除上面允许的规则,抛弃所有INPUT请求

    #iptables -P FORWARD DROP  //除上面允许的规则,抛弃所有FORWARD请求

    #iptables -P OUTPUT DROP    //除上面允许的规则,抛弃所有OUTPUT请求

    ;;我们可以使用iptables -L命令来查看当前防火墙规则,实际上上述规则已经及时生效的,但是必须保存,否则系统重启或者iptables重启后上述规则就丢失了
    #/etc/init.d/iptables save  //保存iptables配置

    [b];;上述命令可以写成一个shell脚本,方便以后使用[/b]


    [size=18pt][b]第四部分,自动备份[/b][/size]
    ;;我们希望系统安全,并且数据资料可以每天都自动备份好,随时准备恢复,这项工作当然希望计算机自动完成
    ;;我们编写一个脚本文件
    #vi /opt/oepenerp/oe7_backup.sh
    #!/bin/bash
    # chkconfig: 345 99 05 

    export oe7_home=awk -F ":" '$1 ~/openerp/ {print $6}' /etc/passwd

    DB_LIST="Test1 Test2"  #请在这里写上你需要备份的数据库名(不要写成跟我这里一样的,因为我们数据库名称不同,多个数据库以空格分开即可)

    for i in $DB_LIST; do
            su - openerp -c "pg_dump --format=c $i > $oe7_home/oe7_dump/oe7_"$i"$(date +%Y-%m-%d%H:%M:%S)_Z.dump"
    done;

    find ./ -mtime +30 -name "*.dump" -exec rm -rf {} ;  #删除30天以上的备份文件,以防止磁盘空间不足


    ;;记得给备份脚本添加执行权限
    #chmod u+x /opt/openerp/oe7_backup.sh

    上面这个脚本可以使用crontab设定为固定时间执行
    #crontab -e  //启动编辑,命令执行后进入一个与vi编辑器类似的命令状态,按i进入插入状态,然后输入如下规则
    30 2 * * * /opt/openerp/oe7_backup.sh

    ;;上述规则表示每天夜里2:30分定时备份
    ;;编辑完后记得保存退出
    #crontab -l  //该命令可以看到是否有定时执行的任务列表


    [size=18pt][b]至此整个OE系统配置完成[/b][/size]

    [color=green]友情提醒:上面所有的命令都是我手工敲的,所以都是可执行的(当然也可能有复制的时候造成误操作)。以前遇到很多坛友说执行不了的问题,大部分都是自身权限错误或者目录/文件不存在造成的,请坛友细心查看一下[/color]




    1 条回复 最后回复
    0
    • M 离线
      M 离线
      Mr.fong
      写于 最后由 编辑
      #2

      访问本地http://192.168.0.114/  提示 502 Bad Gateway ;
      访问本地http://192.168.0.114:8069,出现如下错误:
      Internal Server Error

      {"message": "OpenERP Server Error", "code": 200, "data": {"debug": "Server Traceback (most recent call last):\n File &quot;/opt/oe7/openerp/addons/web/session.py&quot;, line 89, in send\n return openerp.netsvc.dispatch_rpc(service_name, method, args)\n File &quot;/opt/oe7/openerp/netsvc.py&quot;, line 296, in dispatch_rpc\n result = ExportService.getService(service_name).dispatch(method, params)\n File &quot;/opt/oe7/openerp/service/web_services.py&quot;, line 122, in dispatch\n return fn(*params)\n File &quot;/opt/oe7/openerp/service/web_services.py&quot;, line 359, in exp_list\n cr = db.cursor()\n File &quot;/opt/oe7/openerp/sql_db.py&quot;, line 484, in cursor\n return Cursor(self.__pool, self.dbname, serialized=serialized)\n File &quot;/opt/oe7/openerp/sql_db.py&quot;, line 182, in init\n self._cnx = pool.borrow(dsn(dbname))\n File &quot;/opt/oe7/openerp/sql_db.py&quot;, line 377, in _locked\n return fun(self, *args, **kwargs)\n File &quot;/opt/oe7/openerp/sql_db.py&quot;, line 440, in borrow\n result = psycopg2.connect(dsn=dsn, connection_factory=PsycoConnection)\n File &quot;/usr/lib64/python2.6/site-packages/psycopg2/init.py&quot;, line 164, in connect\n conn = _connect(dsn, connection_factory=connection_factory, async=async)\nOperationalError: FATAL: role &quot;openerp&quot; does not exist\n\n\nClient Traceback (most recent call last):\n File &quot;/opt/oe7/openerp/addons/web/http.py&quot;, line 285, in dispatch\n r = method(self, **self.params)\n File &quot;/opt/oe7/openerp/addons/web/controllers/main.py&quot;, line 570, in index\n db, redir = db_monodb_redirect(req)\n File &quot;/opt/oe7/openerp/addons/web/controllers/main.py&quot;, line 98, in db_monodb_redirect\n return db_redirect(req, not config['list_db'])\n File &quot;/opt/oe7/openerp/addons/web/controllers/main.py&quot;, line 109, in db_redirect\n dbs = db_list(req, True)\n File &quot;/opt/oe7/openerp/addons/web/controllers/main.py&quot;, line 90, in db_list\n dbs = proxy.list(force)\n File &quot;/opt/oe7/openerp/addons/web/session.py&quot;, line 30, in proxy_method\n result = self.session.send(self.service_name, method, *args)\n File &quot;/opt/oe7/openerp/addons/web/session.py&quot;, line 103, in send\n raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)\nFault: <Fault FATAL: role &quot;openerp&quot; does not exist\n: 'Traceback (most recent call last):\n File &quot;/opt/oe7/openerp/addons/web/session.py&quot;, line 89, in send\n return openerp.netsvc.dispatch_rpc(service_name, method, args)\n File &quot;/opt/oe7/openerp/netsvc.py&quot;, line 296, in dispatch_rpc\n result = ExportService.getService(service_name).dispatch(method, params)\n File &quot;/opt/oe7/openerp/service/web_services.py&quot;, line 122, in dispatch\n return fn(*params)\n File &quot;/opt/oe7/openerp/service/web_services.py&quot;, line 359, in exp_list\n cr = db.cursor()\n File &quot;/opt/oe7/openerp/sql_db.py&quot;, line 484, in cursor\n return Cursor(self.__pool, self.dbname, serialized=serialized)\n File &quot;/opt/oe7/openerp/sql_db.py&quot;, line 182, in init\n self._cnx = pool.borrow(dsn(dbname))\n File &quot;/opt/oe7/openerp/sql_db.py&quot;, line 377, in _locked\n return fun(self, *args, **kwargs)\n File &quot;/opt/oe7/openerp/sql_db.py&quot;, line 440, in borrow\n result = psycopg2.connect(dsn=dsn, connection_factory=PsycoConnection)\n File &quot;/usr/lib64/python2.6/site-packages/psycopg2/init.py&quot;, line 164, in connect\n conn = _connect(dsn, connection_factory=connection_factory, async=async)\nOperationalError: FATAL: role &quot;openerp&quot; does not exist\n\n'>\n", "fault_code": "FATAL: role &quot;openerp&quot; does not exist\n", "type": "server_exception"}}
        有遇到这个问题的朋友么?麻烦指导下qq282655008,感谢!

      1 条回复 最后回复
      0

      • 登录

      • 没有帐号? 注册

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