[quote author=wangbuke link=topic=16486.msg28416#msg28416 date=1404742770]
[quote author=cialuo link=topic=16486.msg28409#msg28409 date=1404720343]
centos下安装绿色版的odoo的时候,不要用root账户来安装,不然会因为安装不上pqsql,切换成普通用户后就可以正常使用了. 还有不能修改文件夹的属性为777,最好是自己用普通用户来登陆,解压到/home/user下面,然后直接安装start.sh
[/quote]
我多罗嗦下:
1、由于安全限制 pgsql 的data 目录,不能是 777 权限。
2、如果使用 chmod 777 xxx 会导致 pgsql 启动失败。
3、推荐的做法是使用 chown 命令,如:以 oeuser 用户启动,使用命令 $ sudo chown oeuser:oeuser ~/greenodoo -R 修改owner 即可。
[/quote]
大神可以考虑把PG去掉,我觉得OE最麻烦的倒是那么多依赖库,PG问题倒不是很大
stone2009
-
Centos下安装绿色版odoo的小贴士 -
CentOS6.5下源代码安装OE7+nginx代理配置+防火墙配置+自动备份以前根据自己的安装经历并且在很多坛友的帮助下写过一篇《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_buffers2)
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] -
CentOS6.4下源代码安装以及nginx配置[quote author=殊途 link=topic=7293.msg18922#msg18922 date=1375611373]
启动时报错:
# service oe7server start
Starting OpenERP Server Daemon (openerp-server): execvp: No such file or directory
[ OK ]
关闭或者重启时报错:
# service oe7server restart
Stopping OpenERP Server Daemon (openerp-server): cat: /var/run/openerp/openerp-server.pid: No such file or directory
[FAILED]
Starting OpenERP Server Daemon (openerp-server): execvp: No such file or directory
[ OK ]
在线求助。
[/quote]
你这个貌似也是权限问题造成的,execvp这个函数报错一般都是调用的文件可能因为目录权限问题造成无法访问
PID文件如果不能创建则肯定是/var/run/openerp目录权限不够,这个文件是为系统服务关闭的时候提供进程号作用的
你仔细检查一下各个关键目录的权限以及目录的属主 -
CentOS6.4下源代码安装以及nginx配置[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用户 -
CentOS6.4下源代码安装以及nginx配置[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 -
CentOS6.4下源代码安装以及nginx配置[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,这时候日志会追加信息
一般服务起不来多半跟端口占用或者缺少软件包有关,如果严格按照上述按住步骤来的话,软件包缺少的可能性较小,你检查一下是否端口被占用了 -
关于OE7中销售员权限及默认值问题[quote author=digitalsatori link=topic=7321.msg16749#msg16749 date=1372082679]
[quote][font=Verdana][size=13px]至于1和2的domain很好实现[/size][/font][font=Verdana][/size][size=13px]1、['|',('user_id','=',user.id),('name','=',user.name)] #该规则使销售员只能看见自己名下的客户资料以及自己的资料[/size][/font][/quote][font=Verdana][size=13px]
刚学习就很有心得,赞一个。
这里[font=verdana, arial, helvetica, sans-serif][/size][size=78%] http://cn.openerp.cn/record_rule/ 多考虑了一点,就是客户可以有公司和联系人两层关系的情况,供你参考。[/size][size=13px][/font][/size][/font]
[/quote]
仔细看了看这篇文章,受益匪浅,再次感谢
我想是不是还应该加个条件啊,因为如果有user_id == False的条件,会让OE的系统用户也被罗列进来,这样会让销售员能看到OE里面的所有用户,这也不合适
所以我的帖子里面加了个user_id=user.id | name=user.name条件 -
关于OE7中销售员权限及默认值问题[quote author=Jeff link=topic=7321.msg16743#msg16743 date=1372081556]
建议写一个模块实现这个功能,不要在界面管理器里改动。
[/quote]
你的意思是在现有的sale模块上扩展这个功能?以便与将来系统更新和升级么? -
关于OE7中销售员权限及默认值问题[quote author=digitalsatori link=topic=7321.msg16749#msg16749 date=1372082679]
[quote][font=Verdana][size=13px]至于1和2的domain很好实现[/size][/font][font=Verdana][/size][size=13px]1、['|',('user_id','=',user.id),('name','=',user.name)] #该规则使销售员只能看见自己名下的客户资料以及自己的资料[/size][/font][/quote][font=Verdana][size=13px]
刚学习就很有心得,赞一个。
这里[font=verdana, arial, helvetica, sans-serif][/size][size=78%] http://cn.openerp.cn/record_rule/ 多考虑了一点,就是客户可以有公司和联系人两层关系的情况,供你参考。[/size][size=13px][/font][/size][/font]
[/quote]
谢谢,我学习学习 -
关于OE7中销售员权限及默认值问题刚刚接触OE7不久,对系统还不怎么熟悉,在论坛各位大婶的帮助下总算把自己的默认值问题搞定了,先分享一下,希望对大家有用
业务需求如下:
1、销售员只能创建属于自己的客户资料(包括公司),并且只能看到属于自己的客户资料
2、销售经理能创建属于其销售团队成员的客户资料,并且可以看到其销售团队下的所有客户资料
至于1和2的domain的实现(根据Joshua的指点 http://cn.openerp.cn/record_rule/ ,在原帖子上做了些完善)
1、销售员只能看见自己名下的客户资料或者自己名下公司的资料以及公司名下的客户资料(但是不包括公司名下属于其他销售员的客户资料)以及自己的资料
规则一:(user_id=user.id) #该规则表示客户被指定的销售员为登录帐号销售员
[size=14pt][b]或[/b][/size]
规则二:(user_id==False & parent_id.user_id == user.id) #该规则表示客户未指定销售员但是该客户公司的销售员被指定为当前登录帐号销售员
[size=14pt][b]或[/b][/size]
规则三:(user_id==False & parent_id.user_id==False) #该规则表示客户未指定销售员并且该客户公司的销售员也未指定(这是野人。。。)
[size=14pt][b]或[/b][/size]
规则四:(user_id==False & parent_id==False) #该规则表示客户未指定销售员并且没有公司
对于真正的客户(非OE用户)来说上述四条足够满足要求了,但是针对OE用户,我希望销售员只应该看见自己而不要看见其他销售员同事,所以需要增加一条
修改规则三(野人范畴):(user_id==False & parent_id.user_id==False & name=user.name) #该规则表示业务伙伴(包含了公司同事)未指定销售员并且该业务伙伴公司也未指定销售员并且业务伙伴名称为当前登陆账号名称(其实说了半天就是为了筛选出自己)
修改规则四 :(user_id==False & parent_id==False & name=user.name) #无销售员无公司的当前用户
完整的Domain:['|','|','|',('user_id','=',user.id),'&',('user_id','=',False),('parent_id.user_id','=',user.id),'&','&',('user_id','=',False),('parent_id.user_id','=',False),('name','=',user.name),'&','&',('user_id','=',False),('parent_id','=',False),('name','=',user.name)]
2、['|',('section_id.member_ids','in',user.id),('section_id','=',False)] #该规则使销售经理能看到其管辖下的整个销售团队的资料(需要创建销售团队,并且授予销售团队经理权限)或者是无团队的野人
OK,我们的业务要求所有销售员创建的客户资料必须都是自己的客户,那么“销售员”字段必须为必选,可以在管理视图里面修改
[attachimg=1]
这样“销售员”字段为必选,那么带来了一个麻烦事,每次用户都要做选择,所以我们应该让当前销售员创建客户资料的时候自动选择自己为“销售员”
打开openerp/addons/sale/res_partner.py文件
添加默认值
[attachimg=2]
现在就可以了,这样任何能够创建客户资料的帐号都会将自己默认设为客户资料的”销售员“
[attachimg=3]
但是有个新的问题,当admin用户创建user的时候它也会默认把partner里面的user_id字段设置为admin,会造成创建的帐号无法创建和访问自己(因为被规则过滤掉了,规则认为自己是别人的客户--admin创建,所以是admin的客户,所以不能访问),
由于res.user继承自res.partner,所以我们在res.user里面将父类(res.partner)的默认值再次覆盖掉
打开文件openerp/addons/base/res/res_user.py
在_defaults字段添加一个字段user_id,如下图:
[attachimg=4]
至此默认值问题算是完美的解决了
[color=green][b][size=12pt]在此感谢 Joshua、Pepsi、小奥[/size][/b][/color] -
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]