天天看點

ODOO配置檔案/etc/odoo.conf配置詳解

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