关于 odoo

Odoo 是一款满足所有需求的 ERP/CRM 系统。

Odoo 是一个开源框架,针对 ERP 的需求发展而来,适合定制出符合客户各种需求的 ERP 系统和电子商务系统。 由于 Odoo 的底层结构很强大,所有模块都可以根据需要进行安装和御载,所以客户能像搭积木一样建构自己期望的系统。即使完全不安装与ERP相关的模块,仅利用 Odoo 自身的底层框架,也能构建出适合各种用途的系统,纯 B/S 架构。而这一切都是免费的,并且不受限于源代码,也不受于用户数。 Odoo 的主要模块包括:销售、采购、库存、财务、生产、项目管理、CRM、POS、人力资源、车辆管理、午餐管理等等。

Odoo 分为社区版和企业版,社区版开源免费并遵循 AGPLv3 协议,而企业版则是在社区版的基础之上增加了一些商业特性和服务。

此文档主要介绍如何在 InnerStack 上构建并部署 Odoo 14 社区版。

系统分析

Odoo 基于 Python 和 PostgreSQL:

数据库依赖 : 引用 AppSpec/PostgreSQL

InnerStack 支持 AppSpec 依赖引用,所以这里直接引用 sysinner-pgsql-v11-x1 (PostgreSQL 11 单机版) 这个 AppSpec 实现对 PostgreSQL 的依赖.

注: AppSpec/sysinner-pgsql-v11-x1 构建参考 Build PostgreSQL 11

构建 odoo 原始 package 包

  1. 主程序文件准备

odoo 以 python 语言开发,这里我们采用从 http://nightly.odoo.com/ 直接下载 tar.gz 包。

  1. 配置模板文件

odoo 依赖配置文件 odoo.conf, 对数据库访问配置是必要条件,这里将 odoo 的 odoo.conf 作为模板文件放在一个独立的相对路径下,并将配置文件中有关动态配置的变量值替换为形如 {{.cfg/odoo-ce-x1/odoo_conf}}, 这些模板变量将和下面的 AppSpec/Script 配合使用,在容器启动阶段完成配置信息的自动同步。

以上的二进制包和配置模板文件相关代码可通过如下方式下载和构建包文件:

注: 开始构建前,请确保你已经安装了 inpack 工具, 参考文档 inpack cli
git clone https://github.com/inpack/odoo.git
cd odoo

inpack build --dist linux --version 14.0.20201001

Building
  package: odoo
  version: 14.0.20201001
  release: 1
  dist:    linux
  arch:    x64
  vendor:  odoo.com
  OK
    odoo-14.0.20201001-1.linux.x64.txz

如果一切顺利,上传新构建的 inpack 原始包文件

inpack push --repo <your-alias-name> --pack_path odoo-14.0.20201001-1.linux.x64.txz 

PUSH /opt/src/inpack/odoo/odoo-14.0.20201001-1.linux.x64.txz
  ok odoo 100%

构建 odoo AppSpec 文件

AppSpec 通过登录 InnerStack inPanel 可视化 WebUI 管理 (https://ip-address:9530/in):

进入方式: Applications / AppSpec Center / New AppSpec

一个完整的定义实例如下图: app-new

更简单的方式: 在上面导出的 https://github.com/inpack/odoo.git 项目根目录有一个 app-spex-x1.toml 文件,可以在 WebUI/AppSpec 编辑界面的 “Advanced editing mode” 模式下直接提交该文件定义, 如下图:

app-new

注: 数据库配置信息同步到 odoo.conf 在 AppSpec/Script Executors 实现, 可参考实例文件细节

构建配置项

主要实现对数据库连接的自动配置, 在 inPanel/Applications/AppSpec 列表的 Config 列点击进入 (如果采用 Advanced editing mode 模式提交原始 app-spec.toml 可跳过此步骤):

app-new

如上步骤提交 AppSpec 后,就可以开始部署了.

部署

Step 1: New Instance

在 AppSpec List 找到 odoo-x1 , 点击 “New Instance”, 为应用设置一个名字

app-new

Step 2: 设置 Pod 容器

如下图, 系统会提示两个选项:

  1. 新建 Pod: 将这个 App 绑定到一个全新的 Pod 中运行
  2. 绑定到已有的 Pod: 一般用于 DevOps 开发,测试,生产环境推荐一个 App 对应一个 Pod.

app-new

注: 不符合硬件规格的 Pod 将不会出现在这个列表里面

这里选择新建 Pod Instance, 提示选择 Pod 规格:

app-new

确认 Pod 信息后继续下一步.

Step 3: 配置 PostgreSQL

因为引入依赖 AppSpec/sysinner-pgsql-v11-x1 ,这个时候进入 PostgreSQL 配置确认页, 完成对 db_name, db_user, db_auth 等信息确认, 系统后台自动处理并同步配置信息到 Pod/App 运行实例中, 用户可不关注具体细节。点击 “Next” 继续下面操作.

app-new

Step 4: 配置 odoo

  1. 为odoo设置一个名字
  2. 加入部分 odoo.conf 附加配置项目, 这项配置最终会通过合并方式(inagent conf-merge) 到 odoo.conf 中,所以请参照官方给出的 odoo.conf 完整描诉,只配置必要信息即可。

app-new

注: InnerStack 提供的富文本(ini,json,toml,yaml)是一个灵活强大的功能,支持智能合并,模板参数.

Step 5: 创建完成

成功后,会自动跳转到 Pod 详情,可以在这个页面里观察 AppSpec 在这个 Pod 里面的执行情况, 请等待一段时间 (odoo 首此运行需要下载大量 python/pip 依赖库以及编译部分模块,网络良好的情况下大概耗时 10 ~ 30 分钟),没有异常的话,Pod 详情页会出现更多有关这个 AppSpec 的信息,如图:

app-new

odoo 后续操作

以上对于 InnerStack 的操作已经完成,对于 odoo 本身而言,它以 WebUI 方式提供服务。

odoo 在 Pod 里面提供 web 服务的端口是 8069, 通过部署以后,对外的端口映射为 http://154.8.139.97:15576 (在 Pod 详情里面查看), 进入这个地址:

odoo 1: 应用成功部署后的首页

输入默认帐号密码 admin/admin

app-new

odoo 2: 进入系统

odoo 拥有功能强大的各类业务模块:

app-new

odoo 3: 在用户页,点击创建新的代码库

尝试安装一个模块 Sales, 点击进入:

app-new

注: 更多的操作信息请参考 https://odoo.com

申明

  • InnerStack/AppCenter 旨在助力企业构建自主 PaaS 平台,InnerStack 自身不提供任何云服务
  • AppCenter 涉及的方案、文档、代码、数据旨在为企业构建业务系统过程中提供指导参考,这些 AppSpec 组件可能没有经过完整的功能配置、测试和安全审计, 请不要直接用于生产系统。
  • AppCenter 包含的第三方项目源码统一开放在 https://github.com/inpack