Odoo(前身为OpenERP)是一款免费开源的ERP解决方案,适用于多种类型的企业。Odoo提供客户关系管理(CRM)、销售管道、项目管理、制造、发票、会计、电子商务等功能。

Odoo是企业最完整的ERP解决方案之一。它默认包含30个核心模块,并提供超过4500个社区模块来帮助您的多项业务。本教程将指导您在Ubuntu 24.04服务器上安装Odoo开源ERP。您将安装并配置最新稳定版Odoo 17,为Odoo设置PostgreSQL数据库,并使用Nginx作为反向代理。

前提条件

要开始本教程,您需要以下条件:

  • 一台Ubuntu 24.04服务器(本示例使用主机名为'odoo-server'的Ubuntu服务器)
  • 一个具有sudo权限的非root用户,或使用root用户
  • 一个已指向服务器IP地址的域名(生产环境需要)

安装依赖

要安装Odoo,您首先需要在Ubuntu系统上安装一些依赖包。Odoo ERP是一个主要用Python编写的Web应用程序,因此还需要安装一些Python包。

在安装软件包之前,运行以下apt命令更新和刷新包索引。

sudo apt update

Ubuntu 24.04安装Odoo ERP教程

接下来,通过以下apt命令安装Odoo的包依赖。此安装将包括最新版本的Python、用于编译Python包的build-essentials,以及Odoo需要的一些库。

sudo apt install git wget python3 build-essential libzip-dev python3-dev libxslt1-dev python3-pip libldap2-dev python3-wheel libsasl2-dev python3-venv python3-setuptools node-less libjpeg-dev xfonts-75dpi xfonts-base libxrender1 libpq-dev libffi-dev fontconfig

出现提示时,输入y确认并按ENTER继续。

Ubuntu 24.04安装Odoo ERP教程

安装完Python和其他依赖后,下一步是安装Node.js和wkhtmltopdf包。

安装Node.js

要安装Odoo,必须确保系统上已安装Node.js。Node.js用于生成Odoo Web应用程序的静态文件。在本步骤中,您将从第三方Nodesource仓库安装Node.js 20。

运行以下命令下载并设置Node.js 20的Nodesource仓库。

sudo curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -

Ubuntu 24.04安装Odoo ERP教程

接下来,运行以下apt命令安装Node.js包。

sudo apt install nodejs

Ubuntu 24.04安装Odoo ERP教程

Node.js安装完成后,运行以下npm命令安装'rtlcss'包。该包是Odoo所需的,特别是当您使用阿拉伯语和希伯来语等从右到左的用户界面时。

sudo npm install -g rtlcss

Ubuntu 24.04安装Odoo ERP教程

安装Wkhtmltopdf

Odoo开源ERP需要安装wkhtmltopdf包。该包用于通过Qt Webkit将HTML页面渲染为PDF和各种图像格式。wkhtmltopdf将通过.deb包手动安装到Ubuntu系统上。

运行以下命令下载wkhtmltopdf包的.deb文件。

cd /tmp
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.jammy_amd64.deb

通过以下dpkg命令安装wkhtmltopdf包。

sudo dpkg -i wkhtmltox_0.12.6.1-3.jammy_amd64.deb

如果遇到缺少包的错误,通过以下apt命令修复。

sudo apt install -f

Ubuntu 24.04安装Odoo ERP教程

安装wkhtmltopdf后,可以通过以下命令验证二进制文件是否默认位于'/usr/local/bin'目录。

ls /usr/local/bin
echo $PATH
which wkhtmltopdf
which wkhtmltoimage

Ubuntu 24.04安装Odoo ERP教程

安装PostgreSQL数据库服务器

Odoo开源ERP支持MySQL、SQLite和PostgreSQL等数据库。在本步骤中,您将安装并使用PostgreSQL作为Odoo安装的默认数据库。您还将设置PostgreSQL角色并修改PostgreSQL配置。

运行以下apt命令安装PostgreSQL数据库服务器。

sudo apt install postgresql

Ubuntu 24.04安装Odoo ERP教程

安装PostgreSQL后,运行以下命令验证服务是否已启用并正在运行。

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Ubuntu 24.04安装Odoo ERP教程

接下来,为Odoo创建一个新的PostgreSQL角色。运行以下命令以'postgres'用户登录并创建名为'odoo'的新角色。

su - postgres
createuser -sdP odoo

输入新角色'odoo'的密码并重复确认。

通过以下psql命令登录到PostgreSQL shell。

psql

运行以下查询验证PostgreSQL上的角色列表,确保角色'odoo'已创建。

\du

输入'\q'退出PostgreSQL shell,然后输入'exit'退出postgres用户。

Ubuntu 24.04安装Odoo ERP教程

创建odoo角色后,测试'odoo'角色的认证。以'postgres'用户登录,并通过psql命令验证'odoo'角色。

su - postgres
psql -h 127.0.0.1 -U odoo -d postgres

登录后,运行'\conn'验证连接。

Ubuntu 24.04安装Odoo ERP教程

下载Odoo 17

在本示例中,您将使用'odoo'用户设置并运行odoo v17。运行以下命令创建新用户'odoo',主目录为'/opt/odoo',默认shell为bash。

sudo adduser --system --group --home=/opt/odoo --shell=/bin/bash odoo

进入'/opt/odoo'目录,通过git命令下载odoo 17源代码。

cd /opt/odoo
git clone https://github.com/odoo/odoo.git --depth 1 --branch 17.0 --single-branch odoo-server

运行以下命令将odoo源代码的所有权更改为用户和组'odoo'。

