当前位置:首页 > 技术 > 正文内容

Odoo 14 开发环境搭建与核心配置详解

访客 技术 2026年10月2日 5

Odoo 是一个高度模块化的开源 ERP 平台,其开发环境的搭建是进入定制化开发的第一步。本文将系统性地介绍如何在 Ubuntu 系统上构建稳定、可复现的 Odoo 14 开发环境,并深入解析数据库管理、配置文件机制、开发者模式启用及插件加载原理。

Odoo 生态概览

Odoo 提供两个主要发行版本:社区版(Community Edition)与企业版(Enterprise Edition)。社区版基于 LGPLv3 协议完全开源,涵盖会计、销售、采购、库存等核心业务模块;企业版在社区版基础上扩展了高级报表、文档协作、现场服务调度等功能,需商业授权。两者共享同一代码基线,企业版功能通过私有仓库分支提供。

官方源码托管于 GitHub(https://github.com/odoo/odoo),采用语义化版本控制。长期支持(LTS)版本如 14.0 提供五年维护周期,适用于生产部署;短期版本则侧重新特性验证与 SaaS 场景快速迭代。

Runbot(https://runbot.odoo.com)是 Odoo 官方持续集成平台,自动拉取最新提交并构建测试实例。每个构建结果以颜色标识状态(绿色=全量通过,红色=测试失败),并预置两类数据库:完整模块集(full)与最小化基础库(base)。测试账户包括 admin/admin、demo/demo 和 portal/portal,适用于快速功能验证。

第三方生态方面,Odoo Community Association(OCA)维护大量高质量社区模块(https://github.com/OCA),但需注意版本兼容性;官方帮助论坛(https://help.odoo.com)和学习平台(https://www.odoo.com/slides)则是解决常见问题与系统性学习的重要资源。

Ubuntu 环境下的源码部署

推荐使用 Ubuntu Server 18.04 LTS 或更新版本作为开发主机,确保与典型生产环境一致,避免因依赖差异导致的部署问题。

基础依赖安装

sudo apt update
sudo apt install -y \
  git python3-pip build-essential wget python3-dev python3-venv \
  python3-wheel libxslt1-dev libzip-dev libldap2-dev libsasl2-dev \
  python3-setuptools libpng-dev libjpeg-dev gdebi-core

PDF 渲染引擎配置

Odoo 报表导出依赖 wkhtmltopdf。建议使用官方编译版本以保证稳定性:

wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltopdf_0.12.6-1.focal_amd64.deb
sudo dpkg -i wkhtmltopdf_0.12.6-1.focal_amd64.deb
sudo apt --fix-broken install -y

PostgreSQL 初始化

sudo apt install -y postgresql
sudo -u postgres createuser --superuser $USER

该步骤创建与当前系统用户同名的 PostgreSQL 超级用户,使 Odoo 可免密连接本地数据库(默认通过 Unix socket,端口 5432)。生产环境应改用 --createdb 并显式设置密码:

psql -c "ALTER ROLE $USER WITH PASSWORD 'secure_password';"

源码获取与虚拟环境构建

mkdir -p ~/odoo-src && cd ~/odoo-src
git clone --branch 14.0 --depth 1 --single-branch https://github.com/odoo/odoo.git

python3 -m venv ~/venv-odoo14
source ~/venv-odoo14/bin/activate
cd odoo
pip install -r requirements.txt

首次启动与初始化

createdb odoo_dev
./odoo-bin -d odoo_dev -i base --addons-path=addons,../custom_addons --db-filter=^odoo_dev$

关键参数说明:

  • -d odoo_dev:指定目标数据库
  • --db-filter=^odoo_dev$:限制 Odoo 实例仅访问匹配正则的数据库(增强安全性)
  • --addons-path:定义模块搜索路径,支持多目录逗号分隔
  • -i base:强制安装基础模块,触发数据库结构初始化

启动成功后,访问 http://localhost:8069,使用默认管理员账户 admin/admin 登录。

数据库生命周期管理

Odoo 内置数据库管理界面(/web/database/manager)提供图形化操作入口,但生产级运维更推荐命令行工具链以提升效率与可追溯性。

常用命令行操作

创建带演示数据的测试库:

createdb odoo_test && ./odoo-bin -d odoo_test

克隆现有数据库(需先停止 Odoo 进程):

createdb -T odoo_dev odoo_clone
cp -r ~/.local/share/Odoo/filestore/odoo_dev ~/.local/share/Odoo/filestore/odoo_clone

备份与恢复(含文件存储):

# 备份
pg_dump -Fc -f odoo_dev.dump odoo_dev
tar -cjf odoo_dev.tgz odoo_dev.dump ~/.local/share/Odoo/filestore/odoo_dev

# 恢复
tar -xf odoo_dev.tgz
pg_restore -C -d odoo_dev odoo_dev.dump

删除数据库及关联文件:

dropdb odoo_dev
rm -rf ~/.local/share/Odoo/filestore/odoo_dev

配置文件标准化管理

为避免冗长命令行参数,Odoo 支持通过配置文件集中管理运行时行为。生成模板并自定义:

./odoo-bin --save --config ~/odoo.conf --stop-after-init

配置项命名规则:命令行长选项(如 --without-demo)转为下划线格式(without_demo),部分特例如下:

命令行参数 配置文件键名 说明
--db-filter dbfilter 数据库名称正则匹配
--no-http http_enable = False 禁用 HTTP 服务
--dev dev_mode 启用开发模式调试器

典型配置片段示例:

[options]
addons_path = /home/user/odoo-src/odoo/addons,/home/user/custom_addons
data_dir = /home/user/.local/share/Odoo
db_host = False
db_port = False
db_user = user_name
db_password = secure_password
dbfilter = ^odoo_dev$
logfile = /var/log/odoo/odoo-server.log
log_level = info
workers = 4

开发者模式激活与调试

开发者模式解锁后台技术元信息与调试工具。启用方式有两种:

  • 登录后进入 设置 → 激活开发者模式
  • 直接修改 URL,在 # 前插入 ?debug=1(如:http://localhost:8069/web?debug=1#action=...)

进阶调试模式 ?debug=assets 将禁用前端资源压缩,便于审查原始 JS/CSS 文件。需注意:自 Odoo 13 起,调试状态持久化至用户会话,移除 URL 参数不会退出模式,须通过界面按钮或清除浏览器会话。

模块列表刷新机制

当新增自定义模块或更新现有模块时,需手动触发模块索引重建:

  1. 确保模块位于 addons_path 指定路径内
  2. 模块根目录必须包含 __manifest__.py 文件
  3. 检查 installable 键值是否为 True
  4. 访问 /web#action=ir.actions.act_window%26model=ir.module.module,点击右上角 更新应用列表

该操作本质是扫描所有 addons_path 下的 __manifest__.py,解析模块元数据并同步至数据库表 ir_module_module。若模块已存在,则更新版本号与依赖关系;否则执行注册流程。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。