Логотип

Установите Odoo 14 на CentOS 8

Установите Odoo 14 на CentOS 8

Odoo — это самое популярное универсальное программное обеспечение для бизнеса в мире. Оно предлагает широкий спектр бизнес-приложений, включая CRM, веб-сайт, электронную коммерцию, биллинг, бухгалтерский учет, производство, склад, управление проектами, инвентаризацию и многое другое, и все они полностью интегрированы.

Odoo можно установить по-разному, в зависимости от варианта использования и доступных технологий. Самый простой и быстрый способ установить Odoo — использовать официальные репозитории Odoo APT.

Установка Odoo в виртуальной среде или развертывание в качестве контейнера Docker дает вам больший контроль над приложением и позволяет запускать несколько экземпляров Odoo в одной системе.

В этой статье объясняется, как установить и развернуть Odoo 14 в виртуальной среде Python на CentOS 8. Мы загрузим Odoo из официального репозитория GitHub и будем использовать 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 от имени пользователя root запрещен, так как это угроза безопасности. Создайте нового системного пользователя и группу с домашним каталогом /opt/odoo, который будет запускать службу Odoo:

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

 

Вы можете называть пользователя как хотите; просто убедитесь, что вы создали пользователя PostgreSQL с тем же именем.

 

Установка и настройка PostgreSQL

Odoo использует PostgreSQL в качестве серверной части базы данных. Мы установим PostgreSQL 12 из стандартных репозиториев CentOS 8:

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 и различные форматы изображений. Чтобы распечатать отчеты в формате PDF в Odoo, вам необходимо установить пакет wkhtmltox. Рекомендуемая версия для Odoo — это версия 0.12.5, которую можно скачать и установить с Github:

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

 

Читать  Как установить Odoo 18 на Debian 12

Установка и настройка Odoo 14

Мы установим Odoo из исходного кода внутри изолированной виртуальной среды Python.

Во-первых, измените пользователя на «odoo14»:

sudo su - odoo14

 

Клонируйте исходный код Odoo 14 из репозитория Odoo GitHub:

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

 

Перейдите в каталог /opt/odoo14 и создайте новую виртуальную среду Python для установки Odoo:

cd /opt/odoo14python3 -m venv venv

 

Активируйте среду с помощью команды source:

source venv/bin/activate

 

Установите необходимые модули Python:

pip3 install -r odoo/requirements.txt
Если вы столкнетесь с какой-либо ошибкой компиляции во время установки, убедитесь, что установлены все необходимые зависимости, перечисленные в разделе Installing Prerequisites.

После этого деактивируйте среду, набрав:

deactivate

 

Создайте новый каталог для настраиваемых надстроек:

mkdir /opt/odoo14/odoo-custom-addons

 

Мы добавим этот каталог в параметр addons_path. Этот параметр определяет список каталогов, в которых Odoo ищет модули.

Вернитесь к своему пользователю 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 на что-нибудь более безопасное.

 

Создание файла модуля Systemd

Откройте текстовый редактор и создайте файл служебной единицы odoo14.service со следующим содержимым:

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

 

Вставьте следующий контент:

