CentOS6.4下源代码安装以及nginx配置
-
以前网上有个centos下的自动安装脚本,脚本本身应该是正确的,但是可能在多人转载后,中间有信息遗漏或者丢失,所以造成脚本失败,不能直接用
我把自己在CentOS下源代码安装OE以及与nginx整合的操作步骤拿出来分享一下,如有谬误,请坛友多指正
[size=12pt][b]第一部分,安装OE[/b][/size]
说明:CentOS版本为6.4版本,命令行采用bash,PostgreSQL为9.2版本,Nginx为1.4版本
1、CentOS 的安装选项有最小化安装、基本服务器安装、虚拟主机安装等等的,我这里采用的是基本服务器安装(带的东西较少,其实我们也只需要网络能联通加上yum可用即可)
2、安装postgresql9.2(默认的8.4版本我没试过,我一般都是把默认的8.4给卸载掉,下文中pg就代表postgresql-9.2)
注意:#代表root用户命令行状态(不做特别说明了),中间会涉及到切换到其他用户
#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数据库
#service postgresql-9.3 start //启动pg服务
#chkconfig postgresql-9.3 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 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库,也有一部分其他依赖库
#wget [检测到链接无效,已移除] //这东西起什么作用我也不清楚,不过它很好安装
#unzip gdata-2.0.18.zip
#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源代码包
#mkdir /opt/oe7
#cp -R openerp*/{openerp,install/{openerp-server.init,openerp-server.conf},openerp-server,setup.py} /opt/oe7 //将我们需要的文件拷贝到安装目录
#adduser openerp //创建openerp用户,它与postgres创建的openerp是关联的
#chown openerp:openerp /opt/oe7 -R //将OE安装目录下的所有文件所有者设定为openerp用户
#cd /opt/oe7
#chmod u+x openerp-server.init //.init文件是oe的一个启动脚本,需要给它设置可执行权限
#mv openerp-server.init /etc/init.d/oe7server
#chkconfig oe7server on //将oe加入CentOS启动列表
#cp openerp-server.conf /etc //将OE的配置文件拷贝到/etc目录下,如果想自定义配置文件路径可以通过给openerp-server设置选项或者修改openerp-server.init文件里面的路径来实现,这里采用的方法不用做修改,较为简单
;;到这里OE基本上安装完成了
#service oe7server start //启动OE,这时候应该可以通过浏览器访问OE了
[size=12pt][b]第二部分,安装Nginx[/b][/size]
OE本身自带的webserver效能较低,在前端采用nginx做代理
#yum install nginx //nginx安装很简单
配置/etc/nginx/nginx.conf文件,如果只是为OE服务,建议一个配置文件即可,步科的多文件配置方式是在ubuntu上测试的,在CentOS上缺少相关目录(当然应该是我不熟)
;;/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/oe7/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_buffers2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
}
}
#service nginx start
[size=14pt]OK,现在可以通过nginx来访问OE了
如果加上花生壳软件,再配置路由器端口映射,外网就可以通过域名来访问内网OE了[/size] -
已保存到印象笔记中
-
[quote author=Jeff link=topic=7293.msg16747#msg16747 date=1372082025]
转载到我的博客了,谢谢楼主好文章。
[/quote]
你的博客是??? -
[quote author=jinyong link=topic=7293.msg16765#msg16765 date=1372237230]
楼主我按照你的方法装了一遍启动服务的时候报错如下:
[root@fedorasystem oe7]# service oe7server start
Starting oe7server (via systemctl): Job for oe7server.service failed. See 'systemctl status oe7server.service' and 'journalctl -xn' for details.
[失败]
系统是 fedora 18
[/quote]
我要申明一下,我这个步骤只是我在CentOS6.4下面亲测(因为服务器LINUX我还是偏向CentOS的,所以将我的经验拿来分享一下),至于fedora我没有测试过,上面我把每一个步骤干什么都写清楚了,你要注意一下版本(特别是x86_64跟i686),至于其他版本的LINUX我不能保证啊
个人建议:通过日志来排查错误
你可以看两个日志文件一个是oe7的,默认/var/log/openerp/open-XXX.log (如果你指定了日志文件,请检查指定的位置)
另一个是系统的日志文件,/var/log/messages
可以用tail -f logfile 命令来等待日志追加,然后在执行service oe7server start,这时候日志会追加信息
一般服务起不来多半跟端口占用或者缺少软件包有关,如果严格按照上述按住步骤来的话,软件包缺少的可能性较小,你检查一下是否端口被占用了 -
楼主的模块安装命令有不少重复和错误的包名字,
更正下:
# yum 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
顺便当自己的笔记。 -
[quote author=wangbuke link=topic=7293.msg16770#msg16770 date=1372255475]
楼主的模块安装命令有不少重复和错误的包名字,
更正下:
# yum 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
顺便当自己的笔记。
[/quote]
Thank you -
这次换了centons6.4 64位 完全按照楼主的方法操作启动的时候提示如下:
[root@mazenserver oe7]# service oe7server start
启动 OpenERP Server Daemon (openerp-server): [确定]
[root@mazenserver oe7]# ERROR: couldn't create the logfile directory. Logging to the standard output.
2013-06-29 19:53:34,416 1935 INFO ? openerp: OpenERP version 7.0-20130703-231023
2013-06-29 19:53:34,416 1935 INFO ? openerp: addons paths: /usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/addons
2013-06-29 19:53:34,416 1935 INFO ? openerp: database hostname: localhost
2013-06-29 19:53:34,416 1935 INFO ? openerp: database port: 5432
2013-06-29 19:53:34,416 1935 INFO ? openerp: database user: openerp
Traceback (most recent call last):
File "/usr/bin/openerp-server", line 5, in <module>
pkg_resources.run_script('openerp==7.0-20130703-231023', 'openerp-server')
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 461, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 1194, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/EGG-INFO/scripts/openerp-server", line 5, in <module>
openerp.cli.main()
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/cli/init.py", line 61, in main
o.run(args)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/cli/server.py", line 265, in run
main(args)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/cli/server.py", line 245, in main
setup_pid_file()
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/cli/server.py", line 88, in setup_pid_file
fd = open(config['pidfile'], 'w')
IOError: [Errno 2] 没有那个文件或目录: '/var/run/openerp/openerp-server.pid' -
[quote author=jinyong link=topic=7293.msg16851#msg16851 date=1372908239]
这次换了centons6.4 64位 完全按照楼主的方法操作启动的时候提示如下:
[root@mazenserver oe7]# service oe7server start
启动 OpenERP Server Daemon (openerp-server): [确定]
[root@mazenserver oe7]# ERROR: couldn't create the logfile directory. Logging to the standard output.
2013-06-29 19:53:34,416 1935 INFO ? openerp: OpenERP version 7.0-20130703-231023
2013-06-29 19:53:34,416 1935 INFO ? openerp: addons paths: /usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/addons
2013-06-29 19:53:34,416 1935 INFO ? openerp: database hostname: localhost
2013-06-29 19:53:34,416 1935 INFO ? openerp: database port: 5432
2013-06-29 19:53:34,416 1935 INFO ? openerp: database user: openerp
Traceback (most recent call last):
File "/usr/bin/openerp-server", line 5, in <module>
pkg_resources.run_script('openerp==7.0-20130703-231023', 'openerp-server')
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 461, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 1194, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/EGG-INFO/scripts/openerp-server", line 5, in <module>
openerp.cli.main()
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/cli/init.py", line 61, in main
o.run(args)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/cli/server.py", line 265, in run
main(args)
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/cli/server.py", line 245, in main
setup_pid_file()
File "/usr/lib/python2.6/site-packages/openerp-7.0_20130703_231023-py2.6.egg/openerp/cli/server.py", line 88, in setup_pid_file
fd = open(config['pidfile'], 'w')
IOError: [Errno 2] 没有那个文件或目录: '/var/run/openerp/openerp-server.pid'
[/quote]
基本上可以确定是权限问题,我原帖里面没有说关于日志的默认输出路径以及权限设置
默认情况下oe的日志输出路径为/var/log/openerp/openerp-server.log
“[color=red][root@mazenserver oe7]# ERROR: couldn't create the logfile directory. Logging to the standard output.[/color]”
这个错误提示说的是不能创建日志文件目录,日志记录到标准输出(也就是屏幕),这基本上说明是权限不够的问题
这个提示同时也表明如果日志文件不能创建,其实并不影响OE启动
“[color=red]IOError: [Errno 2] 没有那个文件或目录: '/var/run/openerp/openerp-server.pid'[/color]”这个错误说明OE启动的时候无法创建这个文件导致的
每次OE启动会创建一个PID文件,这个文件里面只有一个数值,就是当前启动成功后的OE进程ID。这个文件无法创建应该是影响OE启动的
请你在/var/run/目录下创建一个openerp目录,并且把它授权给你的oe用户
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login