【Odoo 8开发教程】第二章:Odoo生产环境部署设置

时间:2021-08-13 09:34:14

转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/10792977.html

一:dbfilter 数据库访问规则设置

一个odoo实例可以连接到不同的数据库实例中,但某个时间只有一个数据库为odoo实例提供服务。当一个odoo实例有多个数据库可供操作时,用户每次登录时都需要先选择一个数据库才能跳转到登陆界面,这在生产环境中会让用户产生很大的困惑。因此,我们需要在生产环境中指定一个规则,让用户只能看到一个数据库并默认连接。

在启动文件.conf中,可以通过 dbfilter(注意,无下划线) 指定一个 正则表达式 ,指定一个默认的数据库。

处理配置文件,也可以在命令行启动odoo时,通过参数 --db-filter=正则表达式 来指定一个默认数据库。

注意:对于website模块,必须指定dbfilter才能正常使用。

二:PostgreSQL 数据库连接设置

odoo与postgreSQL通过UNIX socket连接。

需要在odoo的启动配置文件.conf中配置postgreSQL的相关信息,以便odoo通过SSH连接到数据库。

db_host = 数据库ip地址
db_port = 数据库端口,默认5432
db_user = 数据库账号
db_password = 数据库秘密
db_maxconn = 数据库连接池最大容量
db_name = 指定操作的数据库,如果不指定,则在多个数据库时用户需要手动选择数据库

odoo的数据库受到超级密码保护,当在配置文件中配置了admin_passwd时,在数据库管理页面对数据库的备份、复制、删除、创建等操作都需要输入正确的admin_passwd才能继续操作。

为安全起见,一般将admin_passwd设置为随机数或者MD5加密后的字符串。

三:HTTPS 网络连接安全

odoo的数据传输和身份验证信息都需要通过https协议来保证其安全性。

我们可以使用SSL协议来加密我们的数据传输,使用Nginx作为SSL终端来实现:

1)在odoo配置文件中,启用odoo的代理模式:proxy_mode = True【注意:此时,需要odoo作为nginx反向代理的对象才行】

2)设置Ngnix反向代理,指向odoo系统的域名:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

3)将Ngnix设置成为一个HTTPS Server,并使用ssl加密传输:https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-http/

附:SSL

SSL位于应用层和传输层之间,它可以为任何基于TCP等可靠连接的应用层协议提供安全性保证。

SSL协议可分为两层:

    SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

四:Builtin Server 内置的HTTP服务器

odoo包含一个内置的HTTP服务器,支持多进程来处理工作。

我们可以在配置文件中,指定进程的worker数,来更好地利用计算资源。

worker数量应该基于机器中的核心数量(可能为cron worker提供一些空间,具体取决于预测的cron工作量)

workers = 一个非0的整数

注意:当在配置中配置了workers时,就启用了多进程模式。

五:Odoo作为WSGI应用

可以将odoo部署为一个单纯的WSGI应用,此时将不可通过http访问。

在配置文件中配置:

xmlrpc = False

或启动命令时通过参数 --no-xmlrpc 禁用网络访问。

六:提供静态文件

出于开发便捷,odoo在模块下的 static/ 文件夹中提供静态文件服务,这对性能会有稍微的影响。

我们可以通过将各个模块的静态文件提取出来,放到一个专门的HTTP服务器中管理,然后拦截所有的文件请求重定向到文件服务器中。

七:安全

数据库管理页面中可以进行数据库的创建、备份、复制、还原、删除操作,这有一定风险。

1、设置admin_passwd

我们可以在配置文件中设置admin_passwd,并且该密码必须仅掌握在系统管理员手中,使用随机生成或者MD5加密过的字符串。

2、禁止访问数据库管理页面

通过Nginx代理设置,拦截所有 /web/database/* 格式的网络请求。