Odoo

来自 ArchWiki

Odoo(前身为 OpenERP,更早之前为 TinyERP)是一套开源企业管理应用程序。该应用套件面向各种规模的公司,包括计费、会计、制造、采购、仓库管理和项目管理。

Odoo 具有一个应用服务器,该服务器使用 PostgreSQL 作为数据库后端,并具有一个基于 Web 的客户端。Odoo 使用 Python 编写,具有高度模块化的设计,可以通过 Open Object RAD 快速开发新模块。Odoo 开发人员对自由软件有着坚定的承诺。

围绕 Odoo 发展壮大了一个蓬勃发展的支持和开发社区,提供免费的技术支持、错误修复、新开发和支持服务。Odoo 以各种电子格式以及纸质形式提供广泛的文档。负责 Odoo 开发的公司通过与 Odoo 顾问的合作伙伴服务以及提供支持、培训、托管服务、软件开发和软件质量测试和验证来赚取利润。

安装

安装 Odoo

安装 odoo-venvAUR 软件包。这些依赖项和 Odoo 的大小需要占用大量磁盘空间(多个 GB)。如果您在当前目录中手动构建,请确保您的当前目录位于具有足够可用空间的设备上。

配置 PostgreSQL 以与 Odoo 一起运行

Odoo 使用 PostgreSQL 作为数据库后端。后者应该已随 odoo 软件包一起安装,因为 postgresql 作为依赖项出现。

有必要为 Odoo 创建一个新的 PostgreSQL 用户。如果 PostgreSQL 实例尚未初始化,请先按照PostgreSQL 安装过程进行操作。

以默认 PostgreSQL 超级用户“postgres”身份登录,并使用以下命令创建数据库用户(在 PostgreSQL 中称为角色odoo

  • 其中 --interactive 用于提示输入缺少的角色名称和属性,而不是使用默认值
  • --pwprompt 用于为新角色分配密码

为确保正确安装,您应该在修改 odoo 用户之前创建一个名为 odoo 或任何其他名称的数据库。然后,系统将首先使用 createuser 命令要求您输入密码。对于高度安全且易于记住的密码,请考虑使用 Diceware 密码短语。根据要求重新输入密码。接下来的三个问题应按顺序回答 n、y 和 n。

[postgres]$ createdb odoo
[postgres]$ createuser odoo --interactive --pwprompt
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n

您还可以使用以下命令行来指定选项以跳过交互式问题

[postgres]$ createuser odoo --createdb --login --no-superuser --no-createrole --pwprompt

完成回答这些问题后,键入 exit 返回到您的常规用户。

这完成了在 Arch Linux 下使用 Odoo 所需的 PostgreSQL 安装和设置。有关 PostgreSQL 配置的更多详细信息,请参见PostgreSQL文章。默认情况下,PostgreSQL 仅接受来自本地计算机的连接。如果您计划在两台不同的计算机上运行 PostgreSQL 和 Odoo,则需要按照PostgreSQL#配置 PostgreSQL 以便从远程主机访问进行操作。

配置 Odoo 以与 PostgreSQL 一起运行

Odoo 的配置文件位于 /etc/odoo/odoo.conf。根据您在上一步中指定的用户名和密码指定 db_userdb_password。如果 PostgreSQL 服务器位于不同的计算机上,请同时编辑 db_host

[options]
; This is the password that allows database operations:
; admin_passwd = admin
db_host = False
db_port = False
db_user = odoo
db_password = False

启动服务器

在继续以下行之前,请确保 PostgreSQL 正在运行并已启用。

要在启动时自动启动 Odoo,启用 odoo.service启动该单元以立即启动 Odoo。

登录

在您的 Web 浏览器中转到 https://127.0.0.1:8069 以访问 Odoo 登录页面。

在反向代理后运行 Odoo

您可以在 Web 服务器(例如 Apache HTTP ServerNginx)的反向代理模式下运行 odoo。这对于在本地网络中以域名(例如 odoo.mydomain.local)使 odoo 可用非常有用。它也有助于为静态资源启用缓存,并减少 odoo 应用程序的负载。

为了使其正常工作,您需要确保您的本地 DNS 服务器(例如 BINDdnsmasq)将您选择的域名解析为 Web 服务器的 IP 地址。如果在您的本地计算机上运行,您可以简单地将条目添加到 /etc/hosts,如下所示

127.0.0.1 odoo.mydomain.local

使用 Nginx

有关如何在 Nginx 中创建虚拟主机的指南,请参阅本指南

假设您的本地域名称为 mydomain.local,并且 odoo 与您的 Nginx 服务器托管在同一台计算机上,请在 servers-available 目录中创建一个包含此服务器块的文件

/etc/nginx/servers-available/odoo
upstream odoo {
    server 127.0.0.1:8069;
}

server {
    listen 80;
    server_name odoo.mydomain.local;
    root        /usr/share/nginx/html;
    index       index.html index.htm;
    access_log  /var/log/nginx/odoo-mydomain-local.access.log;
    error_log   /var/log/nginx/odoo-mydomain-local.error.log;

    location / {
        proxy_pass  http://odoo;
        # force timeouts if the backend dies
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;

        # set headers
        proxy_set_header    Host            $host;
        proxy_set_header    X-Real-IP       $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto https;
    }

    # cache some static data in memory for 60mins
    location ~* /web/static/ {
        proxy_cache_valid 200 60m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odoo;
    }
}

要启用,只需创建一个符号链接

# ln -s /etc/nginx/servers-available/odoo /etc/nginx/servers-enabled/odoo

重新加载重启 nginx 服务以启用新配置。

附加文档

由于 Odoo 是一个完整的企业解决方案,因此对于新手来说可能相当复杂。因此,强烈建议阅读Odoo 用户文档Odoo 技术文档