ODOO配置文件/etc/odoo.conf配置详解

2021-09-13 14:37:11 浏览数 (1)

1.Dbfilter配置

Odoo是一个多租户系统:一个Odoo系统可以运行并服务于多个数据库实例。它也是高度可定制的,定制(从加载的模块开始)取决于“当前数据库”。 作为登录公司用户使用后端(web客户端)时,这不是问题:登录时可以选择数据库,然后加载自定义设置。 但是,对于没有绑定到数据库的未登录用户(门户、网站)来说,这是一个问题:Odoo需要知道应该使用哪个数据库来加载网站页面或执行操作。如果没有使用多租户,这不是问题,只有一个数据库可以使用,但是如果有多个数据库可以访问,Odoo需要一个规则来知道它应该使用哪一个。 这是--db filter的目的之一:它指定如何根据所请求的主机名(域)选择数据库。该值是一个正则表达式,可能包括动态注入的主机名(%h)或访问系统所通过的第一个子域(%d)。 对于生产中托管多个数据库的服务器,特别是在使用网站时,必须设置dbfilter,否则许多功能将无法正常工作。

下面例子以仅显示名称以“mycompany”开头的数据库

  1. [options]  
  2. dbfilter = ^mycompany.*$  

仅显示与www之后的第一个子域匹配的数据库:例如,如果传入的请求被发送到www.mycompany.com或mycompany.co.uk,则将显示数据库“mycompany”,而不是www2.mycompany.com或helpdesk.mycompany.com。

  1. [options]  
  2. dbfilter = ^%d$  

如果直接使用域名作为库名,用 ^%h$

设置正确的--db过滤器是确保部署安全的重要部分。一旦它正常工作并且每个主机名只匹配一个数据库,强烈建议阻止对数据库管理器屏幕的访问,并使用--no-database-list 启动参数阻止列出数据库,并阻止对数据库管理界面的访问。

2.PostgreSQL数据库访问配置

默认情况下,PostgreSQL只允许通过UNIX套接字和环回连接进行连接(从“localhost”,即安PostgreSQL服务器的同一台计算机)。** **如果希望Odoo和PostgreSQL在同一台计算机上执行,UNIX套接字是可以的,并且在没有提供主机时是默认的,但是如果希望Odoo和PostgreSQL在不同的计算机上执行,则需要侦听网络接口,或者:

/var/lib/pgsql/10/data/pg_hba.conf

  1. # IPv4 local connections:
  2. host    all             all             127.0.0.1/32            md5  
  3. host    all             all             192.168.1.0/24          md5  

/var/lib/pgsql/10/data/postgresql.conf

  1. port = 5432  
  2. max_connections = 80  
3.配置**Odoo**中的基本参数

Odoo通过端口5432通过UNIX套接字连接到本地postgres。当Postgres部署不是本地部署和/或不使用安装默认值时,可以使用数据库选项覆盖此设置。 打包的安装程序将自动创建一个新用户(odoo),并将其设置为数据库用户。

数据库管理界面受管理密码设置保护。此设置只能使用配置文件进行设置,并在执行数据库更改之前进行简单检查。应将其设置为随机生成的值,以确保第三方不能使用此接口。 所有数据库操作都使用数据库选项,包括数据库管理界面。要使数据库管理界面正常工作,PostgreSQL用户必须具有createdb权限。 用户总是可以删除他们拥有的数据库。要使数据库管理界面完全不起作用,需要在不使用createdb的情况下创建PostgreSQL用户,并且数据库必须由其他PostgreSQL用户拥有。

  1. [options]  
  2. admin_passwd = mysupersecretpassword  
  3. db_host = 192.168.1.2 #db_host = False
  4. db_port = 5432   #db_port = False
  5. db_user = odoo   #db_password = False
  6. db_password = pwd  
  7. dbfilter = ^mycompany.*$  
4.works内置服务器配置

Odoo包括内置的HTTP服务器,使用多线程或多处理。 对于生产使用,建议使用多处理服务器,因为它增加了稳定性,更好地利用了计算资源,并且可以更好地监视和限制资源。

多处理是通过配置非零数量的工作进程来实现的,工作进程的数量应该基于机器中的核心数量(可能有一些空间供cron工作进程使用,这取决于预测的cron工作量) 可以根据硬件配置配置工作进程限制,以避免资源耗尽。

工作进程数量计算

数量规则:(#CPU * 2) 1

Cron工作者需要CPU 1个工作进程~=6个并发用户

内存大小计算

我们认为20%的请求是繁重请求,而80%是简单请求 一个繁重的工作,当所有的计算字段都设计好了,SQL请求设计好了,…估计要消耗大约1G的RAM 在相同的情况下,一个较轻的工作估计要消耗大约150MB的RAM

Needed RAM = #worker * ( (light_worker_ratio * light_worker_ram_estimation) (heavy_worker_ratio * heavy_worker_ram_estimation) )

LiveChat

在多处理中,会自动启动一个专用的LiveChat工作进程并监听longpolling端口,但客户端不会连接到它。 相反,必须有一个代理将其URL以/longpolling/开头的请求重定向到longpolling端口。其他请求应被代理到正常的HTTP端口 要实现这一点,您需要在Odoo前面部署一个反向代理,比如nginx或apache。这样做时,您需要将更多的http头转发给Odoo,并在Odoo配置中激活代理模式,让Odoo读取这些头。

配置实例

4 CPU 8线程服务器 60个并发用户 60个用户/6=10<-理论上需要的worker数量 (4×2)+1=9<理论最大worker数 我们将使用8个workers 1作为cron。我们还将使用监控系统来测量cpu负载,并检查它是否在7到7.5之间。 RAM=9((0.8150) (0.2*1024))~=3Go RAM用于Odoo

/etc/odoo.conf

  1. [options]  
  2. limit_memory_hard = 1677721600  
  3. limit_memory_soft = 629145600  
  4. limit_request = 8192  
  5. limit_time_cpu = 600  
  6. limit_time_real = 1200  
  7. max_cron_threads = 1  
  8. workers = 8  
5.数据库日志记录配置
  1. ;是否允许显示数据库列表  
  2. list_db = True  
  3. ;是否将log写入db的ir_logging表  
  4. log_db = False  
  5. ;设置模块的日志级别,可以是一组module:log_level对, 默认值是“:INFO”(表示所有模块的默认日志级别为INFO)  
  6. log_handler = :INFO  
  7. ;日志的级别, 可选值:debug_rpc_answer, debug_rpc, debug, debug_sql, info, warn, error, critical  
  8. log_level = warning  
  9. ;指定用来存储日志的文件  
  10. logfile = /var/log/odoo/odoo-server.log
  11. ;是否按天存放日志  
  12. logrotate = True  
6.配置实例

这是一个简单的配置应用实例

  1. [options]  
  2. dbfilter = test  
  3. db_host = False  
  4. db_port = False  
  5. db_user = odoo  
  6. db_password = False  
  7. db_name = testodoodb  
  8. addons_path = /opt/odoo/odoo/addons,/opt/odoo/addons_enterprise  
  9. db_maxconn = 200  
  10. http_port = 8069  
  11. login_message = False  
  12. logfile = /var/log/odoo/odoo-server.log
  13. logrotate = True  
  14. proxy_mode = True  
  15. workers = 9   
  16. max_cron_threads = 1  
  17. longpolling_port = 8072  

0 人点赞