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 性能优化白皮书