Deploy NodeJS приложения на VestaCP

Настройка Nginx для deploy сайта на nodejs. Под катом: конфигурация nginx, pm2 как замена nodemon и forever. 

Как всем известно NodeJs-приложение слушает определенный порт. Обычно при разработке на локальном сервере мы пользуемся url вида http://localhost:3000/. В этой статье я хочу рассказать как опубликовать свое приложение на сервере и сделать доступным по url домена.

Рассматрим настройку nginx в VestaCP, так как этот вопрос актуален и я не раз сталкивался с отсутствием хороших рецептов по связке VestaCP и NodeJS. После прочтения статьи Вы узнаете как настроить проксирование

Настройка Nginx для deploy сайта на nodejs. Под катом: конфигурация nginx, pm2 как замена nodemon и forever.

Как известно NodeJs-приложение слушает определенный порт. Обычно при разработке на локальном сервере мы пользуемся url вида http://localhost:3000/. В этой статье я хочу рассказать как опубликовать свое приложение на сервере и сделать доступным по url домена.

Рассмотрим настройку nginx в VestaCP, так как этот вопрос актуален и я не раз сталкивался с отсутствием хороших рецептов по связке VestaCP и NodeJS. После прочтения статьи Вы узнаете как настроить проксирование nginx на локальный порт и добавить шаблоны nginx для VestaCP.

Шаг 1 - добавим шаблон для nginx в VestaCP

Шаблоны для nginx на сервере с установленной VestaCP хранятся по пути  /usr/local/vesta/data/templates. Каждый шаблон должен быть предоставлен в двух форматах:

*.tpl — для http
*.stpl — для ssl(https)

За основу мы возьмем default — шаблоны для nginx. Скопируйте файлы default.tpl и defaul.stpl. И измените имя файла в соответствии с желаемым. Имена файлов должны быть одинаковыми. Из блока сервер нужно убрать часть, описывающую правило для «location /». В результате у Вас должны получиться два файла:

nodeproxy.stpl

				
					server {
  listen   %ip%:%proxy_port%;
  server_name %domain_idn% %alias_idn%;
  error_log /var/log/%web_system%/domains/%domain%.error.log error;

  location /error/ {
    alias  %home%/%user%document_errors/;
  }

  location @fallback {
    proxy_pass   http://%ip%:%web_port%;
  }

  location ~ /\.ht  {return 404;}
  location ~ /\.svn/ {return 404;}
  location ~ /\.git/ {return 404;}
  location ~ /\.hg/  {return 404;}
  location ~ /\.bzr/ {return 404;}

  include %home%/%user%/confpre>


				
			
nodeproxy.tpl
				
					
server {
  listen   %ip%:%proxy_port%;
  server_name %domain_idn% %alias_idn%;
  error_log /var/log/%web_system%/domains/%domain%.error.log error;

  location /error/ {
    alias  %home%/%user%document_errors/;
  }

  location @fallback {
    proxy_pass   http://%ip%:%web_port%;
  }

  location ~ /\.ht  {return 404;}
  location ~ /\.svn/ {return 404;}
  location ~ /\.git/ {return 404;}
  location ~ /\.hg/  {return 404;}
  location ~ /\.bzr/ {return 404;}

  include %home%/%user%/confpre>
				
			

После добавления шаблона в панели настройки домена необходимо выбрать шаблон для nginx. Эта опция может не отображаться, в этом случае вы должны авторизоваться как администратор и сделать impersonate пользователя, который владеет доменом. 

Внимание! После редактирования конфигураций nginx его необходимо перезапустить что бы изменения вступили в силу.

Шаг 2 - Конфигурация nginx

После применения шаблона для nginx будут автоматически сгенерированы конфигурационные файлы по пути /home/{имя пользователя}/conf/web. Давайте подробнее разберем содержимое шаблона, а именно нас интересует строчка: 

include /home/vasya/confpre>

Так как файлы конфигурации nginx — динамические, мы не можем изменять их содержимое, иначе мы потеряем изменения после перегенерации шаблона. Но мы можем создать файл nginx.example.com.conf*, который будет извлечен. Стоить отметить что мы имеем доступ только к блоку server конфигурационного файла, так как include производится именно там. Это сделано так, потому что блок server должен быть сгенерирован автоматически и иметь базовые настройки.

Создайте файлы:

snginx.example.com.conf*

				
					location / {
  proxy_pass http://localhost:3000;
}
				
			
nginx.example.com.conf*
				
					
location / {
  proxy_pass http://localhost:3000;
}
				
			

где example.com — Ваш домен.

Это правило гласит — при открытии url / текущего домена произвести перенаправление запроса на http://localhost:3000. Более подробную информацию Вы можете получить на сайте nginx.ru. Важно заметить что если Ваш сайт работает с сертификатом, вам не придется указывать его в своем приложение NodeJS, так как nginx будет проксировать все запросы к приложению.

После создания файлов Вам необходимо перезапустить nginx и запустить приложение. После перезапуска при открытии домена, на нем будут отображаться данные с http://localost:3000.

Свежие записи
Команда MD

Команда md позволяет создавать каталог или промежуточные каталоги в указанном

Программы
help2site
Выбираем клиент для «ВКонтакте» на Android

Мы уже  не представляем себе жизнь без социальных сетей, которые прочно и надежно ворвались в нашу повседневную жизнь. Если в Instagram или Twitter редко увидишь

Linux
help2site
Dock для Linux

Dock – это удобно. Dock – это красиво. Dock, в конце концов – это по-гиковски. Недаром, многие люди, всегда работавшие под Windows и толком не

Web-Дизайн
help2site
Табы с помощью CSS3

Табы на мой взгляд являются одним из лучших решений для тематического структурирования информации, а также  для компактного предоставления контента пользователю на одной странице. Сегодня мы разберемся как создать такую

Windows
help2site
Энергопотребление windows 7

Windows 7 теперь может выводить отчет об энергопотреблении вашего компьютера. Чтобы получить этот отчет, введите в командную строку команду Powercfg. Эта команда создана компанией Microsoft

Оборудование
help2site
Honor 20 обзор

Тыловой фото-модуль этого смартфона, помимо основной и вспомогательной, включает также суперширокоугольную и макро камеры. Другой интересной «фишкой» стала врезанная в экран селфи-камера, что позволило сделать

Web-Дизайн
help2site
Памятка по форматированию контента

Базовые требования к тексту: полезный для потребителя; отсутствуют ошибки. Перечисленные ниже рекомендации, при их соблюдении, помогут повысить доверие к Вашему сайту, как со стороны клиентов,

Web-Дизайн
help2site
Обновления ядра Drupal

Данная статья адресована для начинающих изучать Drupal. Для CMS — Drupal регулярно выходят новые версии (обновления) в которых вносится изменения по усовершенствованию CMS, исправление ошибок/уязвимостей