Перейти к содержанию

Установка нескольких экземпляров Odoo на одном сервере (17, 18, 19)

Эта инструкция описывает метод изоляции разных версий Odoo на одной машине с использованием отдельных системных пользователей, виртуальных окружений Python и уникальных портов.

🛠 Общая стратегия изоляции

Для каждой версии Odoo создается: - Отдельный системный пользователь. - Отдельный PostgreSQL пользователь. - Отдельная директория в /opt/. - Отдельное виртуальное окружение (venv). - Отдельный конфигурационный файл и системный юнит (systemd).


1. Подготовка системы и PostgreSQL

Установите необходимые зависимости:

sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3-pip python3-dev python3-venv build-essential libxslt1-dev zlib1g-dev libsasl2-dev libldap2-dev libpq-dev

Создание пользователей БД

Повторите для каждой версии (17, 18, 19):

sudo su - postgres -c "createuser -s odoo17"
sudo su - postgres -c "createuser -s odoo18"
sudo su - postgres -c "createuser -s odoo19"


2. Развертывание экземпляров

Для каждой версии (замените N на 17, 18 или 19) выполните следующие шаги:

2.1 Создание системного пользователя

sudo useradd -m -d /opt/odooN -s /bin.bash odooN

2.2 Загрузка исходного кода

sudo su - odooN -c "git clone https://www.github.com/odoo/odoo --depth 1 --branch 1N /opt/odooN/odoo"

2.3 Создание виртуального окружения и установка зависимостей

sudo su - odooN -c "python3 -m venv /opt/odooN/odoo-venv"
sudo su - odooN -c "/opt/odooN/odoo-venv/bin/pip install --upgrade pip"
sudo su - odooN -c "/opt/odooN/odoo-venv/bin/pip install -r /opt/odooN/odoo/requirements.txt"

3. Конфигурация экземпляров

Создайте файл конфигурации /etc/odooN.conf (например, /etc/odoo17.conf):

[options]
; База данных
db_host = False
db_port = False
db_user = odooN
db_password = False

; Пути
addons_path = /opt/odooN/odoo/addons,/opt/odooN/custom_addons

; Сеть (Важно: порты должны быть разными!)
xmlrpc_port = 806N  # 8069 для 17, 8070 для 18, 8080 для 19
longpolling_port = 807N

; Логирование
logfile = /var/log/odooN/odoo.log

Настройка логов:

sudo mkdir /var/log/odooN
sudo chown odooN:odooN /var/log/odooN


4. Настройка Systemd

Создайте файл сервиса /etc/systemd/system/odooN.service:

[Unit]
Description=Odoo N Server
After=network.target postgresql.service

[Service]
Type=simple
User=odooN
Group=odooN
ExecStart=/opt/odooN/odoo-venv/bin/python3 /opt/odooN/odoo/odoo-bin -c /etc/odooN.conf
StandardOutput=syslog
StandardError=syslog
Restart=always

[Install]
WantedBy=multi-user.target

Запуск сервисов

sudo systemctl daemon-reload
sudo systemctl enable --now odoo17 odoo18 odoo19

📋 Сводная таблица портов и пользователей

Версия Пользователь Порт Путь
Odoo 17 odoo17 8069 /opt/odoo17
Odoo 18 odoo18 8070 /opt/odoo18
Odoo 19 odoo19 8080 /opt/odoo19

⚠️ Важные примечания

  1. Python: Убедитесь, что установленная версия Python совместима с выбранной версией Odoo (Odoo 17+ обычно требует Python 3.10+).
  2. Брандмауэр: Не забудьте открыть выбранные порты в ufw или iptables.
  3. Nginx: Для доступа через домен (например, odoo17.example.com) рекомендуется настроить Nginx как Reverse Proxy.