sudo chown -R odoo:odoo /opt/odoo/odoo-server

安装Odoo的Python依赖

在本步骤中,您将为Odoo设置Python虚拟环境,并通过pip3命令安装Python依赖。

将工作目录切换到'/opt/odoo/odoo-server'并创建新的Python虚拟环境'venv'。

cd /opt/odoo/odoo-server
python3 -m venv venv
source venv/bin/activate

激活Python虚拟环境后,运行以下pip3命令安装wheel包和Odoo Python依赖。

pip3 install wheel
pip3 install -r requirements.txt

Ubuntu 24.04安装Odoo ERP教程

安装完成后,运行以下命令退出Python虚拟环境。

deactivate

创建Odoo配置

使用nano编辑器创建新的配置文件'/etc/odoo.conf'。

sudo nano /etc/odoo.conf

将以下配置添加到文件中,确保将'admin_passwd'和数据库用户及密码更改为您自己的设置。

[options]
; This is the password that allows database operations:
admin_passwd = adminpassodoo
db_host = 127.0.0.1
db_port = 5432
db_user = odoo
db_password = odoo
addons_path = /opt/odoo/odoo-server/addons
xmlrpc_port = 8069
logfile = /var/log/odoo/odoo-server.log
log_level = debug

保存文件并退出编辑器。然后更改配置文件的所有权。

sudo chown odoo:odoo /etc/odoo.conf
sudo mkdir /var/log/odoo
sudo chown odoo:odoo /var/log/odoo
sudo chmod 755 /var/log/odoo

将Odoo配置为systemd服务

您可以手动通过命令行运行odoo,但更方便的做法是将odoo作为systemd服务运行,这样可以通过systemctl命令管理odoo。

使用nano编辑器创建新的systemd服务文件'/lib/systemd/system/odoo-server.service'。

sudo nano /lib/systemd/system/odoo-server.service

添加以下配置到文件中。

[Unit]
Description=Odoo 17.0 Service
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target

保存文件并退出。重新加载systemd管理器,启动并启用服务。

sudo systemctl daemon-reload
sudo systemctl start odoo-server
sudo systemctl enable odoo-server
sudo systemctl status odoo-server

Ubuntu 24.04安装Odoo ERP教程

Ubuntu 24.04安装Odoo ERP教程

配置Nginx反向代理

在生产环境中部署odoo的推荐方式是使用反向代理。在本步骤中,您将安装并配置Nginx作为odoo Web应用程序的反向代理,并使用SSL证书保护odoo安装。

首先,修改odoo配置文件'/etc/odoo.conf',添加以下配置使odoo作为后端应用运行在127.0.0.1上。

sudo nano /etc/odoo.conf

添加以下两行配置:

xmlrpc_interface = 127.0.0.1
proxy_mode = True

保存并重启odoo服务。

sudo systemctl restart odoo-server

安装Nginx Web服务器。

sudo apt install nginx

Ubuntu 24.04安装Odoo ERP教程

创建新的Nginx服务器块配置'/etc/nginx/sites-available/odoo.conf'。

sudo nano /etc/nginx/sites-available/odoo.conf

将以下配置添加到文件中,确保将域名和SSL证书路径更改为您自己的设置。

#odoo server
upstream odoo {
server 127.0.0.1:8069;
}
upstream odoochat {
server 127.0.0.1:8072;
}

# http -> https
server {
listen 80;
server_name odoo.howtoforge.local;
rewrite ^(.*) https://$host$1 permanent;
}

server {
listen 443 ssl http2;
server_name odoo.howtoforge.local;
proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;

# Add Headers for odoo proxy mode
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;

# SSL parameters
ssl_certificate /etc/letsencrypt/live/odoo.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/odoo.howtoforge.local/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_dhparam /etc/ssl/certs/dhparam.pem;

# log
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;

# Redirect longpoll requests to odoo longpolling port
location /longpolling {
proxy_pass http://odoochat;
}

# Redirect requests to the odoo backend server
location / {
proxy_redirect off;
proxy_pass http://odoo;
}

# common gzip
gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
gzip on;
}

保存文件后,激活Nginx服务器块配置并验证配置。

sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Ubuntu 24.04安装Odoo ERP教程

配置UFW防火墙

建议在odoo安装中启用防火墙。运行以下命令将OpenSSH和Nginx Full添加到UFW防火墙。

sudo ufw allow "OpenSSH"
sudo ufw enable
sudo ufw allow "Nginx Full"
sudo ufw status

Ubuntu 24.04安装Odoo ERP教程

Odoo数据库迁移和安装

打开Web浏览器访问您的odoo安装域名(如 https://odoo.howtoforge.local/)。首次访问时需要迁移数据库并创建新的管理员用户。

此处的Master Password就是在'/etc/odoo.conf'文件中设置的'admin_passwd'。输入新的数据库名称,输入odoo管理员用户的详细信息和密码。您还可以选择Demo data复选框添加演示数据。

点击"Create database"开始odoo安装。

Ubuntu 24.04安装Odoo ERP教程

Odoo安装完成后,您将被重定向到odoo登录页面。输入管理员邮箱和密码并点击"Login"。

Ubuntu 24.04安装Odoo ERP教程

您现在应该可以看到odoo用户仪表板。

Ubuntu 24.04安装Odoo ERP教程

总结

恭喜!您已在Ubuntu 24.04服务器上成功安装了Odoo开源ERP。您还学习了PostgreSQL数据库服务器的基本安装和配置为反向代理的Nginx Web服务器。此时,您的Ubuntu服务器上已完全安全的Odoo安装。您可以开始添加适合您业务的额外插件和附加组件。