Установка 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 <->
Шаг 6. Настройте прокси-сервер Nginx (без SSL) — не рекомендуется
Установите веб-сервер 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
Шаг 7. Настройте прокси-сервер Nginx (с сертификатом SSL) — рекомендуется
Если ваш сервер имеет общедоступный 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. Следите за последними статьями на нашем сайте.