Odoo 是全球最受欢迎的商业软件之一。根据所需的使用场景,有多种安装 Odoo 的方法。

使用官方仓库是安装 Odoo 最简单、最快的方法。

如果您希望对版本和更新有更大的控制权,或者希望在您的机器上运行多个 Odoo 版本,那么这种方法就不适合您,因为 Odoo 包不允许在同一台机器上进行多次 Odoo 安装。在这种情况下,您可以使用 Docker 和 Docker Compose,或者在 Python 虚拟环境中安装 Odoo。

本指南介绍了在 Ubuntu 16.04 上使用 Git 源代码和 Python 虚拟环境安装和配置 Odoo 的必要步骤。

开始之前

在继续本教程之前,请确保您已以具有 sudo 权限的用户身份登录。

将软件包索引和所有已安装的软件包更新到最新版本:

sudo apt update && sudo apt upgrade

安装 Git、Pip、Node.js 以及构建 Odoo 依赖项所需的工具:

sudo apt install git python3-pip build-essential python3-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev node-less

创建 Odoo 用户

创建一个新系统用户和组,其主目录为 /opt/odoo,该用户将运行 Odoo 服务:

useradd -m -d /opt/odoo -U -r -s /bin/bash odoo
Tip您可以随意命名该用户,只需确保创建一个同名的 PostgreSQL 用户即可。

安装并配置 PostgreSQL

从 Ubuntu 的默认仓库中安装 PostgreSQL 软件包:

sudo apt install postgresql

安装完成后,创建一个与之前创建的系统用户同名的新 PostgreSQL 用户,在我们的例子中是 odoo:

sudo su - postgres -c "createuser -s odoo"

安装 Wkhtmltopdf

为了打印 PDF 报表,您需要 wkhtmltopdf 工具。推荐的 Wkhtmltopdf 版本是 0.12.1,但该版本在官方 Ubuntu 16.04 仓库中不可用。我们将从官方 Wkhtmltopdf 网站下载并安装推荐的版本。

使用以下 wget 命令下载软件包:

wget https://builds.wkhtmltopdf.org/0.12.1.3/wkhtmltox_0.12.1.3-1~xenial_amd64.deb

下载完成后,通过键入以下内容安装软件包:

sudo apt install ./wkhtmltox_0.12.1.3-1~xenial_amd64.deb

安装并配置 Odoo

我们将从 GitHub 仓库在隔离的 Python 环境中安装 Odoo,以便对版本和更新有更大的控制权。

在安装过程开始之前,请确保切换到用户“odoo”:

sudo su - odoo

要确认您是以 odoo 用户身份登录,请使用以下命令:

whoami

通过从 GitHub 仓库克隆 Odoo 源代码开始安装过程:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 /opt/odoo/odoo11
Tip
  • 如果您想下载并安装不同版本的 Odoo,只需更改 --branch 开关后的版本号。
  • 您可以将 Odoo 源代码下载到任何您喜欢的地方,例如,除了 odoo11,您还可以使用您的域名名称。

virtualenv 是一个用于创建隔离 Python 环境的工具。要安装它,请使用:

pip3 install virtualenv

为 Odoo 安装创建一个新的 Python 虚拟环境:

cd /opt/odoo
virtualenv odoo11-venv

激活环境:

source odoo11-venv/bin/activate

安装所有必需的 Python 模块:

pip3 install -r odoo11/requirements.txt
Info如果在安装过程中遇到任何编译错误,请确保已安装 开始之前 部分列出的所有必需依赖项。

安装完成后,停用环境并使用以下命令切换回您的 sudo 用户:

deactivate
exit

如果您打算安装其他模块,最好将这些模块保存在单独的目录中。要为附加模块创建一个新目录,请运行:

sudo mkdir /opt/odoo/odoo11-custom-addons
sudo chown odoo: /opt/odoo/odoo11-custom-addons

接下来我们需要做的是创建一个配置文件。我们可以从头开始创建一个新文件,也可以复制包含的配置文件:

sudo cp /opt/odoo/odoo11/debian/odoo.conf /etc/odoo11.conf

打开文件并按如下方式编辑:

sudo nano /etc/odoo11.conf
/etc/odoo11.confini
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo/odoo11/addons
; If you are using custom modules
; addons_path = /opt/odoo/odoo11/addons,/opt/odoo/odoo11-custom-addons

完成后,关闭并保存文件。

Info不要忘记将 my_admin_passwd 更改为更安全的密码,如果您使用的是自定义模块,请调整 addons_path。

创建 systemd 单元文件

要将 odoo 作为服务运行,我们需要在 /etc/systemd/system/ 目录中创建一个 odoo11.service 单元文件。

打开您的文本编辑器并粘贴以下行:

sudo nano /etc/systemd/system/odoo11.service
/etc/systemd/system/odoo11.serviceini
[Unit]
Description=Odoo11
Requires=postgresql.service
After=network.target postgresql.service

[Service]
Type=simple
SyslogIdentifier=odoo11
PermissionsStartOnly=true
User=odoo
Group=odoo
ExecStart=/opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target

通知 systemd 新的单元文件已创建,并通过执行以下命令启动 Odoo 服务:

sudo systemctl daemon-reload
sudo systemctl start odoo11

使用以下命令检查服务状态:

sudo systemctl status odoo11

输出应类似于以下内容,表明 Odoo 服务处于活动状态并正在运行。

● odoo11.service - Odoo11
   Loaded: loaded (/etc/systemd/system/odoo11.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-01-23 21:09:25 UTC; 1s ago
 Main PID: 14146 (python3)
   CGroup: /system.slice/odoo11.service
           └─14146 /opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf

启用 Odoo 服务以在启动时自动启动:

sudo systemctl enable odoo11

如果您想查看 Odoo 服务记录的日志消息,可以使用 journalctl:

sudo journalctl -u odoo11

测试安装

打开浏览器并输入:http://<your_domain_or_IP_address>:8069

假设安装成功,将出现类似以下的屏幕:

Odoo 11 安装截图

此时您已经拥有一个正常运行的 Odoo 11 安装。您可以通过创建新数据库并完成安装,然后开始处理您的项目。