阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何在Ubuntu 18.04上部署Odoo 11

220次阅读
没有评论

共计 6907 个字符,预计需要花费 18 分钟才能阅读完成。

Odoo 是世界上最受欢迎的一体化商业软件,包含 CRM,网站,电子商务,计费,会计,制造,仓库,项目管理,库存等多种商业应用程序,无缝地 集成。

根据所需的用例,有几种安装 Odoo 的方法。本指南涵盖了在 Ubuntu 18.04 系统上使用 Git 源代码和 Python virtualenv 安装和配置 Odoo 进行生产所需的步骤。

在你开始之前

将系统更新到最新的软件包:

sudo apt update && sudo apt upgrade

安装 git,pip 以及构建 Odoo 依赖所需的工具和库:

sudo apt install git python3-pip build-essential wget python3-dev libxslt-dev libzip-dev libldap2-dev libsasl2-dev python3-setuptools

创建 Odoo 用户

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

useradd -m -d /opt/odoo -U -r -s /bin/bash odoo

你可以任意命名用户,只要确保你创建了一个具有相同名字的 postgres 用户。

安装和配置 PostgreSQL

从 Ubuntu 的默认存储库安装 Postgres 软件包:

sudo apt-get install postgresql

安装完成后,创建一个与以前创建的系统用户名相同的 postgres 用户,在我们的例子中为 odoo:

sudo su – postgres -c “createuser -s odoo”

安装并配置 Odoo

我们将从 GitHub 存储库安装 odoo,这样我们就可以对版本和更新有更多的控制。我们还将使用 virtualenv 这是一个创建独立 Python 环境的工具。

在开始安装过程之前,请确保您切换到 odoo 用户。

sudo su – odoo

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

whoami

现在我们可以从安装过程开始,首先从 GitHub 存储库克隆 odoo:

git clone https://www.github.com/odoo/odoo –depth 1 –branch 11.0 /opt/odoo/odoo11

  • 如果您想安装不同的 Odoo 版本,只需在 –branch 开关后更改版本号。
  • 您可以随意命名目录,例如 odoo11,您可以使用域的名称。

pip 是一个用于安装和管理 Python 包的工具,我们将使用它来安装所有必需的 Python 模块,并将其安装到:

pip3 install virtualenv

为我们的 Odoo 11 安装运行创建一个新的虚拟环境:

cd /opt/odoo
virtualenv odoo11-venv

输出

Using base prefix ‘/usr’
New python executable in /opt/odoo/odoo11-venv/bin/python3
Also creating executable in /opt/odoo/odoo11-venv/bin/python
Installing setuptools, pip, wheel…done.

激活环境:

source odoo11-venv/bin/activate】

并安装所有必需的 Python 模块:

pip3 install -r odoo11/requirements.txt

如果在安装过程中遇到任何编译错误,请确保已安装“开始之前”部分中列出的所有必需依赖项。

安装完成后,请停用环境并使用以下命令切换回 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

打开文件并编辑它,如下所示:

/etc/odoo11.conf

