Как развернуть Odoo 11 в Ubuntu 18.04

Установка Odoo 11 в виртуальную среду на Ubuntu 18.04

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

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

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

В этом руководстве описываются шаги, необходимые для установки и настройки Odoo для производства с использованием исходного кода 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

Создайте нового системного пользователя и группу с домашним каталогом /opt/odoo , которые будут запускать службу Odoo.

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

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

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

Установите пакет PostgreSQL из стандартных репозиториев Ubuntu:

 sudo apt install postgresql

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

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

Установить Wkhtmltopdf

Пакет 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

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

Перед началом процесса установки убедитесь, что вы используете учетную запись пользователя odoo .

 sudo su - odoo

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

 whoami

Теперь можно приступить к установке. Для начала клонируем Odoo из репозитория GitHub:

 git clone https://www.github.com/odoo/odoo --depth 1 --branch 11.0 /opt/odoo/odoo11
  • Если вы хотите установить другую версию Odoo, просто измените номер версии после ключа --branch .
  • Вы можете назвать каталог по своему усмотрению, например, вместо odoo11 можно использовать имя вашего домена.

Чтобы создать новую виртуальную среду для экземпляра Odoo 11, выполните следующее:

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

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

 source odoo11-venv/bin/activate

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

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

pip3 — инструмент для установки и управления пакетами Python.

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

После завершения установки деактивируйте среду и вернитесь к своему пользователю sudo с помощью следующих команд:

 deactivate
 exit

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

 sudo mkdir /opt/odoo/odoo11-custom-addons sudo chown odoo: /opt/odoo/odoo11-custom-addons

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

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

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

/etc/odoo11.conf

 [options] ; This is the password that allows database operations: admin_passwd = my_admin_passwd db_host = False db_port = False db_user = odoo db_password = False addons_path = /opt/odoo/odoo11/addons ; If you are using custom modules ; addons_path = /opt/odoo/odoo11/addons,/opt/odoo/odoo11-custom-addons

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

Создайте файл модуля systemd

Чтобы запустить odoo как службу, мы создадим файл модуля odoo11.service в каталоге /etc/systemd/system/ со следующим содержимым:

/etc/systemd/system/odoo11.service

 [Unit] Description = Odoo11 Requires = postgresql.service After = network.target postgresql.service [Service] Type = simple SyslogIdentifier = odoo11 PermissionsStartOnly = true User = odoo Group = odoo ExecStart = /opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf StandardOutput = journal+console [Install] WantedBy = multi-user.target

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

 sudo systemctl daemon-reload sudo systemctl start odoo11

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

 sudo systemctl status odoo11
 ● odoo11.service - Odoo11 Loaded: loaded (/etc/systemd/system/odoo11.service; disabled; vendor preset: enabled) Active: active (running) since Thu 2018-05-03 21:23:08 UTC; 3s ago Main PID: 18351 (python3) Tasks: 4 (limit: 507) CGroup: /system.slice/odoo11.service └─18351 /opt/odoo/odoo11-venv/bin/python3 /opt/odoo/odoo11/odoo-bin -c /etc/odoo11.conf

и если ошибок нет, вы можете включить автоматический запуск службы Odoo при загрузке:

 sudo systemctl enable odoo11

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

 sudo journalctl -u odoo11

Тест установки

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

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

Настройте Nginx как прокси-сервер завершения SSL

Если вы хотите использовать Nginx в качестве прокси-сервера завершения SSL, убедитесь, что выполнены следующие предварительные условия:

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

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

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

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

/etc/odoo11.conf

 proxy_mode = True

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

 sudo systemctl restart odoo11

Использование Nginx в качестве прокси-сервера даёт нам ряд преимуществ. В этом примере мы настроим SSL-терминацию, перенаправление с HTTP на HTTPS , перенаправление с WWW на не-WWW, кэширование статических файлов и включим сжатие GZip .

/etc/nginx/sites-enabled/example.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 ; include snippets/letsencrypt.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 на свой домен Odoo и указать правильный путь к файлам SSL-сертификата. Фрагменты, используемые в этой конфигурации, созданы в этом руководстве .

После завершения перезапустите службу Nginx с помощью:

 sudo systemctl restart nginx

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

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

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

/etc/odoo11.conf

 xmlrpc_interface = 127.0.0.1 netrpc_interface = 127.0.0.1

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

 sudo systemctl restart odoo

Включить многопроцессорную обработку

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

Количество рабочих процессов рассчитывается на основе количества ядер ЦП в системе и доступной оперативной памяти.

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

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

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

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

  • Будем считать, что 20% всех запросов — тяжёлые, а 80% — лёгкие. Тяжёлые запросы используют около 1 ГБ оперативной памяти, а лёгкие — около 150 МБ.
  • Необходимая оперативная память = количество_рабочих * ( (коэффициент_объёма_рабочих * оценка_оперативной_памяти_объёма_рабочих) + (коэффициент_объёма_рабочих * оценка_оперативной_памяти_объёма_рабочих) )

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

 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/odoo11.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 odoo11

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

Заключение

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

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

ubuntu odoo postgresql python pip nginx proxy ssl Не используете Ubuntu 18.04?
Выберите другую ОС:
центос 7 убунту 16.04

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *