如何在 Ubuntu 上使用 Docker 安装 Odoo

0 股票
0
0
0
0

介绍

Odoo 是一款用 Python 编写的开源企业资源计划 (ERP) 工具。它支持多种插件,可满足各种业务需求,例如会计、薪资、库存管理等等。在本教程中,您将使用 Docker Compose 安装 Odoo 和 PostgreSQL 数据库,然后安装 Nginx 作为 Odoo 站点的反向代理。最后,您将使用 Certbot 从 Let's Encrypt 证书颁发机构下载并配置 TLS 证书,从而启用安全的 HTTPS 连接。.

先决条件
  • 一台配备 2 个或更多 CPU 的 Ubuntu 服务器,一个具有 sudo 权限的非 root 用户,以及一个已启用的防火墙。.
  • Docker 已安装
  • 最后,要启用TLS,您需要一个指向服务器公网IP地址的域名。这应该类似于example.com或odoo.example.com。.

准备好所有先决条件后,请继续执行步骤 1,安装 docker-compose 软件包。.

步骤 1 – 安装 Docker Compose

安装命令行工具 docker-compose刷新软件包列表,然后使用以下命令安装软件包 易于 安装:

sudo apt update
sudo apt install docker-compose

您可以通过运行以下命令来验证软件包是否已安装:

docker-compose –version

你应该会看到类似如下的输出:

Output
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.10

确认 Docker Compose 已安装在服务器上后,您将在本教程的下一步中使用 Docker Compose 配置并启动 Odoo 和 PostgreSQL。.

步骤 2 – 使用 Docker Compose 运行 Odoo 和 PostgreSQL

要开始创建 Odoo 和 PostgreSQL 容器,请在您的主目录中创建一个名为 odoo 的目录,用于存储本教程中将要创建的文件。您将使用此目录来存储运行 Odoo 所需的所有文件。.

运行以下命令创建目录,然后 光盘 运行它:

mkdir ~/odoo
cd ~/odoo

现在创建一个名为“新空 YAML 文件”的文件 docker-compose.yml 使用 纳米 或者打开你最喜欢的编辑器:

nano docker-compose.yml

您可以使用以下命令使用此文件。 docker-compose 您将使用此文件启动 Odoo 和 PostgreSQL 容器并将它们连接起来。请将以下几行添加到文件中:

version: '3'
services:
odoo:
image: odoo:15.0
env_file: .env
depends_on:
- postgres
ports:
- "127.0.0.1:8069:8069"
volumes:
- data:/var/lib/odoo
postgres:
image: postgres:13
env_file: .env
volumes:
- db:/var/lib/postgresql/data/pgdata
volumes:
data:
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 文件之外是一种良好的编程实践。如果您将文件提交到 Git 仓库或其他版本控制系统,这种方法尤其有用。.

使用 nano 编辑器打开一个新的 env 文件:

nano .env

将以下几行添加到文件中,并将高亮显示的值替换为 POSTGRES_USERPOSTGRES_PASSWORD 请替换您的选择:

# postgresql environment variables
POSTGRES_DB=postgres
POSTGRES_PASSWORD=a_strong_password_for_user
POSTGRES_USER=odoo
PGDATA=/var/lib/postgresql/data/pgdata
# odoo environment variables
HOST=postgres
USER=odoo
PASSWORD=a_strong_password_for_user

要为 Odoo 和 PostgreSQL 生成密码,请使用 openssl 命令,该命令在大多数 Linux 系统上都可用。在服务器上运行以下命令,生成一组随机字节,并打印出 base64 编码的版本,您可以将其用作密码:

openssl rand -base64 30

使用生成的字符串代替密码。 用户强密码 在文件中 .env 编辑完 .env 文件后,保存并退出文本编辑器。.

现在你已经准备好创建容器了。 奥杜PostgreSQL 使用命令 docker-compose 开始使用:

docker-compose up -d

`up` 子命令指示 docker-compose 启动容器以及在 docker-compose.yml 文件中定义的关联卷和网络。`-d` 标志(代表“守护进程化”)指示 docker-compose 在后台运行容器,这样您的终端命令就不会接管进程。docker-compose 在下载所需的 Docker 镜像并启动容器时会输出一些简短的信息:

Output
Creating network "odoo_default" with the default driver
Creating volume "odoo_odoo_data" with default driver
Creating volume "odoo_postgres_data" with default driver
Pulling odoo (odoo:14.0)...
15.0: Pulling from library/odoo
. . .

完成上述步骤后,Odoo 应该就能运行了。您可以使用 curl 命令获取首页来测试 Web 服务器是否正在运行。 127.0.0.1:8069 跑动次数:

curl --head http://localhost:8069

这将仅打印响应中的 HTTP 标头:

Output
HTTP/1.0 303 SEE OTHER
Content-Type: text/html; charset=utf-8
Content-Length: 215
Location: http://localhost:8069/web
Set-Cookie: session_id=142fa5c02742d0f5f16c73bc14ec8144b8230f8a; Expires=Mon, 06-Jun-2022 20:45:34 GMT; Max-Age=7776000; HttpOnly; Path=/
Server: Werkzeug/0.14.1 Python/3.7.3
Date: Tue, 08 Mar 2022 20:45:34 GMT

回答 303 查看其他 这意味着服务器 Odoo 它已经启动并运行,但您需要访问另一个页面才能完成安装。页眉 http://localhost:8069/web 指定位置指示您应该在浏览器中访问 Odoo 安装程序页面的位置。.

