Поиск по сайту:
Усилия на ложном пути множат заблуждения (Ф. Бэкон).

Как установить Odoo 12 на Ubuntu 18.04

10.10.2018
Как установить Odoo 12 на Ubuntu 18.04

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

Odoo можно установить несколькими способами. Самый простой и быстрый способ установки Odoo – использовать их официальные репозитории APT.

Если вы хотите иметь большую гибкость, например, запускать несколько версий Odoo в одной и той же системе, вы можете использовать docker и docker compose  для создания или установки Odoo в виртуальной среде.

В этом руководстве описаны шаги, необходимые для установки и настройки Odoo 12 для производства с использованием источника Git и виртуальной среды Python в системе Ubuntu 18.04.

Войдите в систему Ubuntu как пользователь sudo и обновите систему до последних пакетов:

sudo apt update && sudo apt upgrade

 

Установите Git , Pip , Node.js и инструменты, необходимые для создания зависимостей Odoo:

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

 

Создайте нового пользователя системы для Odoo с именем odoo12 и домашним каталогом /opt/odoo12 используя следующую команду:

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

 

Вы можете использовать любое имя для своего пользователя Odoo, пока вы создаете пользователя PostgreSQL с тем же именем.

Установите пакет PostgreSQL из репозиториев по умолчанию Ubuntu:

sudo apt-get install postgresql

 

После завершения установки создайте пользователя PostgreSQL с тем же именем, что и ранее созданный системный пользователь, в нашем случае это odoo12:

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

 

Пакет wkhtmltox представляет собой набор инструментов командной строки  с открытым исходным кодом, которые могут отображать HTML в PDF и различные графические форматы. Чтобы распечатать отчеты в формате PDF, вам понадобится инструмент wkhtmltopdf. Рекомендуемая версия для Odoo – 0.12.1 что недоступно в официальных репозиториях Ubuntu 18.04.

Загрузите пакет, используя следующую команду wget :

wget https://builds.wkhtmltopdf.org/0.12.1.3/wkhtmltox_0.12.1.3-1~bionic_amd64.deb

 

После завершения загрузки установите пакет, набрав:

sudo apt install ./wkhtmltox_0.12.1.3-1~bionic_amd64.deb

 

Мы установим Odoo из репозитория GitHub внутри изолированной виртуальной среды Python.

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

sudo su - odoo12

 

Начните с клонирования исходного кода Odoo 12 из репозитория GitHub :

git clone https://www.github.com/odoo/odoo --depth 1 --branch 12.0 /opt/odoo12/odoo

 

 

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

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

 

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

source odoo-venv/bin/activate

 

Установите все необходимые модули Python с помощью pip3:

pip3 install wheel
pip3 install -r odoo/requirements.txt

 

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

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

mkdir /opt/odoo12/odoo-custom-addons

 

Отключите среду и вернитесь к своему пользователю sudo, используя следующие команды:

deactivate
exit

 

Затем создайте файл конфигурации, скопировав прилагаемый образец файла конфигурации:

sudo cp /opt/odoo12/odoo/debian/odoo.conf /etc/odoo12.conf

 

Откройте файл и отредактируйте его следующим образом:

sudo nano /etc/odoo12.conf

 

/etc/odoo12.conf
[options]
; This is the password that allows database operations:
admin_passwd = my_admin_passwd
db_host = False
db_port = False
db_user = odoo12
db_password = False
addons_path = /opt/odoo12/odoo/addons,/opt/odoo12/odoo-custom-addons

 

Не забудьте изменить пароль my_admin_passwd на более сложный пароль.

Чтобы запустить Odoo в качестве службы, нам нужно создать файл служебной единицы в каталоге. /etc/systemd/system/

Откройте текстовый редактор и вставьте следующую конфигурацию:

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

 

/etc/systemd/system/odoo12.service
[Unit]
Description=Odoo12
Requires=postgresql.service
After=network.target postgresql.service

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

[Install]
WantedBy=multi-user.target

 

Сообщите системе, что существует новый файловый файл и запустите службу Odoo, запустив:

sudo systemctl daemon-reload
sudo systemctl start odoo12

 

Проверьте статус службы с помощью следующей команды:

sudo systemctl status odoo12

 

Результат должен выглядеть примерно так, чтобы показать, что служба Odoo активна и работает.

* odoo12.service - Odoo12
   Loaded: loaded (/etc/systemd/system/odoo12.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-10-09 14:15:30 PDT; 3s ago
 Main PID: 24334 (python3)
    Tasks: 4 (limit: 2319)
   CGroup: /system.slice/odoo12.service
           `-24334 /opt/odoo12/odoo-venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c /etc/odoo12.conf

 

Включить службу Odoo для автоматического запуска во время загрузки:

sudo systemctl enable odoo12

 

Если вы хотите видеть сообщения, записанные службой Odoo, вы можете использовать следующую команду:

sudo journalctl -u odoo12

 

Откройте браузер и введите: http://<your_domain_or_IP_address>:8069

Предполагая, что установка прошла успешно, появится экран, похожий на следующий:

Как установить Odoo 12 на Ubuntu 18.04

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

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

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

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

В этом примере мы настроим SSL Termination, перенаправление с HTTP на HTTPS, WWW для перенаправления WWW, кэширование статических файлов и включить сжатие GZip.

Откройте текстовый редактор и создайте следующий файл:

sudo nano /etc/nginx/sites-enabled/example.ru

 

/etc/nginx/sites-enabled/example.ru
# 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.ru example.ru;

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

# WWW -> NON 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 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
    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;

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

    # Обрабатывать длинные запросы
    location /longpolling {
        proxy_pass http://odoochat;
    }

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

Как только вы закончите, перезапустите службу Nginx с помощью:

sudo systemctl restart nginx

 

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

/etc/odoo12.conf
proxy_mode = True

 

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

sudo systemctl restart odoo12

 

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

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

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

В этом руководстве мы настроим Odoo для прослушивания только 127.0.0.1. Откройте конфигурацию, добавьте следующие две строки в конец файла:

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

 

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

sudo systemctl restart odoo12

 

По умолчанию 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 -c ^processor /proc/cpuinfo

 

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

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

 

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

Рассчитайте потребление ОЗУ в зависимости от числа рабочих:

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

 

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

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

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

 

Остальные системные ресурсы будут использоваться другими службами, которые работают в этой системе. В этом руководстве мы установили Odoo вместе с PostgreSQL и Nginx на одном сервере, и в зависимости от вашей установки у вас могут также быть другие службы, запущенные на вашем сервере.

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

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

Добрый день, Андрей.
До этого использовал 10 odoo на центоси, но хотелось “пощупать” 12 и увы, на ту систему не поставить ввиду старых версий пакетов. Поставил ubuntu и ваше руководство помогло быстро развернуть сервис. Спасибо 🙂

mrhak777

Ставил на чистую ubuntu 16.04
Идеально все ставится!
Спасибо автору за туториал!

Читайте также

Спасибо!

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