Установка Odoo 14 на CentOS 8 с помощью Let’s Encrypt SSL

Установка Odoo 14 на CentOS 8 с помощью Let’s Encrypt SSL

 

Этот пост был написан для ознакомления пользователей Linux с установкой ERP-системы Odoo 14 на CentOS 8. Odoo — это приложение для управления бизнесом с открытым исходным кодом с функциями POS, CRM, управления проектами, создания веб-сайтов, маркетинга, управления складом, электронной коммерции, выставления счетов И бухгалтерский учет, производство и многие другие интересные функции. Эти дополнительные функции можно разблокировать с помощью множества плагинов Odoo, доступных для установки.

На момент обновления этой статьи последним выпуском программного обеспечения Odoo ERP является версия 14. Мы начнем установку с обновления системы, установив все необходимые зависимости, такие как сервер базы данных PostgreSQL, и, наконец, выполним фактическую установку Odoo ERP 14 на CentOS 8. Nginx будет использоваться в качестве внешнего прокси для системы ERP и CRM Odoo 14 на CentOS 8.

 

Шаг 1. Обновите ОС, настройте имя хоста и DNS.

Войдите на сервер CentOS 8 и выполните обновление системы, затем перезагрузитесь.

sudo dnf -y update
sudo reboot

После перезагрузки системы настройте правильное имя хоста.

sudo hostnamectl set-hostname erp.infoit.com.ua --static
sudo hostnamectl set-hostname erp.infoit.com.ua --transient

Также добавьте действительную запись A на свой DNS-сервер.

Сохраните запись и убедитесь, что она работает, выполнив команду ping или dig.

$ sudo dnf -y install bind-utils
$ dig A erp.infoit.com.ua +short
168.119.127.45

Шаг 2: Добавьте репозиторий EPEL на сервер CentOS

Добавьте репозиторий EPEL в CentOS 8, выполнив команду.

sudo yum -y install epel-release vim bash-completion

Переведите SELinux в разрешающий режим.

sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Запустите команду yum repolist .

$ sudo yum repolist
repo id                                                     repo name
AppStream                                                   CentOS-8 - AppStream
BaseOS                                                      CentOS-8 - Base
epel                                                        Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                                Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                                      CentOS-8 - Extras

Шаг 3. Установите сервер базы данных PostgreSQL

Репозиторий Odoo ERP использует сервер базы данных PostgreSQL для хранения данных. Пакеты доступны в модулях DNF.

Отключить текущий модуль PostgreSQL по умолчанию.

sudo dnf -qy module disable postgresql

Включите модуль PostgreSQL 12.

sudo dnf module -y enable postgresql:12

Затем установите серверные и клиентские пакеты PostgreSQL.

sudo dnf -y install @postgresql

После установки перед запуском службы потребуется инициализация базы данных.

$ sudo /usr/bin/postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

Запустите и включите сервер базы данных.

$ sudo systemctl enable --now postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.

Создать пользователя базы данных odoo.

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

Шаг 4. Установите wkhtmltopdf на CentOS 8

Odoo использует  wkhtmltopdf  для создания отчетов в формате PDF. Рекомендуемая версия wkhtmltopdf для установки —  0.12.5  и доступна на  странице загрузки wkhtmltopdf в разделе архива.

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

Подтвердите установленную версию.

$ wkhtmltopdf --version
wkhtmltopdf 0.12.5 (with patched qt)

Вы готовы перейти к следующему этапу фактической установки Odoo 14 на CentOS 8.

Шаг 5: Установите Odoo 14 на CentOS 8

Добавить репозиторий EPEL:

yum -y install epel-release

Также включите репозиторий PowerTools.

sudo dnf config-manager --set-enabled powertools

Установите Python и другие зависимости сборки:

sudo yum -y install vim bash-completion zip git gcc openldap-devel python3 python3-devel redhat-rpm-config libxslt-devel libjpeg-devel freetype-devel bzip2-devel

Добавьте пользователя и группу системы Odoo.

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

Установите пароль для созданной учетной записи пользователя.

$ sudo passwd odoo
Changing password for user odoo.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

Проверьте данные пользователя:

$ id odoo
uid=992(odoo) gid=989(odoo) groups=989(odoo)

Переключитесь на учетную запись созданного пользователя:

$ sudo su - odoo

Клонировать ветку релиза 14 с Github.

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

Создайте Python Virtualenv.

cd /opt/odoo
python3 -m venv odoo-venv

Активируйте созданную виртуальную среду.

source odoo-venv/bin/activate

Установите зависимости Python в файл требований.

pip3 install -r odoo/requirements.txt

После успешной установки деактивируйте виртуальную среду,

deactivate
exit

Создайте файл журнала Odoo:

sudo touch /var/log/odoo.log

Создать собственный путь к надстройкам:

sudo mkdir /opt/odoo/odoo/custom-addons

Установите правильные разрешения для каталога:

sudo chown -R odoo:odoo /opt/odoo/ /var/log/odoo.log

Создайте файл конфигурации экземпляра Odoo:

sudo tee  /etc/odoo.conf<<EOF
[options]
proxy_mode = True
; This is the password that allows database operations:
admin_passwd = My[email protected]
db_host = False
db_port = False
db_user = odoo
db_password = False
xmlrpc_port = 8069
logfile = /var/log/odoo.log
logrotate = True
addons_path = /opt/odoo/odoo/addons,/opt/odoo/odoo/custom-addons
EOF