然后我们将设置 Nginx 来代理公共流量到 Odoo 容器。.

步骤 3 – 安装和配置 Nginx

在 Odoo 服务器前端部署 Nginx 等 Web 服务器,可以通过卸载缓存、压缩和静态文件服务等任务来提高性能,从而实现更高效的处理。我们将安装 Nginx 并将其配置为反向代理,以便将请求转发到 Odoo,这意味着它将负责将用户的请求发送到 Odoo 并返回。使用非容器化的 Nginx 进程将使下一步添加 Let's Encrypt TLS 证书更加容易。.

首先刷新软件包列表,然后使用以下命令安装 Nginx: 易于 安装:

sudo apt update
sudo apt install nginx

使用 Nginx Full UFW 应用程序配置文件,允许公共流量访问端口 80 和 443(HTTP 和 HTTPS):

sudo ufw allow "Nginx Full"
Output
Rule added
Rule added (v6)

然后,在 /etc/nginx/sites-available 目录下新建一个 Nginx 配置文件。我们将其命名为 odoo.conf,但您可以使用其他名称:

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

将以下内容粘贴到新的配置文件中,确保将 your_domain_here 替换为您配置的指向 Odoo 服务器的域名。例如,域名应类似于 odoo.example.com:

server {
listen 80;
listen [::]:80;
server_name your_domain_here;
access_log /var/log/nginx/odoo.access.log;
error_log /var/log/nginx/odoo.error.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://localhost:8069;
}
}

目前此配置仅支持 HTTP,我们将在下一步让 Certbot 配置 TLS。配置文件其余部分设置了证书注册商的位置,然后将所有流量以及一些重要的代理标头发送到 http://localhost:8069,即我们在上一步启动的 Odoo 容器。.

保存并关闭文件,然后通过将其链接到 /etc/nginx/sites-enabled/ 来启用配置:

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

使用 nginx -t 检查配置文件语法:

sudo nginx -t
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最后,使用新配置重新加载 nginx 服务:

sudo systemctl reload nginx.service

您的 Odoo 网站现在应该可以通过纯 HTTP 访问了。加载 http://your_domain_here(您可能需要点击安全警告),页面将显示如下:


现在您的网站已经通过 HTTP 协议搭建完成,接下来需要使用 Certbot 和 Let's Encrypt 证书来保护连接安全。您必须在进行 Odoo 的 Web 端设置流程之前完成此步骤。.

第四步 – 安装 Certbot 并设置 TLS 证书

借助 Certbot 和免费的 Let's Encrypt 许可证,只需两条命令即可为您的 Odoo 应用程序添加 TLS 加密。.

首先,安装 Certbot 及其 Nginx 插件:

sudo apt install certbot python3-certbot-nginx

接下来,以 --nginx 模式运行 certbot,并指定与 Nginx server_name 配置指令中使用的相同的域名:

sudo certbot --nginx -d your_domain_here

您将被要求同意 Let's Encrypt 的服务条款并输入电子邮件地址。之后,系统会询问您是否要将所有 HTTP 流量重定向到 HTTPS。这完全取决于您,但通常建议这样做,这样做也很安全。.

之后,Let's Encrypt 将批准您的请求,Certbot 将下载您的证书:

Output
Congratulations! You have successfully enabled https://odoo.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=odoo.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/odoo.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/odoo.example.com/privkey.pem
Your cert will expire on 2022-05-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Certbot 会自动使用新的配置和证书加载 Nginx。在浏览器中重新加载您的网站,如果您选择了重定向选项,它应该会自动切换到 HTTPS。.

您的网站现在安全,可以继续进行基于网络的设置过程。.

步骤 5 – 设置 Odoo

返回浏览器,重新加载页面。现在您应该可以通过安全的 https:// 连接打开 Odoo 数据库配置页面。您可以安全地输入用户名和密码来完成安装过程。.

您在此页面上填写的信息会告诉 Odoo 应用程序如何创建其 PostgreSQL 数据库以及有关默认管理用户的详细信息。.

请填写以下字段:
  • 数据库名称:odoo
  • 电子邮件:您的电子邮件地址
  • 密码:管理员登录时使用强密码且密码唯一性强。
  • 演示数据:如果您是第一次安装 Odoo,请确保选中此选项。

其余字段均可使用默认值。请务必记录您选择的电子邮件地址和密码,因为您将来需要使用它们登录 Odoo。.

现在点击页面左下角的“创建数据库”按钮。Odoo 可能需要一两分钟来创建数据库表。创建完成后,您将被重定向到 Odoo 应用管理页面。.


在这里,您可以选择要安装和使用的 Odoo 模块,以满足您的 ERP 需求。如果您想测试某个应用,请点击“销售”磁贴中的“安装”按钮。Odoo 将安装该模块,然后将您重定向到 Discuss 应用的个人页面。.

点击页面左上角的分割方块图标,然后在下拉列表中选择“销售”链接。.


您将进入一个页面,该页面将指导您自定义数据、定价、订单以及您可以进行试验的销售样本列表。.

结果

在本教程中,您使用 Docker Compose 部署了 Odoo ERP 应用程序和 PostgreSQL 数据库,然后设置了 Nginx 反向代理,并使用 Let's Encrypt TLS 证书对其进行了保护。.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

您可能也喜欢