[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

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

创建一个 systemd 单元文件

要将 odoo 作为服务运行,我们将使用以下内容在 / etc / systemd / system / 目录中创建 odoo11.service 单元文件:

/etc/systemd/system/odoo11.service

[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

输出:

● odoo11.service – Odoo11
  Loaded: loaded (/etc/systemd/system/odoo11.service; disabled; vendor preset: enabled)
  Active: active (running) since Thu 2018-05-03 21:23:08 UTC; 3s ago
 Main PID: 18351 (python3)
    Tasks: 4 (limit: 507)
  CGroup: /system.slice/odoo11.service
          └─18351 /opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf

如果没有错误,您可以启用 Odoo 服务在启动时自动启动:

sudo systemctl enable odoo11

如果你想查看 Odoo 服务记录的消息,你可以使用下面的命令:

sudo journalctl -u odoo11

测试安装

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

假设安装成功,将出现类似于以下的截图:

如何在 Ubuntu 18.04 上部署 Odoo 11

将 Nginx 配置为 SSL 终止代理

如果您想使用 Nginx 作为 SSL 终止代理,请确保您符合以下先决条件:

您有一个指向您的公共服务器 IP 的域名。在本教程中,我们将使用 example.com。

通过下面的介绍安装 Nginx。

您的域名安装了 SSL 证书。通过以下介绍,您可以安装免费的 Let’s Encrypt SSL 证书。

默认的 Odoo Web 服务器通过 HTTP 提供流量。为了使我们的 Odoo 部署最安全,我们将 Nginx 配置为一个 SSL 终止代理,它将通过 HTTPS 提供流量。

SSL 终止代理是处理 SSL 加密 / 解密的代理服务器。这意味着我们的终止代理(Nginx)将处理和解密传入的 TLS 连接(HTTPS),并将未加密的请求传递给我们的内部服务(Odoo),因此 Nginx 和 Odoo 之间的流量不会被加密(HTTP)。

我们需要告诉 Odoo 我们将使用代理,打开配置文件并添加以下行:

/etc/odoo11.conf

proxy_mode = True

重新启动 Odoo 服务以使更改生效:

sudo systemctl restart odoo11

使用 Nginx 作为代理给了我们几个好处。在本例中,我们将配置 SSL 终止,HTTP 到 HTTPS 重定向,WWW 到非 WWW 重定向,缓存静态文件和启用 GZip 压缩。

/etc/nginx/sites-enabled/example.com

# Odoo servers
upstream odoo {
 server 127.0.0.1:8069;
}

upstream odoochat {
 server 127.0.0.1:8072;
}

# HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    # Proxy headers
    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/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

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

    # Handle longpoll requests
    location /longpolling {
        proxy_pass http://odoochat;
    }

    # Handle / requests
    location / {
      proxy_redirect off;
      proxy_pass http://odoo;
    }

    # Cache static files
    location ~* /web/static/ {
        proxy_cache_valid 200 90m;
        proxy_buffering on;
        expires 864000;
        proxy_pass http://odoo;
    }

    # Gzip
    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;
}

不要忘记将 example.com 替换为您的 Odoo 域,并设置 SSL 证书文件的正确路径。本指南中创建了此配置中使用的片段。

完成后,重新启动 Nginx 服务:

sudo systemctl restart nginx

更改绑定界面

这一步是可选的,但这是一个很好的安全措施。默认情况下,Odoo 服务器在所有接口上侦听端口 8069,因此如果要禁用直接访问您的 Odoo 实例,您可以阻止所有公共接口的端口 8069,或强制 Odoo 只在本地接口上侦听。

在本指南中,我们将强制 Odoo 只在 127.0.0.1 上进行监听,打开 Odoo 配置文件末尾添加以下两行:

/etc/odoo11.conf

xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

保存配置文件并重新启动 Odoo 服务器以使更改生效:

sudo systemctl restart odoo

启用多处理

默认情况下,Odoo 正在使用多线程模式。对于生产部署,建议切换到多处理服务器,因为它可以提��稳定性并更好地使用系统资源。为了启用多处理,我们需要编辑 Odoo 配置并设置非零数量的工作进程。

多处理模式仅适用于 Windows 系统上可用的基于 Unix 的系统

工作人员的数量是根据系统中的 CPU 核心数量和可用的 RAM 内存来计算的。

根据官方的 [Odoo 文档](“https://www.odoo.com/documentation/11.0/setup/deploy.html”)计算工人数量和所需的 RAM 内存大小,我们将使用以下公式和假设:

工人数量计算

  • 理论最大工人数 =(system_cpus * 2)+1
  • 1 名工作人员可以服务〜= 6 个并发用户
  • Cron 工作人员还需要 CPU

RAM 内存大小计算

  • 我们会考虑所有请求中有 20%是重度请求,而 80%是较轻的请求。大量的请求使用大约 1 GB 的 RAM,而较轻的则使用大约 150 MB 的 RAM
  • 需要的 RAM = number_of_workers * ((light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )

如果您不知道系统上有多少 CPU,则可以使用以下命令:

grep -c ^processor /proc/cpuinfo

假设我们有一个带有 4 个 CPU 核心,8 GB RAM 内存和 30 个并发 Odoo 用户的系统。

  • 30 个用户 / 6 = ** 5 **(5 是需要工人的理论数量)
  • (4 * 2)+ 1 = ** 9 **(9 是工人的理论最大数量)

根据上面的计算,我们可以使用 5 名工人 + 1 名工人,工人总数为 6 人。让我们根据工作人员的人数来检查 RAM 内存消耗。

RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM

上面的计算表明我们的 Odoo 安装需要大约 2GB 的 RAM。

要切换到多处理模式,请打开配置文件并追加以下几行:

/etc/odoo11.conf

limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 5

重新启动 Odoo 服务以使更改生效:

sudo systemctl restart odoo11

剩下的系统资源将被我们机器上运行的其他服务使用。在本指南中,我们在同一台服务器上安装了 Odoo 以及 PostgreSQL 和 Nginx,根据您的设置,您的服务器上可能还会运行其他服务。

搞定!如果您有任何问题,请随时在下面留言。

更多 Ubuntu 相关信息见 Ubuntu 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=2

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6907字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中