在 CentOS 8 上安装 Odoo 14

Odoo 是世界上最流行的一体式商务软件。它提供一系列业务应用程序,包括 CRM、网站、电子商务、计费、会计、制造、仓库、项目管理、库存等,所有应用程序都无缝集成。

Odoo可以以不同的方式安装,具体取决于用例和可用技术。安装 Odoo 的最简单和最快的方法是使用官方的Odoo APT存储库。

在虚拟环境中安装 Odoo 或部署为Docker容器,使您能够更好地控制应用程序,并允许您在同一系统上运行多个 Odoo 实例。

本文介绍如何在 CentOS 8 上的 Python 虚拟环境中安装和部署 Odoo 14。我们将从官方 GitHub 存储库下载 Odoo,并使用 Nginx 作为反向代理。

安装先决条件

Odoo 是用 Python 写的。第一步是安装Python 3、Git、pip以及从源构建 Odoo 所需的所有库和工具:

sudo dnf install python3 python3-devel git gcc sassc redhat-rpm-config libxslt-devel  \    bzip2-devel openldap-devel libjpeg-devel freetype-devel

创建系统用户

不允许在根用户下运行 Odoo,因为存在安全风险。创建一个新的系统用户和组与主目录,将运行 Odoo 服务:/opt/odoo

sudo useradd -m -U -r -d /opt/odoo14 -s /bin/bash odoo14

您可以为用户命名任何你喜欢的名称;只需确保创建具有相同名称的 Postgresql 用户。

安装和配置 PostgreSQL

Odoo 使用 PostgreSQL 作为数据库的背面。我们将从标准 CentOS 8 存储库安装PostgreSQL 12:

sudo dnf install @postgresql:12

安装完成后,创建新的 PostgreSQL 数据库群集:

sudo postgresql-setup initdb

启用并启动 PostgreSQL 服务:

sudo systemctl enable --now postgresql

创建与以前创建的系统用户同名的 PostgreSQL 用户。在此示例中,这是:odoo14

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

安装 Wkhtmltopdf

wkhtmltopdf 是一组开源命令行工具,用于将 HTML 页面呈现为 PDF 和各种图像格式。若要在 Odoo 中打印 PDF 报表,您需要安装包。Odoo 推荐的版本是 版本,可以从 Github 下载和安装:wkhtmltox0.12.5

sudo dnf install https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm

安装和配置 Odoo 14

我们将在隔离的 Python 虚拟环境中从源安装 Odoo。

首先,更改为用户”odoo14″:

sudo su - odoo14

从 Odoo GitHub 存储库克隆 Odoo 14 源代码:

git clone https://www.github.com/odoo/odoo --depth 1 --branch 14.0 /opt/odoo14/odoo

导航到目录并创建一个新的 Python 虚拟环境,用于 Odoo 安装:/opt/odoo14

cd /opt/odoo14python3 -m venv venv

使用源命令激活环境:

source venv/bin/activate

安装所需的 Python 模块:

pip3 install -r odoo/requirements.txt
如果在安装过程中遇到任何编译错误,请确保已安装本节中列出的所有必需的依赖项。Installing Prerequisites

完成后,通过键入:

deactivate

为自定义加载项创建新目录:

mkdir /opt/odoo14/odoo-custom-addons

我们将将此目录添加到参数中。此参数定义 Odoo 搜索模块的目录列表。addons_path

切换回您的 sudo 用户:

exit

创建包含以下内容的配置文件:

sudo nano /etc/odoo14.conf
/etc/odoo14.conf
[options]
admin_passwd = superadmin_passwd
db_host = False
db_port = False
db_user = odoo14
db_password = False
addons_path = /opt/odoo14/odoo/addons, /opt/odoo14/odoo-custom-addons

复制

保存并关闭文件。

不要忘记将 更改为更安全的东西。superadmin_passwd

创建系统单元文件

打开文本编辑器并创建使用以下内容调用的服务单元文件:odoo14.service

sudo nano /etc/systemd/system/odoo14.service

粘贴以下内容:

