介绍
Odoo是一个开源的企业资源规划(ERP)工具,用Python编写,它支持各种不同的业务需求的插件,如会计,薪酬,库存管理等。
在本教程中,您将使用 Docker Compose 安装 Odoo 和 PostgreSQL 数据库,然后安装 Nginx 作为您的 Odoo 网站的反向代理程序。
前提条件
要完成本教程,您将需要:
- 具有 2 个或更多 CPU 的 Ubuntu 20.04 服务器,具有 sudo 访问的非根用户和防火墙。 要设置此功能,请遵循我们的 初始服务器设置与 Ubuntu 20.04 教程。
- Docker 已安装。
<$>[info] 注: 如果您正在使用 DigitalOcean 的 One-Click Docker Image,您可以跳过这些前提条件。
在您选择的区域启动新 Docker 图像,然后登录为 root 用户,然后继续使用教程。
最后,要启用 TLS,您需要一个域名,指向您的服务器的公共 IP 地址。这应该是example.com
或odoo.example.com
。如果您使用的是 DigitalOcean,请参阅我们的 DNS Quickstart 有关在您的控制面板中创建域资源的信息。
一旦你有所有前提条件,继续到 步骤1 ,在那里你将安装docker-compose
包。
步骤 1 – 安装 Docker Compose
要安装docker-compose
命令行工具,请更新您的包列表,然后使用apt
安装包:
1sudo apt update
2sudo apt install docker-compose
<$>[注] 注 :您还可以安装比 Ubuntu 20.04 附带的更新的 Docker Compose 包。
如果您选择使用此版本的 Docker Compose,则需要代替docker compose
作为命令而不是docker-compose
。
您可以通过运行以下命令确认该包已安装:
1docker-compose –version
您应该获得如下类型的输出:
1[secondary_label Output]
2docker-compose version 1.25.0, build unknown
3docker-py version: 4.1.0
4CPython version: 3.8.10
一旦您确认 Docker Compose 已安装在您的服务器上,您将在本教程的下一步中使用 Docker Compose 配置和启动 Odoo 和 PostgreSQL。
步骤 2 — 使用 Docker Compose 运行 Odoo 和 PostgreSQL
要开始创建您的 Odoo 和 PostgreSQL 容器,在您的主目录中创建一个名为odoo
的目录,以存储您将在本教程中创建的文件。
运行以下命令来创建目录,然后将cd
放入其中:
1mkdir ~/odoo
2cd ~/odoo
现在,使用nano
或您喜爱的编辑器,打开一个名为docker-compose.yml
的新空白YAML文件:
1nano docker-compose.yml
您将使用此文件与docker-compose
命令启动您的 Odoo 和 PostgreSQL 容器,并将它们连接在一起。
1[label docker-compose.yml]
2version: '3'
3services:
4 odoo:
5 image: odoo:15.0
6 env_file: .env
7 depends_on:
8 - postgres
9 ports:
10 - "127.0.0.1:8069:8069"
11 volumes:
12 - data:/var/lib/odoo
13 postgres:
14 image: postgres:13
15 env_file: .env
16 volumes:
17 - db:/var/lib/postgresql/data/pgdata
18
19volumes:
20 data:
21 db:
该文件定义了两个服务
。第一个被称为odoo
,它运行 Odoo 应用程序。第二个被称为postgres
,这是 PostgreSQL 数据库容器。这两个服务都引用了它们在运行容器实例外存储数据的名称。最后,odoo
服务将您服务器上的端口8069
暴露在运行在同一端口8069
上的 Odoo 容器上。
如果你正在使用nano
,按CTRL+O
,然后按RETURN
,然后按CTRL+X
退出。
Odoo 和 PostgreSQL 容器使用环境变量来配置自己. docker-compose.yml
文件为这两个服务指定了 env_file
指令. 该指令随后包括所引用的文件,其中包含每个服务需要运行的变量。
这种方法通常是建议的,而不是直接将环境变量添加到docker-compose.yml文件,因为这是一个良好的做法,以保持密码在你的docker-compose.yml文件。
打开一个新的 .env
文件与 nano
:
1nano .env
将下列行添加到文件中,以POSTGRES_USER
和POSTGRES_PASSWORD
代替您选择的值:
1[label .env]
2# postgresql environment variables
3POSTGRES_DB=postgres
4POSTGRES_PASSWORD=a_strong_password_for_user
5POSTGRES_USER=odoo
6PGDATA=/var/lib/postgresql/data/pgdata
7
8# odoo environment variables
9HOST=postgres
10USER=odoo
11PASSWORD=a_strong_password_for_user
要生成 Odoo 和 PostgreSQL 的密码,请使用openssl
命令,该命令应该在大多数 Linux 系统上可用。 在您的服务器上运行以下命令,以生成随机集的字节,并打印可作为密码使用的 base64 编码版本:
1openssl rand -base64 30
将结果的字符串粘贴到您的 .env
文件中,而不是 a_strong_password_for_user
位置持有人密码。
当你完成了编辑你的.env 文件时,保存和退出你的文本编辑器。
您现在已经准备好使用docker-compose
命令启动odoo
和postgres
容器:
1docker-compose up -d
「上」子命令告訴「docker-compose」啟動容器以及在「docker-compose.yml」檔案中定義的相關卷和網絡。 「docker-compose」旗(即「daemonize」)告訴「docker-compose」在背景下執行容器,以便命令不會接管您的終端。
1[secondary_label Output]
2Creating network "odoo_default" with the default driver
3Creating volume "odoo_odoo_data" with default driver
4Creating volume "odoo_postgres_data" with default driver
5Pulling odoo (odoo:14.0)...
615.0: Pulling from library/odoo
7. . .
<$>[info]
如果您想随时停止您的 Odoo 和 PostgreSQL 容器,请在您的 ~/odoo
目录中运行以下命令:
1docker-compose stop
容器将被停止. 其卷中的配置和数据将保留,以便您可以使用 docker-compose up -d
命令重新启动容器。
当完成时,Odoo应该运行,您可以通过使用弯曲
命令来检测网页服务器在127.0.0.1:8069
运行:
1curl --head http://localhost:8069
这将只从响应中打印 HTTP 标题:
1[secondary_label Output]
2HTTP/1.0 303 SEE OTHER
3Content-Type: text/html; charset=utf-8
4Content-Length: 215
5Location: http://localhost:8069/web
6Set-Cookie: session_id=142fa5c02742d0f5f16c73bc14ec8144b8230f8a; Expires=Mon, 06-Jun-2022 20:45:34 GMT; Max-Age=7776000; HttpOnly; Path=/
7Server: Werkzeug/0.14.1 Python/3.7.3
8Date: Tue, 08 Mar 2022 20:45:34 GMT
303 SEE OTHER
响应意味着 Odoo 服务器正在运行,但您应该访问另一个页面来完成安装。 标注为 http://localhost:8069/web
的位置标题表示您浏览器中可以访问 Odoo 安装程序页面。
接下来,我们将设置 Nginx 来向 Odoo 容器提供公共交通代理。
步骤 3:安装和配置 Nginx
将 Nginx 等 Web 服务器放在 Odoo 服务器前面可以通过下载缓存、压缩和静态文件来提高性能,从而实现更高效的流程。我们将安装 Nginx 并将其配置为 reverse proxy 请求到 Odoo,这意味着它将负责将用户的请求发送到 Odoo 并再次返回。使用非集装箱化 Nginx 流程也将使下一步更容易添加 Let's Encrypt TLS 证书。
首先,更新您的包列表,然后使用apt
安装 Nginx:
1sudo apt update
2sudo apt install nginx
允许公共流量到端口 80 和
443 (HTTP 和 HTTPS) 使用 Nginx 完整 UFW 应用程序配置文件:
1sudo ufw allow "Nginx Full"
1[secondary_label Output]
2Rule added
3Rule added (v6)
接下来,在/etc/nginx/sites-available
目录中打开一个新的 Nginx 配置文件,我们将称呼我们的odoo.conf
,但您可以使用不同的名称:
1sudo nano /etc/nginx/sites-available/odoo.conf
将下列内容粘贴到新配置文件中,确保将your_domain_here
替换为您已配置的域,以指向您的 Odoo 服务器。
1[label /etc/nginx/sites-available/odoo.conf]
2server {
3 listen 80;
4 listen [::]:80;
5 server_name your_domain_here;
6
7 access_log /var/log/nginx/odoo.access.log;
8 error_log /var/log/nginx/odoo.error.log;
9
10 location / {
11 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
12 proxy_set_header X-Real-IP $remote_addr;
13 proxy_set_header X-Forwarded-Host $host;
14 proxy_set_header X-Forwarded-Proto https;
15 proxy_pass http://localhost:8069;
16 }
17}
此配置目前仅限于HTTP,因为我们将让Certbot在下一步负责配置TLS,其余的配置文件会设置日志位置,然后传输所有流量,以及一些重要的代理标题,以及http://localhost:8069
,我们在上一步启动的Odoo容器。
保存并关闭文件,然后通过将其链接到 /etc/nginx/sites-enabled/
来启用配置:
1sudo ln -s /etc/nginx/sites-available/odoo.conf /etc/nginx/sites-enabled/
使用nginx -t
来验证配置文件语法是否正确:
1sudo nginx -t
1[secondary_label Output]
2nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
3nginx: configuration file /etc/nginx/nginx.conf test is successful
最后,用新的配置重新加载nginx
服务:
1sudo systemctl reload nginx.service
您的 Odoo 网站现在应该在简单的 HTTP 上载 http://your_domain_here
(您可能需要点击安全警告),它将看起来像这样:
现在你有你的网站上运行HTTP,是时候用Certbot和Let's Encrypt证书确保连接了。
步骤 4 – 安装 Certbot 和设置 TLS 证书
感谢 Certbot 和 Let’s Encrypt 免费证书授权,将 TLS 加密添加到您的 Odoo 应用程序只需要两个命令。
首先,安装 Certbot 及其 Nginx 插件:
1sudo apt install certbot python3-certbot-nginx
接下来,在--nginx
模式下运行certbot
,并指定您在 Nginxserver_name
配置指令中使用的相同域:
1sudo certbot --nginx -d your_domain_here
您将被要求同意 Let's Encrypt 服务条款,并输入电子邮件地址。
之后,您将被问及是否要将所有HTTP流量重定向到HTTPS。
之后,Let’s Encrypt 将确认您的请求,Certbot 将下载您的证书:
1[secondary_label Output]
2Congratulations! You have successfully enabled https://odoo.example.com
3
4You should test your configuration at:
5https://www.ssllabs.com/ssltest/analyze.html?d=odoo.example.com
6- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
7
8IMPORTANT NOTES:
9 - Congratulations! Your certificate and chain have been saved at:
10 /etc/letsencrypt/live/odoo.example.com/fullchain.pem
11 Your key file has been saved at:
12 /etc/letsencrypt/live/odoo.example.com/privkey.pem
13 Your cert will expire on 2022-05-09. To obtain a new or tweaked
14 version of this certificate in the future, simply run certbot again
15 with the "certonly" option. To non-interactively renew *all* of
16 your certificates, run "certbot renew"
17 - Your account credentials have been saved in your Certbot
18 configuration directory at /etc/letsencrypt. You should make a
19 secure backup of this folder now. This configuration directory will
20 also contain certificates and private keys obtained by Certbot so
21 making regular backups of this folder is ideal.
22 - If you like Certbot, please consider supporting our work by:
23
24 Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
25 Donating to EFF: https://eff.org/donate-le
Certbot 将自动重新加载 Nginx 与新的配置和证书. 在您的浏览器中重新加载您的网站,如果您选择了重定向选项,它应该自动切换到 HTTPS。
您的网站现在是安全的,它是安全的继续基于Web的设置步骤。
步骤5 - 设置 Odoo
回到您的网页浏览器,重新加载页面. 您现在应该通过安全的 https://
连接打开 Odoo 的数据库配置页面. 现在您可以安全地输入用户名和密码来完成安装过程。
您在本页上输入的信息将告诉 Odoo 应用程序如何创建其 PostgreSQL 数据库以及默认管理用户的详细信息。
填写以下字段:
- 数据库名称: odoo
- 电子邮件: 您的电子邮件地址
- 密码: 强大而独特的密码您的管理员 login
- 演示数据: 确保如果这是您第一次安装odoo ,请检查此选项。
默认值对剩余字段都很好,请确保记录您选择的电子邮件和密码值,因为您将在未来使用这些值来登录 Odoo。
现在点击页面的左下角的创建数据库
按钮。Odo 可能需要一两分钟才能创建其数据库表。当过程完成后,您将被重定向到Odo Apps 的管理页面。
从这里,您可以选择您想为您的ERP需求安装和使用的Odoo模块。如果您想测试应用程序,请点击 Install 按钮在 ** Sales** 板上。
点击屏幕左上方的分割方块图标,然后在下滑选项列表中选择 ** 销售 ** 链接。
您将在页面上指导您定制数据、报价、订单以及您可以实验的示例销售列表。
结论
在本教程中,您使用 Docker Compose 启动了 Odoo ERP 应用程序和 PostgreSQL 数据库,然后设置了 Nginx 反向代理,并使用 Let's Encrypt TLS 证书保护它。
您现在已经准备好使用所提供的模块开始构建您的ERP网站了,有关使用Odoo的更多信息,请参阅 官方的Odoo文档。
如果您想编写自己的自定义 Odoo 模块或自定义现有模块,那么 开发者文档是开始的好地方。