Создайте файл модуля Systemd Service.

sudo tee /etc/systemd/system/odoo.service<<EOF
[Unit]
Description=Odoo ERP Server
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target
EOF

Перезагрузить системные службы:

sudo systemctl daemon-reload

Запустить созданный сервис odoo.

sudo systemctl start odoo
sudo systemctl restart odoo

Включите запуск при загрузке.

$ sudo systemctl enable odoo
Created symlink /etc/systemd/system/multi-user.target.wants/odoo.service → /etc/systemd/system/odoo.service.

Подтвердите, настроен ли запуск службы Odoo при загрузке.

$ systemctl is-enabled odoo
enabled

Проверить, работает ли.

$ systemctl status odoo
● odoo.service - Odoo ERP Server
   Loaded: loaded (/etc/systemd/system/odoo.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-10-11 18:38:30 CEST; 48s ago
 Main PID: 25201 (python3)
    Tasks: 4 (limit: 24392)
   Memory: 59.2M
   CGroup: /system.slice/odoo.service
           └─25201 /opt/odoo/odoo-venv/bin/python3 /opt/odoo/odoo/odoo-bin -c /etc/odoo.conf

Oct 11 18:38:30 erp.infoit.com.ua systemd[1]: Started Odoo ERP Server.

После запуска служба Odoo должна подключиться к TCP-порту  8069  .

$ sudo ss -tunelp | grep 8069
tcp     LISTEN   0        128              0.0.0.0:8069          0.0.0.0:*       users:(("python3",pid=25201,fd=4)) uid:992 ino:64882 sk:5 <->

Установите веб-сервер Nginx на CentOS 8:

sudo yum -y install nginx
sudo systemctl enable --now nginx

Создайте новый файл конфигурации для odoo.

sudo vim /etc/nginx/conf.d/odoo.conf

Измените этот фрагмент конфигурации в соответствии со своими настройками.

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

server {
    listen 80;
    server_name erp.infoit.com.ua;
    access_log /var/log/nginx/odoo_access.log;
    error_log /var/log/nginx/odoo_error.log;


    # Proxy settings
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;
    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;

    # Request for root domain
    location / {
       proxy_redirect off;
       proxy_pass http://odooserver;
    }

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

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

Замените  erp.infoit.com.ua  своим доменным именем, затем проверьте файл конфигурации Nginx.

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

Если все в порядке, перезапустите Nginx.

sudo systemctl restart nginx

Если ваш сервер имеет общедоступный IP-адрес, вы можете создать DNS-запись A для своего домена, чтобы указать на сервер Odoo и запросить бесплатный SSL-сертификат Let’s Encrypt.

Установите Nginx на сервере CentOS 8.

sudo yum -y install nginx
sudo systemctl enable --now nginx

Установите инструмент certbot-auto.

sudo yum -y install wget
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto

Остановите службу Nginx.

sudo systemctl stop nginx

Получите SSL-сертификаты Let’s Encrypt для своего домена.

export DOMAIN="erp.infoit.com.ua"
export EMAIL="webmaster@erp.infoit.com.ua"
sudo /usr/local/bin/certbot-auto certonly --standalone -d ${DOMAIN} --preferred-challenges http --agree-tos -n -m ${EMAIL} --keep-until-expiring

Путь к файлам сертификатов указан в разделе “IMPORTANT NOTES” .

IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/erp.infoit.com.ua/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/erp.infoit.com.ua/privkey.pem
Your cert will expire on 2021-01-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew all of your certificates, run
"certbot-auto 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

Создайте cron для продления сертификата.

$ sudo crontab -e
15 3 * * * /usr/local/bin/certbot-auto renew --pre-hook "systemctl stop nginx" --post-hook "systemctl start nginx"

Создайте файл конфигурации Nginx.

sudo vim /etc/nginx/conf.d/odoo.conf

Вставьте ниже в файл и  измените  его в соответствии с вашей средой.

# Odoo Upstreams
upstream odooserver {
 server 127.0.0.1:8069;
}

# http to https redirection
server {
    listen 80;
    server_name erp.infoit.com.ua;
    return 301 https://erp.infoit.com.ua$request_uri;
}

server {
    listen 443 ssl;
    server_name erp.infoit.com.ua;
    access_log /var/log/nginx/odoo_access.log;
    error_log /var/log/nginx/odoo_error.log;
   
   # SSL
    ssl_certificate /etc/letsencrypt/live/erp.infoit.com.ua/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/erp.infoit.com.ua/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/erp.infoit.com.ua/chain.pem;


    # Proxy settings
    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;
    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;

    # Request for root domain
    location / {
       proxy_redirect off;
       proxy_pass http://odooserver;
    }

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

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

Проверьте свои конфигурации Nginx.

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

Перезапустите Nginx.

sudo systemctl restart nginx

Шаг 8: Доступ к Odoo 14 на сервере CentOS 8

Доступ к веб-странице Odoo на вашем доменном имени из Интернет – https://DNShostname.

Вы также можете получить доступ к веб-странице Odoo прямо на:

http://<your_server_IP_address>:8069

На первой странице установите имя базы данных, адрес электронной почты администратора и пароль для пользователя с правами администратора.

Теперь у вас установлена ​​и работает Odoo ERP на сервере CentOS 8. Следите за последними статьями на нашем сайте.