Развертываем Node.js в продакшн на Ubuntu

Развертываем Node.js в продакшн на Ubuntu

Обновим систему

sudo apt-get update
sudo apt-get upgrade

Установим необходимые пакеты

sudo apt-get install build-essential libssl-dev

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

sudo adduser ubuntu

Придумываем пароль пользователю. И остальные параметры при желании.

Добавляем нового пользователя в группу sudo:

sudo gpasswd -a ubuntu sudo

Настройка SSH demona

Открываем конфигурационный файл, например редактором nano:

sudo nano /etc/ssh/sshd_config

Находим там строку:

PermitRootLogin

Устанавливаем:

PermitRootLogin no

И снимаем комментарий, если закомментирована.

Сохраняем и перезапускаем ssh сервер:

service ssh restart

Заходим под новым пользователем, например так:

su ubuntu

Установка curl

sudo apt install curl

Установка Node.js

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

Проверяем версию Node.js

node -v

Проверяем версию npm

npm -v

Заливаем файлики

Заливаем файлики на сервер, я лью при помощи WinSCP. Переходим в нужную папку, при помощи команд

cd

Устанавливаем требуемые пакеты

npm i

Запускаем

node index.js

Проверяем и останавливаем Ctrl+C

Устанавливаем pm2 для демонизации

sudo npm install pm2 -g

Запустим при помощи pm2

pm2 start index.js

Добавляем автозапуск, для pm2

pm2 startup ubuntu

Выполняем нижнюю сформированную команду, которая появилась на экране, например:

sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup ubuntu -u ubuntu - -hp /home/ubuntu

Сохраним изменения

pm2 save

Для проверки запущенных приложений:

pm2 list

Для мониторинга:

pm2 monit

Теперь можно перезапустить и убедится что все работает.

Устанавливаем и настраиваем веб-сервер nginx

sudo apt-get install nginx

Редактируем конфигурационный файл:

sudo nano /etc/nginx/sites-available/default

В настройках, можно все удалить и прописать:

server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
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;
}
}

Сохраняем и перезапускаем nginx:

sudo service nginx restart

Теперь можно проверить по ip адресу, должно работать.

Проверка конфигов nginx

nginx -t

Для разворачивания нескольких приложений и прокидывания статики средствами nginx, можно прописать так:

server {
listen 80;
server_name example1.ru;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
location /assets/ {
root /path/to/project0/static;
}
}
server {
listen 80;
server_name example2.ru;
location / {
proxy_pass http://127.0.0.1:8081;
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;
}
location /assets/ {
root /path/to/project1/static;
}
}

Далее пробрасываем порты на роутере.

Настраиваем домен.

Оставить комментарий