本文主要分析了Odoo中的配置文件相关代码,进行总结,如下。
一、类的作用
- configmanager 管理 Odoo 的配置选项。
- 它同时支持 配置文件、命令行参数、环境变量 三种方式来设置。
- 所有参数最后都会存在 self.options 字典中。
- Odoo 启动时会调用 config.parse_config(),确定数据库、HTTP 服务、日志、addons 路径等。
二、构造函数 (__init__) 关键点
1.默认配置 self.options
self.options = {
'admin_passwd': 'admin', # 管理员密码
'csv_internal_sep': ',', # CSV 内部分隔符
'publisher_warranty_url': 'http://services.odoo.com/publisher-warranty/', # 发布者服务
'reportgz': False, # 报表是否压缩
'root_path': None, # Odoo 根路径
'websocket_keep_alive_timeout': 3600, # websocket 保活时间
'websocket_rate_limit_burst': 10, # websocket 速率突发上限
'websocket_rate_limit_delay': 0.2, # websocket 速率限制延时
}
不允许保存的配置(blacklist_for_save)
比如 init、update、root_path 等运行时参数,不会写入配置文件。
self.parser
使用 optparse.OptionParser 创建命令行解析器,按不同模块分组(HTTP、数据库、日志、安全、SMTP、i18n、multiprocessing 等)。
三、配置参数分类
1. 通用配置
- -c/--config 指定配置文件
- -s/--save 保存配置
- -i/--init 初始化模块
- -u/--update 更新模块
- --without-demo 不加载 demo 数据
- --addons-path 模块路径(逗号分隔)
- --upgrade-path 升级脚本路径
- --data-dir 数据存储路径
2. HTTP 配置
- --http-interface 监听地址,默认全部网卡
- -p/--http-port HTTP 端口,默认 8069
- --gevent-port 长轮询/gevent 端口,默认 8072
- --no-http 禁用 HTTP
- --proxy-mode 开启反向代理支持
- --x-sendfile 开启大文件由 nginx/apache 直接发送
3. Web 配置
- --db-filter 正则表达式过滤数据库(UI 选择时用)
4. 测试配置
- --test-enable 启用单元测试
- --test-tags 指定要运行的测试
- --screenshots 截图目录
- --screencasts 录屏目录
5. 日志配置
- --logfile 日志文件
- --syslog 写入系统 syslog
- --log-level 日志级别(info、debug、error…)
- --log-handler 精细化日志控制(如 odoo.http:DEBUG)
6. SMTP 邮件配置
- --smtp 邮件服务器
- --smtp-port 邮件端口
- --smtp-user 用户名
- --smtp-password 密码
- --email-from 默认发件人
7. 数据库配置
- -d/--database 数据库名
- -r/--db_user 数据库用户名
- -w/--db_password 数据库密码
- --db_host 数据库地址
- --db_port 数据库端口
- --db_sslmode SSL 模式
- --db_maxconn 最大连接数
- --db-template 创建新数据库时使用的模板
8. 国际化 (i18n)
- --load-language 载入语言
- --i18n-export 导出翻译
- --i18n-import 导入翻译
- --i18n-overwrite 覆盖现有翻译
9. 安全
- --no-database-list 禁止 Web 界面显示数据库列表(必须固定 -d)
10. 高级选项
- --dev 开发模式
- --shell-interface 指定 shell(ipython 等)
- --stop-after-init 初始化后停止
- --unaccent 尝试启用 PostgreSQL unaccent
- --geoip-city-db/--geoip-country-db GeoIP 数据库
11. 多进程 (仅 POSIX)
- --workers worker 数量
- --limit-memory-soft/hard 内存限制
- --limit-time-cpu CPU 时间限制
- --limit-time-real 请求最大执行时间
- --limit-request 每个 worker 处理请求数上限
四、运行流程
- __init__ 注册所有参数 → 默认值进 self.options。
-
parse_config()
- 读取配置文件(~/.odoorc 或 -c file)。
- 解析命令行参数,覆盖文件/默认值。
- 检查参数合法性(互斥、必选项)。
- 最终把所有选项存入 self.options。
五、总结
Odoo 的全局配置中心,负责从配置文件、命令行、环境变量读取参数,保证服务启动时有完整的运行环境。
每一个 group.add_option() 都对应一个命令行参数,my_default 是默认值,dest 是最终存入 self.options 的键。
📝 Odoo 配置参数速查表
1. 通用配置
参数 | 说明 | 默认值 |
|---|---|---|
| -c, --config | 指定配置文件路径 | ~/.odoorc |
| -s, --save | 保存配置到文件 | False |
| -i, --init | 初始化模块(安装模块) | - |
| -u, --update | 更新模块 | - |
| --without-demo | 不加载 demo 数据(可指定模块) | all |
| --addons-path | 模块路径,逗号分隔 | addons |
| --upgrade-path | 升级脚本路径 | - |
| --data-dir | 数据存储路径 | ~/.local/share/Odoo |
2. HTTP 配置
参数 | 说明 | 默认值 |
|---|---|---|
| --http-interface | 监听地址 | 所有地址 |
| -p, --http-port | HTTP 端口 | 8069 |
| --gevent-port | gevent/长轮询端口 | 8072 |
| --no-http | 禁用 HTTP 服务 | False |
| --proxy-mode | 开启代理模式(X-Forwarded-*) | False |
| --x-sendfile | 启用 X-Sendfile (nginx/apache 直接发送文件) | False |
3. Web 配置
参数 | 说明 | 默认值 |
|---|---|---|
| --db-filter | 过滤数据库名称的正则表达式 | .* |
4. 测试配置
参数 | 说明 | 默认值 |
|---|---|---|
| --test-enable | 启用单元测试 | False |
| --test-tags | 指定要运行的测试标签 | - |
| --screenshots | 截图目录 | - |
| --screencasts | 录屏目录 | - |
5. 日志配置
参数 | 说明 | 默认值 |
|---|---|---|
| --logfile | 日志文件路径 | stdout |
| --syslog | 写入系统 syslog | False |
| --log-level | 日志级别 (info, debug, error 等) | info |
| --log-handler | 精细化日志控制 (e.g. odoo.http:DEBUG) | - |
6. 邮件 (SMTP) 配置
参数 | 说明 | 默认值 |
|---|---|---|
| --smtp | SMTP 服务器地址 | localhost |
| --smtp-port | SMTP 端口 | 25 |
| --smtp-user | 用户名 | - |
| --smtp-password | 密码 | - |
| --email-from | 默认发件人 | - |
7. 数据库配置
参数 | 说明 | 默认值 |
|---|---|---|
| -d, --database | 数据库名称 | - |
| -r, --db_user | 数据库用户名 | odoo |
| -w, --db_password | 数据库密码 | - |
| --db_host | 数据库主机 | localhost |
| --db_port | 数据库端口 | 5432 |
| --db_sslmode | SSL 模式 (disable, prefer, require) | prefer |
| --db_maxconn | 最大连接数 | 64 |
| --db-template | 创建数据库时的模板 | template1 |
8. 国际化 (i18n)
参数 | 说明 | 默认值 |
|---|---|---|
| --load-language | 指定语言代码 (e.g. zh_CN) | - |
| --i18n-export | 导出翻译文件 | - |
| --i18n-import | 导入翻译文件 | - |
| --i18n-overwrite | 覆盖现有翻译 | False |
9. 安全
参数 | 说明 | 默认值 |
|---|---|---|
| --no-database-list | 禁止 Web 界面显示数据库列表(必须固定 -d) | False |
| --admin-passwd | 管理员密码 | admin |
10. 高级选项
参数 | 说明 | 默认值 |
|---|---|---|
| --dev | 开发模式 (all, xml, qweb, reload) | - |
| --shell-interface | shell 类型 (ipython, bpython, python) | python |
| --stop-after-init | 初始化后停止服务 | False |
| --unaccent | 尝试启用 PostgreSQL unaccent | False |
| --geoip-city-db | GeoIP 城市数据库路径 | - |
| --geoip-country-db | GeoIP 国家数据库路径 | - |
11. 多进程 (workers, 仅 POSIX)
参数 | 说明 | 默认值 |
|---|---|---|
| --workers | worker 数量 | 0 (单进程) |
| --limit-memory-soft | soft 内存限制 (字节) | 640MB |
| --limit-memory-hard | hard 内存限制 (字节) | 768MB |
| --limit-time-cpu | CPU 时间限制 (秒) | 60 |
| --limit-time-real | 请求最大执行时间 (秒) | 120 |
| --limit-request | 每个 worker 请求数上限 | 8192 |
配置文件详情介绍