1. 概述
Odoo 配置文件(odoo.conf)是管理 Odoo 服務器行為的核心工具,涵蓋了網絡、安全、數據庫、性能等多方面的關鍵參數。本文檔系統梳理 Odoo 18 配置文件的主要參數,結合實際應用場景,提供權威的配置建議與最佳實踐,助力管理員和開發者高效、安全地部署 Odoo 系統。
1.1 配置文件位置
Odoo 配置文件的位置取決于安裝方式:
- 包安裝(apt/deb):
/etc/odoo/odoo.conf
- 源碼安裝:
$HOME/.odoorc
或命令行指定的位置 - Docker 安裝:通常掛載為容器內的
/etc/odoo/odoo.conf
1.2 配置文件基本結構
Odoo 配置文件采用 INI 格式,主要包含 [options]
部分:
[options]
# 網絡配置
http_port = 8069
proxy_mode = False# 數據庫配置
db_host = localhost
db_port = 5432
db_user = odoo
db_password = odoo# 其他配置...
2. 配置參數詳解
2.1 網絡與 Web 界面選項
這些參數控制 Odoo 的網絡行為、HTTP/HTTPS 設置及 Web 服務器配置。
參數 | 描述 | 默認值 | 取值范圍 | 應用場景 |
---|---|---|---|---|
http_port | Odoo HTTP 服務器監聽端口 | 8069 | 1-65535 | 更改默認端口以避免沖突或提升安全性 |
http_interface | 綁定的網絡接口 | 0.0.0.0(所有接口) | IP 地址 | 限制 Odoo 僅在特定網絡接口監聽 |
proxy_mode | 反向代理模式 | False | True/False | Odoo 位于 Nginx/Apache 等反向代理后時設為 True |
xmlrpc | 啟用 XML-RPC 接口 | True | True/False | 禁用可提升安全性,但會影響 API 訪問 |
xmlrpc_interface | XML-RPC 綁定接口 | 同 http_interface | IP 地址 | 限制 API 訪問的網絡接口 |
xmlrpc_port | XML-RPC 端口 | 同 http_port | 1-65535 | 分離 API 與 Web 界面端口 |
longpolling_port | 長輪詢端口 | 8072 | 1-65535 | 用于實時通知,如聊天功能 |
gevent_port | Gevent 工作端口 | 8072 | 1-65535 | 用于異步處理 |
limit_request | 最大并發請求數 | 8192 | 整數 | 高流量站點可適當增加 |
limit_time_real | 請求超時時間(秒) | 120 | 整數 | 長時間操作可適當增加 |
server_wide_modules | 服務器級別模塊 | web,web_kanban | 模塊名列表 | 所有數據庫需加載的模塊 |
應用示例:
[options]
# 生產環境網絡配置
http_port = 8069
proxy_mode = True
xmlrpc_port = 8070
longpolling_port = 8072
limit_request = 16384
limit_time_real = 300
最佳實踐建議:
- 生產環境部署反向代理時,務必啟用
proxy_mode
。 - 若無 API 需求,建議關閉
xmlrpc
,提升安全性。 - 高并發場景下,適當提升
limit_request
和limit_time_real
。
2.2 數據庫選項
這些參數控制 Odoo 與 PostgreSQL 數據庫的連接與交互。
參數 | 描述 | 默認值 | 取值范圍 | 應用場景 |
---|---|---|---|---|
db_host | 數據庫服務器地址 | localhost | 主機名/IP | 連接遠程數據庫 |
db_port | 數據庫服務器端口 | 5432 | 1-65535 | 非標準 PostgreSQL 端口 |
db_user | 數據庫用戶名 | odoo | 字符串 | 指定數據庫訪問憑證 |
db_password | 數據庫密碼 | odoo | 字符串 | 指定數據庫訪問憑證 |
db_name | 默認數據庫 | False | 數據庫名 | 自動連接特定數據庫 |
db_template | 創建數據庫的模板 | template0 | template0/template1 | 自定義數據庫模板 |
db_maxconn | 最大數據庫連接數 | 64 | 整數 | 高并發環境可適當增加 |
db_sslmode | PostgreSQL SSL 模式 | prefer | disable/allow/prefer/require/verify-ca/verify-full | 增強數據庫連接安全性 |
dbfilter | 數據庫過濾正則 | .* | 正則表達式 | 多租戶環境按域名過濾數據庫 |
list_db | 是否顯示數據庫列表 | True | True/False | 生產環境建議設為 False |
應用示例:
[options]
# 生產環境數據庫配置
db_host = 10.0.0.5
db_port = 5432
db_user = odoo_user
db_password = secure_password
db_maxconn = 128
db_sslmode = require
dbfilter = ^%d$
list_db = False
最佳實踐建議:
- 生產環境使用專用數據庫用戶,避免默認賬戶。
db_maxconn
不應超過 PostgreSQL 的max_connections
。- 多租戶環境建議
dbfilter = ^%d$
,實現按域名自動選擇數據庫。 - 生產環境建議關閉數據庫列表(
list_db = False
)。
2.3 日志選項
這些參數控制 Odoo 的日志記錄行為,對于調試和監控系統運行狀態至關重要。
參數 | 描述 | 默認值 | 取值范圍 | 應用場景 |
---|---|---|---|---|
logfile | 日志文件路徑 | None | 文件路徑 | 日志輸出到文件 |
log_level | 日志級別 | info | debug/info/warning/error/critical | 調試用 debug,生產用 warning |
log_handler | 日志處理器 | :INFO | 格式:[級別] | 自定義不同模塊日志級別 |
log_db | 記錄到數據庫 | False | True/False | 日志存儲到數據庫(影響性能) |
log_db_level | 數據庫日志級別 | warning | debug/info/warning/error/critical | 控制寫入數據庫的日志級別 |
syslog | 使用系統日志 | False | True/False | 日志發送到系統日志服務 |
log_json | JSON 格式日志 | False | True/False | 生成機器可讀 JSON 日志 |
應用示例:
[options]
# 生產環境日志配置
logfile = /var/log/odoo/odoo.log
log_level = warning
log_handler = werkzeug:ERROR,odoo.addons:WARNING
syslog = True
最佳實踐建議:
- 生產環境建議指定
logfile
并配置日志輪轉。 - 開發環境用
log_level = debug
,生產環境用warning
或error
。 - 使用
log_handler
為特定模塊設置不同日志級別。 - 可啟用
syslog
集成集中式日志管理。
2.4 性能選項
這些參數直接影響 Odoo 的性能和資源使用,對于系統優化至關重要。
參數 | 描述 | 默認值 | 取值范圍 | 應用場景 |
---|---|---|---|---|
workers | 工作進程數 | 0(單進程) | 整數 | 多核服務器建議設為 CPU 核心數+1 |
max_cron_threads | 最大定時任務線程數 | 2 | 整數 | 定時任務多時可適當增加 |
limit_memory_hard | 硬內存限制(字節) | 2684354560(2.5GB) | 整數 | 防止內存泄漏導致系統不穩定 |
limit_memory_soft | 軟內存限制(字節) | 2147483648(2GB) | 整數 | 觸發內存回收 |
limit_time_cpu | CPU 時間限制(秒) | 60 | 整數 | 限制單請求 CPU 使用時間 |
limit_time_real | 實際時間限制(秒) | 120 | 整數 | 限制單請求總處理時間 |
limit_time_real_cron | 定時任務時間限制(秒) | 300 | 整數 | 長時間定時任務可適當增加 |
osv_memory_age_limit | 臨時記錄保留時間(小時) | 1.0 | 浮點數 | 控制臨時記錄生命周期 |
osv_memory_count_limit | 臨時記錄數量限制 | False | 整數/False | 限制每用戶臨時記錄數量 |
unaccent | 啟用不區分重音搜索 | False | True/False | 多語言環境下提升搜索體驗 |
應用示例:
[options]
# 8核服務器性能配置
workers = 9
max_cron_threads = 4
limit_memory_hard = 5368709120 # 5GB
limit_memory_soft = 4294967296 # 4GB
limit_time_cpu = 120
limit_time_real = 240
limit_time_real_cron = 600
最佳實踐建議:
workers = CPU 核心數 + 1
。limit_memory_hard
和limit_memory_soft
不應超過系統可用內存。- 根據負載調整
limit_time_cpu
和limit_time_real
。 - 復雜報表或批處理任務可適當提升
limit_time_real_cron
。
2.5 安全選項
這些參數控制 Odoo 的安全特性,對于系統和數據保護至關重要。
參數 | 描述 | 默認值 | 取值范圍 | 應用場景 |
---|---|---|---|---|
admin_passwd | 管理員密碼 | admin | 字符串 | 控制數據庫創建/刪除權限 |
csv_internal_sep | CSV 內部分隔符 | , | 字符 | 自定義 CSV 導入/導出分隔符 |
reportgz | 壓縮報表 | False | True/False | 減少大型報表傳輸大小 |
secure_cert_file | SSL 證書文件 | server.cert | 文件路徑 | 啟用 HTTPS 時的證書文件 |
secure_pkey_file | SSL 私鑰文件 | server.key | 文件路徑 | 啟用 HTTPS 時的私鑰文件 |
session_duration | 會話持續時間(小時) | 7*24(一周) | 整數 | 控制用戶會話有效期 |
session_gc | 會話垃圾回收間隔(秒) | 3600 | 整數 | 控制過期會話清理頻率 |
應用示例:
[options]
# 生產環境安全配置
admin_passwd = super_strong_password_123!
session_duration = 8
secure_cert_file = /etc/ssl/certs/odoo.crt
secure_pkey_file = /etc/ssl/private/odoo.key
最佳實踐建議:
- 使用強密碼作為
admin_passwd
。 - 生產環境建議縮短
session_duration
,提升安全性。 - 推薦通過反向代理處理 SSL,而非 Odoo 內置 SSL。
2.6 郵件選項
這些參數配置 Odoo 的郵件功能,適用于通知和業務通信。
參數 | 描述 | 默認值 | 取值范圍 | 應用場景 |
---|---|---|---|---|
email_from | 默認發件人地址 | False | 郵箱地址 | 設置系統郵件默認地址 |
smtp_server | SMTP 服務器 | localhost | 主機名/IP | 配置外部郵件服務器 |
smtp_port | SMTP 端口 | 25 | 1-65535 | 常用:25, 465(SSL), 587(TLS) |
smtp_ssl | 使用 SSL 連接 | False | True/False | 啟用加密 SMTP 連接 |
smtp_user | SMTP 用戶名 | False | 字符串 | 需認證的 SMTP 服務器 |
smtp_password | SMTP 密碼 | False | 字符串 | 需認證的 SMTP 服務器 |
smtp_ssl_certificate_filename | SSL 證書文件 | False | 文件路徑 | 自簽名證書場景 |
smtp_ssl_private_key_filename | SSL 私鑰文件 | False | 文件路徑 | 自簽名證書場景 |
應用示例:
[options]
# Gmail SMTP 配置
email_from = noreply@yourcompany.com
smtp_server = smtp.gmail.com
smtp_port = 587
smtp_ssl = True
smtp_user = your-email@gmail.com
smtp_password = your-app-password
最佳實踐建議:
- 建議使用專用
noreply@
地址作為email_from
。 - Gmail 場景下,建議使用應用專用密碼。
- 生產環境務必啟用
smtp_ssl
增強安全性。
2.7 雜項選項
這些參數控制 Odoo 的其他功能和行為。
參數 | 描述 | 默認值 | 取值范圍 | 應用場景 |
---|---|---|---|---|
addons_path | 插件目錄路徑 | 內置路徑 | 目錄路徑列表 | 添加自定義模塊目錄 |
data_dir | 數據目錄 | ~/.local/share/Odoo | 目錄路徑 | 存儲附件、會話文件等 |
demo | 加載演示數據 | True | True/False | 生產環境建議設為 False |
dev_mode | 開發者模式 | False | True/False/all/[qweb | xml]… |
shell_interface | Shell 接口 | python | python/ipython | 使用增強 shell 接口 |
without_demo | 不加載演示數據 | False | True/False | 生產環境建議設為 True |
translate_modules | 翻譯模塊 | [‘all’] | 模塊名列表 | 限定需翻譯模塊 |
running_env | 運行環境 | None | dev/test/production | 標識當前環境類型 |
server_wide_modules | 服務器級模塊 | web | 模塊名列表 | 所有數據庫需加載模塊 |
應用示例:
[options]
# 自定義模塊和數據目錄
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom-addons
data_dir = /opt/odoo/data
without_demo = True
running_env = production
server_wide_modules = web,web_kanban,queue_job
最佳實踐建議:
- 多路徑用逗號分隔設置
addons_path
。 - 建議將
data_dir
設為受備份保護的存儲。 - 生產環境建議
without_demo = True
。 - 用
running_env
區分不同環境配置。
3. 擴展用法
3.1 多環境配置
Odoo 支持為不同環境使用不同配置文件,便于開發、測試與生產環境切換。
方法一:命令行參數
# 開發環境
odoo --config=/etc/odoo/odoo-dev.conf# 生產環境
odoo --config=/etc/odoo/odoo-prod.conf
方法二:環境變量
export ODOO_RC=/etc/odoo/odoo-prod.conf
odoo
開發環境配置示例:
[options]
admin_passwd = admin
db_host = localhost
db_port = 5432
db_user = odoo
db_password = odoo
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom-addons
log_level = debug
dev_mode = all
workers = 0
生產環境配置示例:
[options]
admin_passwd = strong_password_123!
db_host = 10.0.0.5
db_port = 5432
db_user = odoo_prod
db_password = secure_password
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom-addons
log_level = warning
dev_mode = False
workers = 9
limit_memory_hard = 5368709120
limit_memory_soft = 4294967296
3.2 自定義參數
Odoo 支持在配置文件中定義自定義參數,可通過 tools.config
在代碼中訪問。
配置文件定義自定義參數:
[options]
# 標準參數
db_host = localhost
db_port = 5432# 自定義參數
my_custom_param = value
company_name = My Company
max_file_size = 25
Python 代碼訪問自定義參數:
from odoo.tools import configcustom_value = config.get('my_custom_param')
company = config.get('company_name')
max_size = config.get('max_file_size', 10) # 默認值if custom_value == 'value':# 執行操作pass
3.3 多進程配置
高流量 Odoo 部署建議使用多進程配置。
基本多進程配置:
[options]
# 8核服務器
workers = 9 # CPU 核心數 + 1
max_cron_threads = 2
高級多進程配置:
[options]
workers = 16
max_cron_threads = 4
limit_memory_hard = 8589934592 # 8GB
limit_memory_soft = 7516192768 # 7GB
limit_request = 16384
limit_time_cpu = 180
limit_time_real = 360
注意事項:
- 啟用多進程(
workers > 0
)時,確保所有第三方模塊兼容多進程。 - 定期監控進程內存占用,必要時調整
limit_memory_hard
和limit_memory_soft
。 - PostgreSQL 的
max_connections
至少為workers * db_maxconn
。
3.4 數據庫過濾器配置
多租戶環境下,數據庫過濾器可根據域名自動選擇數據庫。
基本域名過濾:
[options]
dbfilter = ^%d$
如:
- 訪問
example.com
→ 數據庫example
- 訪問
client1.example.com
→ 數據庫client1
高級過濾器示例:
[options]
dbfilter = ^%h$
dbfilter = ^acme_.*$
dbfilter = ^(demo|test|prod)_.*$
變量說明:
%d
:不帶子域名的域名(example.com → example)%h
:主機名第一部分(client1.example.com → client1)%i
:請求 IP 地址
4. 最佳實踐與優化建議
4.1 安全最佳實踐
- 強管理員密碼
admin_passwd = complex_random_string_at_least_20_chars
- 禁用數據庫列表
list_db = False
- 限制數據庫管理器訪問
dbfilter = ^specific_db_name$
- 使用專用數據庫用戶
db_user = odoo_user db_password = secure_password
- 啟用 SSL 連接
db_sslmode = require
4.2 性能優化建議
- 優化工作進程
workers = CPU 核心數 + 1 max_cron_threads = 2
- 內存限制調整
# 16GB RAM 服務器 limit_memory_hard = 10737418240 # 10GB limit_memory_soft = 8589934592 # 8GB
- 請求限制調整
limit_request = 16384 limit_time_cpu = 120 limit_time_real = 240
- PostgreSQL 連接優化
db_maxconn = 64 # 小于 PostgreSQL 的 max_connections/workers
- 啟用 unaccent 提升搜索性能
unaccent = True
4.3 日志優化建議
- 生產環境日志級別
log_level = warning log_handler = werkzeug:ERROR,odoo.sql_db:WARNING
- 日志文件配置
logfile = /var/log/odoo/odoo.log
- 禁用數據庫日志
log_db = False
- JSON 格式日志(用于日志分析)
log_json = True
4.4 多租戶環境建議
- 域名過濾器
dbfilter = ^%d$
- 禁用數據庫創建
list_db = False
- 使用反向代理
proxy_mode = True
- 為每個租戶設置子域名
通過 DNS 配置tenant1.example.com
、tenant2.example.com
等
5. 常見問題與解決方案
5.1 內存相關問題
問題: Odoo 工作進程頻繁重啟,日志顯示內存限制錯誤。
解決方案:
limit_memory_hard = 5368709120 # 5GB
limit_memory_soft = 4294967296 # 4GB
問題: 系統整體內存使用過高。
解決方案:
workers = 6 # 降低工作進程數
5.2 性能相關問題
問題: 頁面加載緩慢,尤其高并發時。
解決方案:
workers = 12
limit_request = 16384
問題: 長時間運行報表導致超時。
解決方案:
limit_time_cpu = 180
limit_time_real = 360
5.3 數據庫相關問題
問題: 數據庫連接錯誤或連接池耗盡。
解決方案:
db_maxconn = 32 # 減少每進程最大連接數
問題: 多租戶環境訪問錯誤數據庫。
解決方案:
dbfilter = ^%d$
5.4 郵件相關問題
問題: 郵件發送失敗。
解決方案:
smtp_server = smtp.company.com
smtp_port = 587
smtp_ssl = True
smtp_user = odoo@company.com
smtp_password = correct_password
6. 示例配置文件
6.1 開發環境配置
[options]
# 基本設置
admin_passwd = admin123
db_host = localhost
db_port = 5432
db_user = odoo
db_password = odoo# 開發者選項
dev_mode = all
workers = 0
log_level = debug
log_handler = odoo:DEBUG# 路徑設置
addons_path = /opt/odoo/odoo/addons,/opt/odoo/custom-addons
data_dir = /opt/odoo/data# 演示數據
without_demo = False# 性能設置(開發環境較寬松)
limit_time_cpu = 600
limit_time_real = 1200
6.2 生產環境配置
[options]
# 基本設置
admin_passwd = super_strong_password_123!
db_host = 10.0.0.5
db_port = 5432
db_user = odoo_prod
db_password = secure_password
dbfilter = ^%d$
list_db = False# 網絡設置
http_port = 8069
proxy_mode = True
longpolling_port = 8072# 工作進程設置(16核服務器)
workers = 17
max_cron_threads = 4# 內存限制(32GB RAM 服務器)
limit_memory_hard = 21474836480 # 20GB
limit_memory_soft = 16106127360 # 15GB
limit_request = 16384
limit_time_cpu = 120
limit_time_real = 240
limit_time_real_cron = 600# 路徑設置
addons_path = /opt/odoo/odoo/addons,/opt/odoo/enterprise,/opt/odoo/custom-addons
data_dir = /opt/odoo/data# 日志設置
logfile = /var/log/odoo/odoo.log
log_level = warning
log_handler = werkzeug:ERROR,odoo.addons:WARNING# 郵件設置
email_from = noreply@company.com
smtp_server = smtp.company.com
smtp_port = 587
smtp_ssl = True
smtp_user = odoo@company.com
smtp_password = mail_password# 其他設置
without_demo = True
server_wide_modules = web,web_kanban,queue_job
running_env = production
6.3 高可用性配置
[options]
# 基本設置
admin_passwd = ultra_secure_password_456!
db_host = odoo-postgres.internal
db_port = 5432
db_user = odoo_ha
db_password = very_secure_password
dbfilter = ^%d$
list_db = False# 網絡設置
http_port = 8069
proxy_mode = True
longpolling_port = 8072# 工作進程設置(32核服務器)
workers = 33
max_cron_threads = 6# 內存限制(64GB RAM 服務器)
limit_memory_hard = 42949672960 # 40GB
limit_memory_soft = 32212254720 # 30GB
limit_request = 32768
limit_time_cpu = 180
limit_time_real = 360
limit_time_real_cron = 1200# 路徑設置
addons_path = /opt/odoo/odoo/addons,/opt/odoo/enterprise,/opt/odoo/custom-addons
data_dir = /mnt/efs/odoo/data# 日志設置
logfile = /var/log/odoo/odoo.log
log_level = error
log_handler = werkzeug:ERROR
log_json = True# 郵件設置
email_from = noreply@company.com
smtp_server = smtp.company.com
smtp_port = 587
smtp_ssl = True
smtp_user = odoo@company.com
smtp_password = mail_password# 其他設置
without_demo = True
server_wide_modules = web,web_kanban,queue_job,base_sparse_field
running_env = production
max_file_size = 2048
7. 結論
Odoo 18 配置文件是管理和優化 Odoo 實例的關鍵工具。通過合理配置各項參數,可顯著提升系統性能、安全性與穩定性。本文檔詳細介紹了所有重要配置項及其最佳實踐,旨在幫助管理員和開發者充分發揮 Odoo 的強大能力。請根據實際需求和環境調整參數,建議在生產環境變更前,先于測試環境充分驗證。
8. 參考資料
- Odoo 18 官方文檔
- Odoo 社區論壇最佳實踐
- PostgreSQL 配置指南
- Odoo 性能優化白皮書