第13讲、Odoo 18 配置文件(odoo.conf)详细解读

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_requestlimit_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,生产环境用 warningerror
  • 使用 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_hardlimit_memory_soft 不应超过系统可用内存。
  • 根据负载调整 limit_time_cpulimit_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 config

custom_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_hardlimit_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 安全最佳实践

  1. 强管理员密码
    admin_passwd = complex_random_string_at_least_20_chars
    
  2. 禁用数据库列表
    list_db = False
    
  3. 限制数据库管理器访问
    dbfilter = ^specific_db_name$
    
  4. 使用专用数据库用户
    db_user = odoo_user
    db_password = secure_password
    
  5. 启用 SSL 连接
    db_sslmode = require
    

4.2 性能优化建议

  1. 优化工作进程
    workers = CPU 核心数 + 1
    max_cron_threads = 2
    
  2. 内存限制调整
    # 16GB RAM 服务器
    limit_memory_hard = 10737418240  # 10GB
    limit_memory_soft = 8589934592   # 8GB
    
  3. 请求限制调整
    limit_request = 16384
    limit_time_cpu = 120
    limit_time_real = 240
    
  4. PostgreSQL 连接优化
    db_maxconn = 64  # 小于 PostgreSQL 的 max_connections/workers
    
  5. 启用 unaccent 提升搜索性能
    unaccent = True
    

4.3 日志优化建议

  1. 生产环境日志级别
    log_level = warning
    log_handler = werkzeug:ERROR,odoo.sql_db:WARNING
    
  2. 日志文件配置
    logfile = /var/log/odoo/odoo.log
    
  3. 禁用数据库日志
    log_db = False
    
  4. JSON 格式日志(用于日志分析)
    log_json = True
    

4.4 多租户环境建议

  1. 域名过滤器
    dbfilter = ^%d$
    
  2. 禁用数据库创建
    list_db = False
    
  3. 使用反向代理
    proxy_mode = True
    
  4. 为每个租户设置子域名
    通过 DNS 配置 tenant1.example.comtenant2.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. 参考资料

  1. Odoo 18 官方文档
  2. Odoo 社区论坛最佳实践
  3. PostgreSQL 配置指南
  4. Odoo 性能优化白皮书
posted @ 2025-06-01 23:06  何双新  阅读(993)  评论(0)    收藏  举报