Необходимые компоненты для запуска
Для запуска проекта на VPS нужно предварительно купить или иметь домен, хостинг и VPS.
Я запускал на VPS с установленной ОС Ubuntu и, используя панель управления хостингом ISPmanager.
Настраиваем VPS
Когда купили VPS, должно придти письмо с логином, ip и паролем.
Заходим на сервер через ssh:
ssh [логин_от_vps]@[ip_vps]
и вводим пароль.
Обновляем локальный индекс пакетов:
sudo apt update
Далее устанавливаем NodeJS:
sudo apt install nodejs
Также устанавливаем NPM, чтобы скачивать необходимые модули для проекта:
sudo apt install npm
Проверить все ли окей с установкой и посмотреть версию можно через команду:
node -v && npm -v
Нужно установить веб-сервер NGINX:
sudo apt install nginx
Устанавливаем менеджер процессов pm2:
sudo npm install pm2 -g
Установка необходимых компонентов для запуска проекта завершена!
Привязываем поддомен для VPS
Заходим в панель управления хостингом ISPmanager и нажимаем на пункт "Управление ДНС".
Далее выбираем в списке наш домен и нажимаем "Управлять DNS записями".
Нажимаем на "Создать запись".
К примеру, ввели имя library, то итоговый адрес получится https://library.sqlzzy.dev/
Заливаем проект на VPS
Я обычно заливаю проект со всеми файлами на VPS через команду:
scp -r [путь_до_проекта] [логин_от_vps]@[ip_vps]:[путь_где_будет_лежать_проект]
Вводим пароль от VPS и начинается залив файлов нашего проекта на сервер.
Заходим в папку нашего проекта и устанавливаем для него npm-пакеты:
npm i
Настройка NGINX для нашего приложения
Открываем nginx конфиг в редакторе nano:
sudo nano /etc/nginx/sites-available/default
Далее добавляем:
server { root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name [ваш адрес поддомена, где будет размещаться приложение]; location / { proxy_pass http://localhost:[ваш порт сервера]; 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; } }
Нажимаем на ctrl+x и сохраняем изменения.
Проверяем корректность nginx-конфига:
nginx -t
Все хорошо и теперь перезагрузим nginx:
sudo service nginx restart
Если зайдем по адресу, то отобразится 502 ошибка. Ничего страшного, нам осталось запустить проект.
Запуск проекта с помощью pm2
Чтобы наш проект работал круглосуточно, ранее был установлен менеджер процессов pm2.
Переходим в проект и пишем команду:
pm2 start [файл с конфигурацией сервера приложения]
Снова зайдём по адресу приложения и оно работает!
P.S.
Некоторые браузеры могут ругаться на то, что подключение незащищено из-за отсутствия ssl-сертификата.
Я использую certbot для установки ssl-сертификата от Let`s Encrypt.
Установим его:
apt install certbot python3-certbot-nginx
Выпускаем ssl-сертификат:
certbot --nginx -d [адрес_приложения] -d www.[адрес_приложения]
При первом запуске могут попросить ввести эл.почту и принять условия обслуживания. Лучше указать действующую эл.почту, поскольку на нее будут приходить различные уведомления по ошибкам от Let`s Encrypt.
Далее появится уведомление доп опцию для установки:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Если выберем первый вариант, то редирект с http на https не будет осуществляться.
Если выберем второй вариант, то утилита добавит необходимые строки для редирект с http на https.
Наш проект запущен!