Skip to Content

配置文件详情介绍

Odoo手把手开发

本文主要分析了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 处理请求数上限

四、运行流程

  1. __init__ 注册所有参数 → 默认值进 self.options。
  2. 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-portHTTP 端口8069
--gevent-portgevent/长轮询端口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写入系统 syslogFalse
--log-level日志级别 (info, debug, error 等)info
--log-handler精细化日志控制 (e.g. odoo.http:DEBUG)-

6. 邮件 (SMTP) 配置

参数

说明默认值
--smtpSMTP 服务器地址localhost
--smtp-portSMTP 端口25
--smtp-user用户名-
--smtp-password密码-
--email-from默认发件人-

7. 数据库配置

参数

说明默认值
-d, --database数据库名称-
-r, --db_user数据库用户名odoo
-w, --db_password数据库密码-
--db_host数据库主机localhost
--db_port数据库端口5432
--db_sslmodeSSL 模式 (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-interfaceshell 类型 (ipython, bpython, python)python
--stop-after-init初始化后停止服务False
--unaccent尝试启用 PostgreSQL unaccentFalse
--geoip-city-dbGeoIP 城市数据库路径-
--geoip-country-dbGeoIP 国家数据库路径-

11. 多进程 (workers, 仅 POSIX)

参数

说明默认值
--workersworker 数量0 (单进程)
--limit-memory-softsoft 内存限制 (字节)640MB
--limit-memory-hardhard 内存限制 (字节)768MB
--limit-time-cpuCPU 时间限制 (秒)60
--limit-time-real请求最大执行时间 (秒)120
--limit-request每个 worker 请求数上限8192