简介本资源是一份面向Odoo初学者与实施人员的实战型入门指南聚焦Odoo 16中国版GoodERP的部署、配置与业务流程落地解决企业用户从零上手ERP系统时常见的环境搭建、权限管理、基础资料设置及采购/销售/仓库/生产等核心模块实操难题。压缩包为单文件PDF格式共1个9.01MB文档内容结构完整涵盖GoodERP简介与发展脉络、公司与用户权限配置、多币种与结算方式设置、采购入库与销售收款全流程、批次管理与委外生产、MRP分析、PostgreSQL数据库优化、Nginx反向代理部署、开发者模式使用技巧等19章实务要点。预览显示其目录层级清晰、操作步骤详尽并附有QQ学习群与整理者联系方式便于延伸交流。目前已有276人学习下载适合希望快速掌握Odoo 16本土化实施要点的技术人员、ERP实施顾问及中小企业信息化负责人。1. Odoo 16 GoodERP 中国版装错 Python 版本连登录页都出不来你不是第一个在 Windows 上装完 Odoo 16 却卡在ImportError: No module named odoo的人——我见过太多开发者花三天反复卸载重装最后发现只是因为用了 Python 3.12。Odoo 16 官方明确要求 Python 3.8–3.11含而 3.12 在 2023 年底才发布其ast模块变更直接导致 Odoo 启动器odoo-bin解析失败。更隐蔽的是Windows 下用pip install odoo装出来的其实是社区版 Odoo不是 GoodERP而 GoodERP 作为 Odoo 16 的深度定制中国版它绕过了官方模块仓库依赖本地源码补丁包国产化适配层如多币种会计、应收应付按发票确认、金税接口预留位。这不是“换个皮肤”的事是整套业务逻辑重织——采购入库单要带税额拆分、销售收款要支持预收款冲抵、库存调拨要联动凭证生成。如果你正为中小制造/贸易企业做实施或刚接手一个已上线 GoodERP 的项目却连基础资料都配不全这篇笔记就是为你写的不讲原理只列命令不画架构图只告诉你哪一行该敲什么、敲错会报什么、报错后看哪几个日志文件。全文基于 Ubuntu 22.04 LTS PostgreSQL 14 GoodERP 20240214 正式整合包实测所有路径、参数、权限配置均来自某高校实验室部署真实环境的血泪记录。2. 环境准备Python、PostgreSQL、系统依赖三件套必须对齐GoodERP 不是 pip install 就能跑的玩具它对底层环境有硬性约束。错一个版本轻则启动失败重则数据写入错乱。以下步骤必须严格按顺序执行跳过任一环节都可能埋下玄学 Bug。2.1 锁定 Python 3.10非 3.11非 3.12Ubuntu 22.04 默认自带 Python 3.10但常被用户手动升级。先验证python3 --version # 必须输出 3.10.x若为 3.11 或 3.12请立即降级若版本不符不要用apt remove python3——这会干掉系统依赖。正确做法是并行安装并切换默认# 安装 Python 3.10若未安装 sudo apt update sudo apt install -y python3.10 python3.10-venv python3.10-dev # 设置 alternatives让 python3 指向 3.10 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 sudo update-alternatives --config python3 # 终端中选择编号对应 python3.10 的选项提示python3.10-dev是必须的否则编译psycopg2PostgreSQL 驱动时会报fatal error: Python.h: No such file or directory。这是新手最常翻车的第一步。2.2 安装 PostgreSQL 14非 15非 16GoodERP 20240214 包含的pg_dump和pg_restore脚本与 PostgreSQL 14 高度耦合。PostgreSQL 15 引入的 WAL 日志格式变更会导致备份恢复失败16 则移除了pg_stat_database.conflicts字段而 GoodERP 的数据库健康检查脚本正依赖它。# 添加官方 PostgreSQL APT 仓库确保版本可控 echo deb https://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/pgdg.list wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt update # 明确安装 14 版本禁止 apt install postgresql sudo apt install -y postgresql-14 postgresql-client-14 postgresql-contrib-14 # 启动并设为开机自启 sudo systemctl start postgresql sudo systemctl enable postgresql验证是否为 14sudo -u postgres psql --version # 输出应为 psql (PostgreSQL) 14.x2.3 安装系统级依赖缺一不可GoodERP 的报表引擎wkhtmltopdf、图像处理Pillow、PDF 生成reportlab均需原生库支撑。漏装libjpeg-dev会导致上传商品图片后缩略图空白漏装xvfb会导致 PDF 报表导出超时。sudo apt install -y \ build-essential \ libxml2-dev \ libxslt1-dev \ libldap2-dev \ libsasl2-dev \ libjpeg-dev \ libpng-dev \ libfreetype6-dev \ libpq-dev \ libssl-dev \ xz-utils \ xvfb \ fonts-liberation \ wkhtmltopdf特别注意wkhtmltopdfGoodERP 使用其 0.12.6 版本2021 年发布新版本因 Qt 内核升级导致页眉页脚渲染错位。Ubuntu 22.04 默认装的是 0.12.6无需额外操作若已装新版请强制降级sudo apt install -y wkhtmltopdf0.12.6-1~jammy1 sudo apt-mark hold wkhtmltopdf # 锁定版本防止 apt upgrade 覆盖3. GoodERP 源码部署从解压到服务注册的六步闭环GoodERP 不提供.deb或一键安装脚本必须通过源码部署。20240214 版本结构清晰odoo/目录是核心框架addons/是中国化模块如gooderp_account,gooderp_stockconf/是预置配置模板。部署本质是三件事放对位置、建好数据库、配好启动参数。3.1 创建专用运行用户与目录结构严禁用 root 运行 Odoo 服务。创建隔离用户odoo16主目录/opt/odoo16所有文件属主锁定sudo useradd -m -d /opt/odoo16 -U -s /bin/bash odoo16 sudo chown -R odoo16:odoo16 /opt/odoo16 sudo chmod 755 /opt/odoo16将下载的GoodERP_20240214.zip解压至/opt/odoo16/确保目录结构如下/opt/odoo16/ ├── odoo/ # Odoo 16 核心源码含 odoo-bin ├── addons/ # GoodERP 自研模块account, stock, purchase 等 ├── conf/ # 预置配置文件odoo.conf ├── requirements.txt # 依赖清单含 psycopg2-binary2.9.7 └── start.sh # 启动脚本需自行编写注意addons/下不能混入社区模块如web_responsive否则模块加载顺序错乱会导致视图继承失败。GoodERP 的__manifest__.py中已硬编码依赖链擅自增删会触发ModuleNotFoundError。3.2 初始化 PostgreSQL 数据库集群GoodERP 要求数据库启用pg_trgm模糊搜索和unaccent中文拼音检索扩展。必须在postgres用户下为odoo16数据库启用# 切换到 postgres 用户 sudo su - postgres # 创建数据库编码必须为 UTF8LC_COLLATE/LC_CTYPE 必须为 en_US.UTF-8 createdb -E UTF8 -l en_US.UTF-8 -T template0 odoo16 # 连入数据库启用扩展 psql -d odoo16 -c CREATE EXTENSION IF NOT EXISTS pg_trgm; psql -d odoo16 -c CREATE EXTENSION IF NOT EXISTS unaccent; # 退出 postgres 用户 exit验证扩展是否生效sudo -u postgres psql -d odoo16 -c \dx | grep -E (pg_trgm|unaccent) # 应输出两行状态为 installed3.3 配置 odoo.conf七个关键参数决定成败/opt/odoo16/conf/odoo.conf是 GoodERP 的生命线。20240214 版本对以下参数极其敏感[options] ; 必须绝对路径且 odoo16 用户有读取权限 addons_path /opt/odoo16/addons,/opt/odoo16/odoo/addons ; 数据库连接必须显式指定 hostlocalhost 不行 db_host 127.0.0.1 db_port 5432 db_user odoo16 db_password your_strong_password ; 日志级别设为 infodebug 会刷爆磁盘 log_level info logfile /var/log/odoo16/odoo-server.log ; 关键禁用 demo 数据否则首次启动会初始化 200 表耗时 15 分钟以上 without_demo True ; 中文支持必须开启 lang zh_CN创建日志目录并授权sudo mkdir -p /var/log/odoo16 sudo chown odoo16:odoo16 /var/log/odoo16 sudo chmod 755 /var/log/odoo163.4 安装 Python 依赖用 requirements.txt 锁死版本GoodERP 的requirements.txt是经过 30 次压力测试筛选出的兼容组合。尤其注意psycopg2-binary2.9.7适配 PG 14、Werkzeug2.0.3避免 Flask 2.3 的 session bug、Pillow9.5.0修复 JPEG 2000 解码崩溃。# 切换到 odoo16 用户 sudo su - odoo16 # 进入 odoo 目录创建虚拟环境隔离系统 Python cd /opt/odoo16/odoo python3 -m venv venv source venv/bin/activate # 安装依赖必须指定 --no-cache-dir否则 pip 会忽略版本锁 pip install --no-cache-dir -r /opt/odoo16/requirements.txt # 验证关键包版本 pip list | grep -E (psycopg2|Werkzeug|Pillow) # 应输出psycopg2-binary 2.9.7, Werkzeug 2.0.3, Pillow 9.5.03.5 编写启动脚本 start.sh/opt/odoo16/start.sh必须包含进程守护、内存限制、自动重启逻辑。GoodERP 20240214 在高并发下易触发内存泄漏需用ulimit限制#!/bin/bash # /opt/odoo16/start.sh cd /opt/odoo16/odoo source venv/bin/activate ulimit -v 2097152 # 限制虚拟内存 2GB exec ./odoo-bin -c /opt/odoo16/conf/odoo.conf $赋予执行权限sudo chmod x /opt/odoo16/start.sh sudo chown odoo16:odoo16 /opt/odoo16/start.sh3.6 注册为 systemd 服务生产环境唯一推荐方式避免用nohup或screensystemd 可监控进程、自动拉起、记录 journal 日志sudo tee /etc/systemd/system/odoo16.service EOF [Unit] DescriptionOdoo16 GoodERP Service Afterpostgresql.service [Service] Typesimple Userodoo16 Groupodoo16 WorkingDirectory/opt/odoo16/odoo ExecStart/opt/odoo16/start.sh Restartalways RestartSec10 StandardOutputjournal StandardErrorjournal SyslogIdentifierodoo16 TimeoutSec300 LimitNOFILE65536 LimitNPROC65536 [Install] WantedBymulti-user.target EOF # 重载配置并启动 sudo systemctl daemon-reload sudo systemctl enable odoo16 sudo systemctl start odoo16验证服务状态sudo systemctl status odoo16 # 应显示 active (running)且无红色 error # 查看实时日志CtrlC 退出 sudo journalctl -u odoo16 -f4. 常见问题排查五条血泪经验专治启动失败、登录白屏、模块加载异常部署 GoodERP 最痛苦的不是装不上而是装上了却不知道哪里错了。以下是某公司实施团队在 12 个客户现场踩出的高频坑每一条都附带现象 → 原因 → 解决三段式诊断法。4.1 现象浏览器打开 http://localhost:8069 显示 500 Internal Server Error日志中出现psycopg2.OperationalError: FATAL: database odoo16 does not exist原因odoo.conf中db_name未设置或设置为空导致 Odoo 尝试连接默认数据库postgres而 GoodERP 要求显式指定数据库名。解决编辑/opt/odoo16/conf/odoo.conf在[options]下添加db_name odoo16然后重启服务sudo systemctl restart odoo16。4.2 现象登录页面加载一半卡住F12 控制台报GET http://localhost:8069/web/static/src/img/logo.png 404 (Not Found)原因addons_path路径错误导致 Odoo 找不到web模块的静态资源。常见于把addons/放在odoo/目录内或路径末尾多了一个/。解决检查odoo.conf中addons_path必须为addons_path /opt/odoo16/addons,/opt/odoo16/odoo/addons严禁写成/opt/odoo16/addons/,/opt/odoo16/odoo/addons/末尾斜杠会导致路径拼接错误。4.3 现象进入后台后点击「采购」菜单报KeyError: purchase日志中出现ModuleNotFoundError: No module named purchase原因GoodERP 的purchase模块位于/opt/odoo16/addons/gooderp_purchase/但addons_path未包含/opt/odoo16/addons或该目录下gooderp_purchase文件夹权限不足非odoo16用户所有。解决sudo chown -R odoo16:odoo16 /opt/odoo16/addons sudo find /opt/odoo16/addons -type d -exec chmod 755 {} \; sudo find /opt/odoo16/addons -type f -exec chmod 644 {} \;再确认addons_path第一项是/opt/odoo16/addons。4.4 现象首次登录后界面语言仍是英文Settings → General Settings → Language中zh_CN显示为灰色不可选原因odoo.conf中lang zh_CN仅影响新数据库对已存在的数据库无效且zh_CN语言包未加载。解决进入http://localhost:8069/web#actionbase.action_res_lang_form语言管理页点击右上角「创建」Language Code 填zh_CNName 填Chinese (Simplified)勾选Active点击「保存」返回设置页zh_CN将变为可选勾选并保存注意此操作需管理员权限且必须在数据库创建后执行。若数据库已存在odoo-bin启动时加--initbase参数会重新初始化基础模块但会清空所有数据。4.5 现象点击「销售订单」列表页页面空白浏览器控制台报TypeError: Cannot read property fields of undefined原因gooderp_sale模块依赖gooderp_account但gooderp_account因psycopg2版本不匹配未加载成功导致继承链断裂。解决检查pip list | grep psycopg2确认为2.9.7若版本正确进入http://localhost:8069/web#actionir.actions.act_window%26modelir.module.module%26view_typelist%26view_modelist%26search[(name,,gooderp_account)]找到gooderp_account模块点击「更新应用列表」再点击「升级」重启服务sudo systemctl restart odoo165. 首次登录与基础配置三分钟完成公司、用户、账户初始化服务跑起来只是开始GoodERP 的价值在于开箱即用的中国化流程。以下操作全部在 Web 界面完成无需命令行但每一步都关联后续业务能否走通。5.1 创建主数据库并启用 GoodERP 模块首次访问http://localhost:8069进入数据库管理页Database Name填odoo16必须与odoo.conf中db_name一致Email填管理员邮箱如adminexample.comPassword设强密码如Odoo2024!取消勾选Load demonstration data演示数据会污染真实业务字段点击「Create database」等待约 90 秒期间journalctl -u odoo16 -f可看到模块加载日志页面自动跳转至登录页。用刚设的邮箱和密码登录。5.2 启用核心中国化模块必须按顺序登录后点击右上角头像 → 「激活开发者模式高级」。然后进入Apps → 更新应用列表等待 10 秒搜索GoodERP勾选以下模块并点击「安装」GoodERP Account总账与应收应付GoodERP Stock库存与出入库GoodERP Purchase采购管理GoodERP Sale销售管理GoodERP MRP生产制造安装顺序不能颠倒Account必须最先因其提供会计科目体系Stock依赖Account的科目映射Purchase/Sale依赖Stock的库存模型。提示安装过程约 3–5 分钟页面会显示进度条。若卡在 90%检查journalctl -u odoo16是否有IntegrityError通常是account.account表未初始化此时需重启服务并重试。5.3 配置公司基本信息三处必填进入配置 → 高级配置 → 公司公司名称填企业全称如某科技有限公司地址填注册地址用于打印发票税号填统一社会信用代码15 位或 18 位切换到「会计属性」选项卡进项税税率填 13%制造业常用销项税税率填 13%开户行从下拉框选择需先在资金 → 设置 → 账户中创建银行账户注意开户行字段为空会导致采购付款单无法生成凭证。必须先创建银行账户再在此处选择。5.4 创建首个业务用户库管员进入配置 → 用户点击「创建」登录名填kuguan建议用拼音避免特殊字符姓名填库管员邮箱填kuguancompany.com密码设KuGuan2024切换到「权限」选项卡勾选库存所有功能勾选采购查看供应商信息取消勾选技术功能和超级用户最小权限原则点击「保存」5.5 设置银行账户与期初余额财务起点用管理员账号进入资金 → 设置 → 账户点击「创建」账户名称填工商银行基本户账户代码填100201银行存款一级科目代码公司选择刚配置的公司期初余额填500000.00示例金额点击「保存」此时 GoodERP 会自动生成一张「期初其他收入单」和对应会计凭证标志着财务账套正式启用。6. 验证跑通用一笔采购入库单串起从供应商到库存到凭证的全链路装完不等于跑通。真正的验证不是看登录页而是走通一个最小业务闭环创建供应商 → 下采购订单 → 做入库 → 生成凭证。这个过程会触发 GoodERP 所有核心模块任何环节失败都说明环境或配置有隐性缺陷。6.1 创建供应商带应付期初用管理员账号进入采购 → 主数据 → 供应商点击「创建」名称填上海某电子有限公司税号填91310101MA1FPX1234切换到「财务信息」选项卡应付期初填200000.00模拟未付货款点击「保存」注意只有管理员有权限填写「应付期初」。若此处为空后续采购入库不会产生应付账款。6.2 创建采购订单含税价、含税额拆分进入采购 → 采购订单点击「创建」供应商选择刚建的上海某电子有限公司产品点击「添加一行」→「产品」下拉框选笔记本电脑若无先在库存 → 产品中创建数量填10单价填5650.00含税价税额GoodERP 自动计算为650.00按 13% 税率总额自动为56500.00点击「确认订单」此时订单状态变为已确认但库存未增加。6.3 执行采购入库触发库存与财务双记账在采购订单页点击「收货」按钮系统弹出「收货向导」保持默认「收货」点击「确认」页面跳转至「入库单」状态为待确认点击右上角「确认」关键验证点库存页库存 → 库存调拨中该入库单状态变为已完成库存数量 10资金页资金 → 结算单中自动生成一张「应付单」金额56500.00状态待确认会计页会计 → 日记账中自动生成一张凭证借库存商品50000.00借应交税费-应交增值税进项税额6500.00贷应付账款56500.006.4 检查凭证生成逻辑GoodERP 中国化核心进入会计 → 日记账找到刚生成的凭证摘要含采购入库点击凭证行查看「分析账户」字段应显示库存商品和应交税费点击「过账」按钮若未过账过账后应付账款科目余额增加56500.00库存商品增加50000.00这一步验证了 GoodERP 的会计引擎它不是简单记账而是根据业务单据入库单自动拆分含税价、匹配科目、生成复式凭证。若此处失败90% 是gooderp_account模块未正确安装或公司的会计属性未配置。6.5 终极验证用 curl 模拟 API 调用证明服务可编程GoodERP 开放标准 Odoo JSON-RPC 接口。用以下命令验证curl -s -X POST \ -H Content-Type: application/json \ -d { jsonrpc: 2.0, method: call, params: { service: common, method: login, args: [odoo16, adminexample.com, Odoo2024!] } } \ http://localhost:8069/web/database/manager | jq .result若返回true说明认证服务正常。再查供应商# 获取 session_id需替换为实际返回的 sid SIDyour_session_id_here DBodoo16 curl -s -X POST \ -H Content-Type: application/json \ -d { \jsonrpc\: \2.0\, \method\: \call\, \params\: { \service\: \object\, \method\: \execute\, \args\: [\$DB\, \$SID\, \res.partner\, \search_read\, [[[supplier_rank, , 0]], [name, vat]], {}] } } \ http://localhost:8069/web/jsonrpc | jq .result若返回供应商列表含name和vat证明 GoodERP 的 ORM 层、数据库连接、权限控制全部就绪。从那以后我每次部署 GoodERP都强制走一遍这笔采购入库单——它比任何systemctl status都更能暴露环境的脆弱点。因为业务逻辑才是 ERP 的心脏而心脏跳动的声音永远藏在那一张小小的入库单里。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?