首页 > ODOO > 正文

Odoo 部署排错完整手册:从安装到运维的全流程指南

fenij 2026-08-06 6 ODOO

Odoo 是一套功能完整的 ERP 系统,但部署和运维的复杂度也随功能成正比。模块依赖、定时任务、数据库、性能调优——每个环节都有坑。这篇手册把 Odoo 从安装到日常运维的常见问题串起来,遇到问题可以先在这里定位方向。

一、Odoo 架构概览

Odoo 的运行依赖三个组件:Odoo 应用本身(Python)、PostgreSQL 数据库、以及可选的 Nginx 反向代理。常见的故障分布:

  • 安装阶段:模块依赖缺失、Python 包版本冲突
  • 启动阶段:端口冲突、配置文件错误、数据库连接失败
  • 运行阶段:定时任务不执行、系统变慢、数据库需要备份

二、安装阶段:模块依赖问题

Odoo 安装时最常见的问题是 Python 依赖缺失。报错通常是 ModuleNotFoundError 或者 ImportError。解决思路:

  1. 看报错信息里缺的是哪个模块
  2. 检查 requirements.txt 里对应的包名
  3. 用 pip 安装:pip install -r requirements.txt
  4. 如果是系统级依赖(如 libxml2、libpq),用 apt/yum 安装

详细的依赖排查步骤和常见报错处理,参考 Odoo 模块依赖缺失安装报错怎么办?

安装完成后,如果自定义模块在后台不显示,通常是模块路径、manifest 文件或者更新列表的问题。排查方法见 Odoo19 自定义模块不显示?4 步排查与解决

三、启动阶段:无法访问

Odoo 装完了但浏览器打不开,这是部署阶段第二高频问题。排查顺序:

  1. 确认 Odoo 进程在跑:systemctl status odoo
  2. 确认端口在监听:ss -tlnp | grep 8069
  3. 确认防火墙没拦:ufw statusiptables -L
  4. 确认配置文件里的地址和端口:grep -E 'http_interface|http_port' /etc/odoo/odoo.conf
  5. 看 Odoo 日志:journalctl -u odoo -n 100

常见原因:Odoo 绑定了 127.0.0.1 导致外部无法访问、端口被其他服务占用、防火墙没开放 8069 端口。详细排查步骤见 Odoo 启动后无法访问怎么办?端口与服务排查指南

四、运行阶段:定时任务不执行

Odoo 的定时任务(Scheduled Actions / ir.cron)不跑,会影响邮件发送、自动确认订单、定期报告等功能。排查路径:

  1. 确认系统 cron 在运行(Odoo 依赖系统 cron 调用 cron worker)
  2. 看 Odoo 日志里有没有 cron 相关的输出
  3. 在后台检查 ir.cron 记录的间隔、激活状态、下次执行时间
  4. 检查是否有锁卡死(上次任务异常退出,锁没释放)
  5. 手动触发测试,看报什么错

完整的 cron 排查流程和数据库锁处理方法,参考 Odoo 定时任务不执行怎么办?cron 排查指南

五、运行阶段:系统变慢

Odoo 用着用着变慢,原因通常在几个方面:

  • worker 配置不合理:worker 太少导致请求排队,太多导致内存不够
  • 数据库慢查询:数据量增长后某些查询变慢
  • 内存不足:Odoo 是内存大户,小 VPS 容易 OOM
  • 文件存储过大:附件多了影响 IO

workers 的调优需要根据服务器内存和 CPU 来计算。公式:worker 数 = CPU 核心数 × (1 + 内存GB/2)。详细的计算方法和调优步骤参考 Odoo 系统变慢怎么办?workers 调优与瓶颈排查实操

如果是前端界面卡顿(比如切换菜单慢),可能是通知设置的问题。Odoo15 的一个已知问题参考 Odoo15 切换菜单卡顿怎么办?通知设置修复

六、数据库备份与恢复

Odoo 的所有业务数据在 PostgreSQL 里,但备份不能只备数据库——附件文件存在文件系统的 filestore 目录里,必须一起备份。

推荐方案:

  • pg_dump -Fc 导出数据库(custom 格式,恢复快)
  • 用 tar 打包 filestore 目录
  • 写脚本放 crontab 每天跑
  • 把备份传到异地(rsync 或对象存储)
  • 定期做恢复测试

完整的备份脚本和恢复流程参考 Odoo 数据库备份与恢复怎么做?实操指南

七、Odoo 故障速查表

现象 可能原因 首先检查
安装报错 ModuleNotFoundError Python 依赖缺失 requirements.txt、pip install
启动后无法访问 端口/防火墙/绑定地址 systemctl status、ss -tlnp、ufw
定时任务不执行 系统 cron 没配、ir.cron 锁死 crontab -l、Odoo 日志、ir.cron 表
系统变慢 worker 不够或太多、内存不足 odoo.conf workers 配置、dmesg OOM
切换菜单卡顿 通知设置问题 用户偏好设置里的通知
附件打不开 filestore 路径不对或丢失 data_dir 配置、filestore 目录

八、日常维护清单

  • 每日:检查 Odoo 服务状态和日志有没有报错
  • 每周:检查磁盘空间(Odoo 日志和 filestore 会持续增长)
  • 每周:确认数据库备份正常执行
  • 每月:检查 PostgreSQL 慢查询日志
  • 每月:检查 Odoo 版本更新和安全补丁
  • 每季度:做一次完整的备份恢复测试

更多 Odoo 运维教程,请访问 fenij.com

常见问题

问:Odoo 升级大版本怎么做?
答:大版本升级(比如 16→17)不能直接换代码,需要跑数据库迁移。建议在测试环境先用 Odoo 的迁移工具跑一遍,确认没问题再动生产。升级前一定要做完整备份(数据库 + filestore)。

问:多数据库环境怎么管理?
答:在 odoo.conf 里配置 dbfilter,确保每个域名只对应一个数据库。否则 Odoo 会显示数据库选择页面,既不安全也不方便。cron 进程也需要知道操作哪个数据库。

问:Odoo 内存占用太高怎么优化?
答:减少 worker 数量、限制每个 worker 的内存上限、关闭不用的模块。如果用的是 community 版,考虑切到 enterprise 版,资源管理更好。内存实在不够就加 swap 顶着,但长期方案还是加内存。