当前位置: 首页 > news >正文

第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_portOdoo HTTP 服务器监听端口80691-65535更改默认端口以避免冲突或提升安全性
http_interface绑定的网络接口0.0.0.0(所有接口)IP 地址限制 Odoo 仅在特定网络接口监听
proxy_mode反向代理模式FalseTrue/FalseOdoo 位于 Nginx/Apache 等反向代理后时设为 True
xmlrpc启用 XML-RPC 接口TrueTrue/False禁用可提升安全性,但会影响 API 访问
xmlrpc_interfaceXML-RPC 绑定接口同 http_interfaceIP 地址限制 API 访问的网络接口
xmlrpc_portXML-RPC 端口同 http_port1-65535分离 API 与 Web 界面端口
longpolling_port长轮询端口80721-65535用于实时通知,如聊天功能
gevent_portGevent 工作端口80721-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数据库服务器端口54321-65535非标准 PostgreSQL 端口
db_user数据库用户名odoo字符串指定数据库访问凭证
db_password数据库密码odoo字符串指定数据库访问凭证
db_name默认数据库False数据库名自动连接特定数据库
db_template创建数据库的模板template0template0/template1自定义数据库模板
db_maxconn最大数据库连接数64整数高并发环境可适当增加
db_sslmodePostgreSQL SSL 模式preferdisable/allow/prefer/require/verify-ca/verify-full增强数据库连接安全性
dbfilter数据库过滤正则.*正则表达式多租户环境按域名过滤数据库
list_db是否显示数据库列表TrueTrue/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日志级别infodebug/info/warning/error/critical调试用 debug,生产用 warning
log_handler日志处理器:INFO格式:[级别]自定义不同模块日志级别
log_db记录到数据库FalseTrue/False日志存储到数据库(影响性能)
log_db_level数据库日志级别warningdebug/info/warning/error/critical控制写入数据库的日志级别
syslog使用系统日志FalseTrue/False日志发送到系统日志服务
log_jsonJSON 格式日志FalseTrue/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_cpuCPU 时间限制(秒)60整数限制单请求 CPU 使用时间
limit_time_real实际时间限制(秒)120整数限制单请求总处理时间
limit_time_real_cron定时任务时间限制(秒)300整数长时间定时任务可适当增加
osv_memory_age_limit临时记录保留时间(小时)1.0浮点数控制临时记录生命周期
osv_memory_count_limit临时记录数量限制False整数/False限制每用户临时记录数量
unaccent启用不区分重音搜索FalseTrue/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_sepCSV 内部分隔符,字符自定义 CSV 导入/导出分隔符
reportgz压缩报表FalseTrue/False减少大型报表传输大小
secure_cert_fileSSL 证书文件server.cert文件路径启用 HTTPS 时的证书文件
secure_pkey_fileSSL 私钥文件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_serverSMTP 服务器localhost主机名/IP配置外部邮件服务器
smtp_portSMTP 端口251-65535常用:25, 465(SSL), 587(TLS)
smtp_ssl使用 SSL 连接FalseTrue/False启用加密 SMTP 连接
smtp_userSMTP 用户名False字符串需认证的 SMTP 服务器
smtp_passwordSMTP 密码False字符串需认证的 SMTP 服务器
smtp_ssl_certificate_filenameSSL 证书文件False文件路径自签名证书场景
smtp_ssl_private_key_filenameSSL 私钥文件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加载演示数据TrueTrue/False生产环境建议设为 False
dev_mode开发者模式FalseTrue/False/all/[qwebxml]…
shell_interfaceShell 接口pythonpython/ipython使用增强 shell 接口
without_demo不加载演示数据FalseTrue/False生产环境建议设为 True
translate_modules翻译模块[‘all’]模块名列表限定需翻译模块
running_env运行环境Nonedev/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_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 性能优化白皮书

相关文章:

  • [Android] APK安装器 V20160330-6.0
  • 重学计算机网络之以太网
  • 精英-探索双群协同优化(Elite-Exploration Dual Swarm Cooperative Optimization, EEDSCO)
  • 基于 Zynq 平台的 EtherCAT 主站的软硬件协同设计
  • wsl安装linux
  • 【火山引擎 大模型批量处理数据教程-详细】
  • 从前端工程化角度解析 Vite 打包策略:为何选择 Rollup 而非 esbuild。
  • Windows搭建Swift语言编译环境?如何构建ObjC语言编译环境?Swift如何引入ObjC框架?Interface Builder的历史?
  • 数据库,Spring Boot,数据源
  • Unity Mono与IL2CPP比较
  • 【CF】Day72——Codeforces Round 890 (Div. 2) CDE1 (二分答案 | 交互 + 分治 | ⭐树上背包)
  • 多模态大语言模型arxiv论文略读(103)
  • Java抽象工厂模式详解
  • 【计算机网络】第3章:传输层—面向连接的传输:TCP
  • Linux下目录递归拷贝的单进程实现
  • RuoYi前后端分离框架实现前后端数据传输加密(二)之前端篇
  • 如何用docker部署ELK?
  • 设计模式——观察者设计模式(行为型)
  • 在 SpringBoot+Tomcat 环境中 线程安全问题的根本原因以及哪些变量会存在线程安全的问题。
  • 设计模式——桥接设计模式(结构型)
  • 网站类型定位/百度搜索量查询
  • 专门建站的公司/品牌营销的概念
  • 专业网站建设品牌策划方案/上海网站搜索排名优化哪家好
  • 个人网站的建设方法和过程/百度首页登录
  • 毕设给学校做网站/网络广告营销方案策划内容
  • 国内最大的网站建设公司排名/如何创建一个app