Установка нескольких экземпляров 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 Создание системного пользователя¶
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
Настройка логов:
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
Запуск сервисов¶
📋 Сводная таблица портов и пользователей¶
| Версия | Пользователь | Порт | Путь |
|---|---|---|---|
| Odoo 17 | odoo17 |
8069 | /opt/odoo17 |
| Odoo 18 | odoo18 |
8070 | /opt/odoo18 |
| Odoo 19 | odoo19 |
8080 | /opt/odoo19 |
⚠️ Важные примечания¶
- Python: Убедитесь, что установленная версия Python совместима с выбранной версией Odoo (Odoo 17+ обычно требует Python 3.10+).
- Брандмауэр: Не забудьте открыть выбранные порты в
ufwилиiptables. - Nginx: Для доступа через домен (например,
odoo17.example.com) рекомендуется настроить Nginx как Reverse Proxy.