Odoo — это самое популярное универсальное программное обеспечение для бизнеса в мире. Он предлагает широкий спектр бизнес-приложений, включая CRM, веб-сайт, электронную коммерцию, биллинг, бухгалтерский учет, производство, склад, управление проектами, инвентаризацию и многое другое, и все они полностью интегрированы.
Есть несколько способов установить Odoo в зависимости от необходимого варианта использования. Самый простой и быстрый способ установить 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
Установить и настроить 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
Откройте файл и отредактируйте его следующим образом:
[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
модуля odoo11.service
каталоге /etc/systemd/system/
со следующим содержимым:
[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://<your_domain_or_IP_address>: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, что мы будем использовать прокси, открыть файл конфигурации и добавить следующую строку:
proxy_mode = True
Перезапустите сервис Odoo, чтобы изменения вступили в силу:
sudo systemctl restart odoo11
Использование Nginx в качестве прокси дает нам несколько преимуществ. В этом примере мы настроим завершение SSL, перенаправление HTTP на HTTPS, перенаправление WWW на не WWW, кэшируем статические файлы и включаем сжатие GZip .
# 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;
}
Как только вы закончите, перезапустите службу Nginx с помощью:
sudo systemctl restart nginx
Изменить интерфейс привязки
Это необязательный шаг, но это хорошая практика безопасности. По умолчанию сервер Odoo прослушивает порт 8069 на всех интерфейсах, поэтому, если вы хотите отключить прямой доступ к своему экземпляру Odoo, вы можете либо заблокировать порт 8069 для всех общедоступных интерфейсов, либо заставить Odoo прослушивать только локальный интерфейс.
В этом руководстве мы заставим Odoo прослушивать только 127.0.0.1
, откройте конфигурацию Odoo и добавьте следующие две строки в конец файла:
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 МБ ОЗУ.
- Необходимая RAM = количество_работников * ((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 worker, что в сумме составляет 6 рабочих.
Рассчитайте потребление оперативной памяти исходя из количества рабочих:
RAM = 6 * ((0.8*150) + (0.2*1024)) ~= 2 GB of RAM
Приведенный выше расчет показывает, что для нашей установки Odoo потребуется около 2 ГБ ОЗУ.
Чтобы переключиться в многопроцессорный режим, откройте файл конфигурации и добавьте следующие строки:
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 .
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.