/etc/系统/系统/odoo14.服务
[Unit]
Description=Odoo14
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target

复制

通知系统存在新的单位文件:

sudo systemctl daemon-reload

启动并启用 Odoo 服务:

sudo systemctl enable --now odoo14

验证 Odoo 是否正在使用以下命令运行:

sudo systemctl status odoo14

输出应如下所示,显示 Odoo 服务处于活动状态并运行:

● odoo14.service - Odoo14
   Loaded: loaded (/etc/systemd/system/odoo14.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-11-02 20:12:24 UTC; 3s ago
...

若要查看 Odoo 服务记录的消息,请使用以下命令:

sudo journalctl -u odoo14

测试安装

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

假设安装成功,将显示类似于以下内容的屏幕:

odoo-14_hu822163957ae5b33716e355bc4848d595_36633_768x0_resize_q75_lanczos

如果无法访问该页面,请确保防火墙中的端口已打开:8069

sudo firewall-cmd --permanent --zone=public --add-port=8069/tcpsudo firewall-cmd --reload

将 Nginx 配置为 SSL 终止代理

默认的 Odoo Web 服务器通过 HTTP 提供流量。为使 Odoo 实例更安全,我们将 Nginx 配置为 SSL 终止代理,通过 HTTPS 为流量服务。

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

使用反向代理为您提供许多好处,如负载平衡、SSL 终止、缓存、压缩、提供静态内容等。

在继续本节之前,请确保您已满足以下先决条件:

  • 指向公共服务器 IP 的域名。我们将使用 。example.com
  • 已安装 Nginx 。
  • 域的 SSL 证书。您可以安装一个免费的让我们加密SSL证书。

打开文本编辑器并创建/编辑域服务器块:

sudo nano /etc/nginx/conf.d/example.com

以下配置设置 SSL 终止、HTTP到 HTTPS 重定向、WWW 到非 WWW 重定向、缓存静态文件以及启用GZip压缩。

/etc/nginx/conf.d/示例.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;
    include snippets/letsencrypt.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 Ooo 域,并设置 SSL 证书文件的正确路径。此配置中使用的代码段在本教程中创建。

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

sudo systemctl restart nginx

接下来,我们需要告诉 Odoo 使用代理。为此,请打开配置文件并添加以下行:

/etc/odoo14.conf
proxy_mode = True

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

sudo systemctl restart odoo14

此时,将配置反向代理,您可以在 访问 Odoo 实例。https://example.com

更改绑定接口

此步骤是可选的,但它是一个很好的安全实践。

默认情况下,Odoo 服务器侦听所有接口上的端口。若要禁用对 Odoo 实例的直接访问,可以阻止所有公共接口的端口,也可以强制 Odoo 仅在本地接口上侦听。80698069

我们将将 Odoo 配置为仅在 侦听 。打开配置,在文件末尾添加以下两行:127.0.0.1

/etc/odoo14.conf
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

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

sudo systemctl restart odoo14

启用多处理

默认情况下,Odoo 在多线程模式下工作。对于生产部署,建议更改为多处理服务器,因为它提高了稳定性,并更好地使用系统资源。

要启用多处理,您需要编辑 Odoo 配置并设置非零数量的工作进程。工作线程数根据 CPU 内核数和可用 RAM 计算。

根据官方的Odoo文档,要计算工人的数量和所需的RAM内存大小,您可以使用以下公式和假设:

工作人员编号计算

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

RAM 内存大小计算

  • 我们将考虑 20% 的请求是较重的请求,80% 的请求是较轻的请求。重要求使用约 1 GB 的 RAM,而较轻的 RAM 使用约 150 MB 的 RAM
  • 需要拉姆 |number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )

如果您不知道您的系统有多少 CPU,请使用以下grep命令:

grep -c ^processor /proc/cpuinfo

假设您有一个系统,具有 4 个 CPU 内核、8 GB 的 RAM 内存和 30 个并发 Odoo 用户。

  • 30 users / 6 = **5**(5 是所需的理论工人数量)
  • (4 * 2) + 1 = **9**(9 是理论上的最大工人数量)

根据上述计算,您可以使用 5 个工作工 + 1 个工种作为 cron 工人,总共 6 个工人。

根据工作人员数量计算 RAM 消耗量:

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

计算表明,Odoo 安装将需要大约 2GB 的 RAM。

要切换到多处理模式,请打开配置文件并追加计算值:

/etc/odoo14.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 odoo14

系统资源的其余部分将由在此系统上运行的其他服务使用。在本教程中,我们在同一服务器上安装了 Odoo 以及 PostgreSQL 和 Nginx。根据您的设置,您可能还在服务器上运行其他服务。

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun35723.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2021年2月4日 下午8:46
下一篇 2021年2月4日

相关推荐

  • 如何修复 Windows 11 中的视频 DXGKRNL 致命错误

    一些用户抱怨他们的计算机经常崩溃并显示停止代码VIDEO DXGKRNL FATAL ERROR。 此特定问题仅偶尔发生,并且错误检查值为 0x00000113,这表明 Micro…

    2021年12月9日 Win 11
  • 如何在 CentOS 8 上安装 MicroK8s

    MicroK8s 是一个面向开发人员、物联网和 Edge的小型、快速、单包Kubernetes。一个命令在 Linux、Windows 和 macOS 上安装带有精心挑选的附加组件…

    2021年9月4日
  • 如何在 CentOS 8 上安装 ArangoDB

    ArangoDB 是一个开源 NoSQL 数据库管理器,提供现代 Web 应用程序所需的所有数据库功能。ArangoDB 不像 MySQL 或 PostgreSQL 那样使用传统的…

    Linux命令 2021年8月1日
  • 如何在 CentOS 8 上安装 OpenSSL

    OpenSSL 是一个强大的、商业级的、功能齐全的传输层安全 (TLS) 协议开源工具包以前称为安全套接字层 (SSL) 协议。协议实现基于全功能通用密码库,也可以独立使用。Ope…

    2021年7月12日
  • 如何在 CentOS 8 上安装 Monit

    Monit 是 Linux 操作系统的开源进程跟踪工具,可帮助您监控系统进程。它会自动对特定过程进行维护和修复,并确保它重新上线。Monit 还可用于处理和监控包、文件、目录、文件…

    2021年7月5日
  • 如何在 CentOS 8 上安装 Google Cloud SDK

    Google Cloud SDK 包含的工具和库使您能够在 Google Cloud Platform 上轻松创建和管理资源。它也支持 Linux、Mac 和 Windows。 在…

    2021年6月29日
  • 如何在 CentOS 8 上安装 WebERP

    webERP 是一个免费、开源且完整的基于 Web 的会计和业务管理系统。您只需要一个网络浏览器和 PDF 阅读器即可使用 webERP。使用 webERP,您可以管理许多事情,包…

    2021年6月23日
  • 如何在 CentOS 8 上安装 VeraCrypt

    VeraCrypt 是适用于 Windows、Mac OS X 和 Linux 的免费开源磁盘加密软件。如果攻击者强迫您透露密码,VeraCrypt 会提供合理的否认。相比之下,对…

    2021年6月15日
  • 六月的补丁星期二修复了 7 个零日 Windows 漏洞,这些漏洞在野外被利用最多

    点击进入:ChatGPT工具插件导航大全 Windows 11 Pro ISO文件在哪下载最新版?如何下载原装纯净版Win11 ?点击进入   持续更新! 本月的更新很糟糕,修复了…

    2021年6月9日
  • 如何在 CentOS 8 上安装 Caddy

    Caddy Web 服务器是一个用Go编写的开源 Web 服务器。它围绕简单性和安全性而设计,具有许多对托管网站有用的功能。Caddy 旨在支持所有流行平台,这就是为什么它适用于 …

    2021年6月8日
  • 如何在CentOS 8上安装Jitsi Meet

    Jitsi Meet是市场上流行的开源视频会议工具之一。Jitsi Meet是Zoom,Skype和Google Meet的一种简单,优雅且安全的替代方案,它支持所有常见的浏览器以…

    2021年5月28日
  • 如何在CentOS 8上安装Roundcube Webmail

    Roundcube是使用PHP编程语言编写的流行Webmail接口。您可以通过Roundcube Web界面上的POP / IMAP访问在Linux服务器上创建的邮箱。 在Cent…

    2021年5月25日
  • 如何在CentOS 8上安装Polr

    Porr是一种快速,现代且开源的链接简化程序。它允许您托管自己的URL缩短器,标记URL并控制数据。Polr可以帮助您推广在线品牌,因为通过跟踪每个链接的点击可以更方便地共享短链接…

    2021年5月25日
  • 如何在CentOS 8上安装Samba

    Samba是一个免费的开源软件,可用于在Linux之间共享文件,文件夹和打印机。和Windows系统。 在CentOS 8上安装Samba 步骤1.首先,让我们首先确保您的系统是最…

    2021年5月17日
  • 如何在CentOS 8上安装Virtualmin

    Virtualmin是一个免费的服务器控制面板(也提供Pro版本)。它有助于使用Apache,Nginx,PHP,DNS,MySQL,FTP,SSH等管理网站(主机)。它基于著名的…

    2021年5月9日
  • 如何在CentOS 8上更改时区

    默认情况下,在配置服务器时,默认时区将自动使用协调世界时(UTC)进行配置。 。在CentOS上,系统的时区是在安装过程中设置的,但以后可以轻松更改。 在CentOS 8上更改时区…

    2021年5月5日
  • 如何在CentOS 8上安装Telnet远程工具

    Telnet是提供双向交互式基于文本的通信的应用程序层协议。它在服务器/客户端模式下工作,在该模式下,将Telnet服务器应用程序安装在主计算机上,并且所有其他计算机都使用Teln…

    2021年5月5日
  • 如何在CentOS 8上安装Telnet

    Telnet是提供双向交互式基于文本的通信的应用程序层协议。它在服务器/客户端模式下工作,在该模式下,将Telnet服务器应用程序安装在主计算机上,并且所有其他计算机都使用Teln…

    2021年4月30日
  • 如何在CentOS 8上安装NTP服务器

    Chrony是网络时间协议(NTP)的实现。Chrony通常将计算机与Internet时间服务器或其他资源(例如无线电或卫星接收器或电话调制解调器服务)同步。它也可以用作客户端系统…

    2021年4月23日
  • 如何在CentOS 8上安装TeamSpeak

    TeamSpeak是跨平台的语音服务器或VOIP应用程序,用于通过Internet进行实时语音聊天。游戏玩家通常使用它来与队友进行交流,以提供清晰的声音,无延迟的性能,军事级的安全…

    2021年4月23日
  • 如何在CentOS 8上安装Deluge BitTorrent客户端

    Deluge使用了前端和后端架构,其中libtorrent是用C ++编写的软件库,可提供应用程序的功能。网络逻辑通过项目自己的Python绑定使用GTK +连​​接到各种前端之一…

    2021年4月21日
  • 如何在CentOS 8上安装Dig

    在CentOS 8上安装Dig 步骤1.首先,让我们首先确保您的系统是最新的。 sudo dnf update sudo dnf install epel-release 步骤2.…

    2021年4月20日
  • 如何在CentOS 8上安装Apache Subversion

    Apache Subversion(SVN)是一个免费的开源版本控制系统,用于管理和跟踪Windows中的更改。文件和目录。每次更改,添加或删除使用Subversion管理的文件或…

    2021年4月20日
  • 如何在CentOS 8上安装Flectra

    Flectra是一个免费和开源的CRM(客户关系管理)和ERP(企业资源计划)软件系统。提供了很大的灵活性和自定义性,可让您满足业务的独特需求。简而言之,Flectra为您提供了一…

    2021年4月12日
  • 如何在CentOS 8上安装Emacs Editor

    Emacs是一个非常有用的功能丰富的文本编辑器,可以在多种平台上使用。由于它对使用不同语言编写代码的相当大的支持,因此它受到大多数程序员的青睐。如果您正在考虑在Linux上切换到E…

    2021年4月12日