Настройка рабочего окружения для размещения нескольких приложений Node JS на одном VPS через Nginx. Предполагается, что Node JS и Nginx уже установлены.
Постоянное выполнение приложений
Библиотека Forever автоматизирует управление запущенными приложениями Node JS. При возникновении ошибок приложение продолжает работать или перезагружается.
Установка:
npm install forever -g
Запуск приложения:
cd /path/to/your/node/app/ forever start --spinSleepTime 10000 main.js
Параметр --spinSleepTime 10000 устанавливает минимальный интервал между перезапусками. Основные команды: start, stop, stopall, restart, restartall, list.
Направление домена на приложение
Создаём конфигурационный файл Nginx:
sudo vi /etc/nginx/conf.d/example.com.conf
Содержимое файла (замените your-domain.com и YOUR_PORT на свои значения):
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:{YOUR_PORT};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Для поддержки множественных доменов добавьте в /etc/nginx/nginx.conf:
server_names_hash_bucket_size 64;
Перезагрузка Nginx:
sudo service nginx restart
Автозапуск при перезагрузке сервера
Создаём файл starter.sh:
#!/bin/sh
if [ $(ps -e -o uid,cmd | grep $UID | grep node | grep -v grep | wc -l | tr -s "\\n") -eq 0 ]
then
export PATH=/usr/local/bin:$PATH
forever start --sourceDir /path/to/your/node/app main.js >> /path/to/log.txt 2>&1
fi
Редактируем crontab:
crontab -e
Добавляем строку:
@reboot /path/to/starter.sh
Для размещения дополнительных приложений запустите каждое на отдельном порту и создайте для них аналогичные конфигурационные файлы. Для современных проектов рекомендуется использовать пакет PM2 вместо Forever.