ISPmanager 6 умеет не только раздавать статику и PHP-сайты, но и запускать приложения на Node.js и Python как отдельные веб-сервисы со своим доменом. Разберём, как создать такое приложение, выбрать версию рантайма и настроить проксирование через веб-сервер.
Чем приложение отличается от обычного сайта
Обычный сайт в ISPmanager 6 — это набор файлов, которые обрабатывает PHP-FPM или отдаёт веб-сервер напрямую. Node.js и Python-приложение — это отдельный процесс, который слушает свой локальный порт, а Nginx проксирует к нему внешние запросы по домену. Панель сама поднимает и перезапускает процесс через systemd-юнит.
Создание приложения Node.js
Откройте «WWW-домены» → «Создать приложение», выберите тип Node.js, укажите домен и путь к точке входа, например app.js в корне каталога сайта. ISPmanager 6 предложит список установленных версий Node.js, а недостающую версию можно доставить через менеджер версий рантайма.
npm install --production
npm run build
После установки зависимостей панель запускает процесс автоматически. Проверить, что приложение слушает нужный порт, можно из консоли:
ss -tlnp | grep node
Создание приложения Python
Для Python-приложений ISPmanager 6 поддерживает WSGI-совместимые фреймворки: Django, Flask, FastAPI за uvicorn. При создании укажите версию Python, путь к виртуальному окружению и модуль с точкой входа, например app:application для Flask.
python3 -m venv /var/www/httpd-cts/site_py/venv
source /var/www/httpd-cts/site_py/venv/bin/activate
pip install -r requirements.txt
Панель создаёт systemd-юнит, который запускает приложение через gunicorn или uvicorn в указанном виртуальном окружении и перезапускает процесс при падении.
Проксирование через Nginx
| Параметр | Значение по умолчанию | Где менять |
|---|---|---|
| Локальный порт приложения | Назначается автоматически | Настройки приложения в панели |
| Таймаут проксирования | 60 секунд | Шаблон Nginx для приложений |
| Максимальный размер запроса | 10 МБ | client_max_body_size в шаблоне |
Если сайт использует связку Nginx и Apache, приложение всё равно проксируется напрямую через Nginx, минуя Apache — это быстрее для API и WebSocket-соединений. Подробности о связке веб-серверов есть в статье про Nginx и Apache в ISPmanager 6.
Логи и перезапуск приложения
Логи Node.js и Python-приложений пишутся в отдельные файлы в каталоге сайта и дублируются в журнал systemd. Посмотреть последние записи и статус процесса можно так:
journalctl -u app-site_ru -n 100
systemctl restart app-site_ru
Если приложение постоянно падает после старта, сначала проверьте ошибки импорта зависимостей в логе — это самая частая причина. Общий подход к разбору ошибок панели описан в статье про логи и диагностику ISPmanager 6.
Итог: чек-лист запуска приложения
- Выбрать нужную версию Node.js или Python до создания приложения
- Указать правильный путь к точке входа и виртуальному окружению
- Установить зависимости через npm install или pip install перед первым запуском
- Проверить, что процесс слушает порт и проксируется через Nginx
- Настроить чтение логов systemd для быстрой диагностики сбоев