/etc/systemd/system/odoo14.service
[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

 

Сообщите systemd о существовании нового файла модуля:

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

Если установка прошла успешно, появится экран, подобный следующему:

Если вы не можете получить доступ к странице, убедитесь, что порт 8069в вашем брандмауэре открыт:

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

 

Настройка Nginx в качестве прокси SSL

Веб-сервер Odoo по умолчанию обслуживает трафик через HTTP. Чтобы сделать экземпляр Odoo более безопасным, мы настроим Nginx в качестве прокси-сервера для завершения SSL, который будет обслуживать трафик по HTTPS.

Прокси-сервер завершения SSL — это прокси-сервер, который обрабатывает шифрование/дешифрование SSL. Это означает, что завершающий прокси (Nginx) будет обрабатывать и расшифровывать входящие TLS-соединения (HTTPS) и передавать незашифрованные запросы внутренней службе (Odoo). Трафик между Nginx и Odoo не будет зашифрован (HTTP).

Читать  Установка Odoo 13 на CentOS 8

Использование обратного прокси-сервера дает вам множество преимуществ, таких как балансировка нагрузки, завершение SSL, кэширование, сжатие, обслуживание статического содержимого и многое другое.

Прежде чем продолжить работу с этим разделом, убедитесь, что вы выполнили следующие предварительные требования:

  • Доменное имя, указывающее на IP вашего публичного сервера. Мы будем использовать example.ru.
  • Установлен Nginx.
  • SSL-сертификат для вашего домена. Вы можете установить бесплатный SSL-сертификат Let’s Encrypt .

Откройте свой текстовый редактор и создайте/отредактируйте блок сервера домена:

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

 

Следующая конфигурация устанавливает завершение SSL, перенаправление HTTP на HTTPS, перенаправление из WWW в другое, кэширование статических файлов и включение сжатия GZip .

/etc/nginx/conf.d/example.ru
# Сервер Odoo
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.ru example.ru;

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

# WWW -> без WWW
server {
    listen 443 ssl http2;
    server_name www.example.ru;

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

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

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

    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;

    # параметры SSL
    ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.ru/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # файлы логов
    access_log /var/log/nginx/odoo.access.log;
    error_log /var/log/nginx/odoo.error.log;

    # Обрабатывать запросы longpoll
    location /longpolling {
        proxy_pass http://odoochat;
    }

    # Обработка / запросы
    location / {
       proxy_redirect off;
       proxy_pass http://odoo;
    }

    # Кэширование статических файлов
    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.ru своим доменом Odoo и указать правильный путь к файлам сертификатов SSL. Фрагменты, используемые в этой конфигурации, созданы в этой статье.

Когда вы закончите, перезапустите службу Nginx:

sudo systemctl restart nginx

 

Затем нам нужно указать Odoo использовать прокси. Для этого откройте файл конфигурации и добавьте следующую строку:

/etc/odoo14.conf
proxy_mode = True

 

Перезапустите сервис Odoo, чтобы изменения вступили в силу:

sudo systemctl restart odoo14

 

На этом этапе настроен обратный прокси-сервер, и вы можете получить доступ к своему экземпляру Odoo по адресу https://example.ru.

 

Изменение интерфейса привязки

Это необязательный шаг, но это хорошая практика безопасности.

По умолчанию сервер Odoo прослушивает порт 8069 на всех интерфейсах. Чтобы отключить прямой доступ к экземпляру Odoo, вы можете либо заблокировать порт 8069 для всех общедоступных интерфейсов, либо заставить Odoo прослушивать только локальный интерфейс.

Читать  Как установить Odoo 18 на Debian 12

Мы настроим 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 и установить ненулевое количество рабочих процессов. Количество рабочих рассчитывается на основе количества ядер ЦП и доступной оперативной памяти.

Согласно официальной документации Odoo, для расчета количества рабочих и требуемого объема оперативной памяти вы можете использовать следующие формулы и предположения:

Расчет количества рабочих

  • Теоретическое максимальное количество рабочих = (system_cpus * 2) + 1
  • 1 работник может обслуживать ~ = 6 одновременных пользователей
  • Рабочим Cron также требуется ЦП

Расчет объема оперативной памяти

  • Будем считать, что 20% всех запросов — тяжелые, а 80% — более легкие. Тяжелые запросы используют около 1 ГБ ОЗУ, а более легкие — около 150 МБ ОЗУ.
  • Необходимая оперативная память = number_of_workers * ( (light_worker_ratio * light_worker_ram_estimation) + (heavy_worker_ratio * heavy_worker_ram_estimation) )

Если вы не знаете, сколько процессоров у вас в системе, используйте следующую grepкоманду:

grep -c ^processor /proc/cpuinfo

 

Допустим, у вас есть система с 4 ядрами ЦП, 8 ГБ оперативной памяти и 30 одновременными пользователями Odoo.

  • 30 users / 6 = **5** (5 — теоретическое количество необходимых рабочих)
  • (4 * 2) + 1 = **9** (9 — теоретическое максимальное количество рабочих)

Основываясь на приведенном выше расчете, вы можете использовать 5 рабочих + 1 рабочий для cron worker, всего 6 рабочих.

Рассчитайте потребление оперативной памяти исходя из количества рабочих:

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

Расчет показывает, что для установки Odoo потребуется около 2 ГБ оперативной памяти.

Чтобы переключиться в многопроцессорный режим, откройте файл конфигурации и добавьте вычисленные значения:

/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 на одном сервере. В зависимости от вашей настройки на вашем сервере также могут быть запущены другие службы.

 

Вывод

В этой статье вы познакомились с установкой Odoo 14 на CentOS 8 в виртуальной среде Python с использованием Nginx в качестве обратного прокси. Мы также показали вам, как включить многопроцессорность и оптимизировать Odoo для производственной среды.

Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Редактор: AndreyEx

Рейтинг: 0 (0 голосов)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала