Инфраструктура · Урок 48

Деплой на VPS: Nginx

Платформы типа Vercel отлично деплоят фронт, но backend, базу и процессы — вы держите сами. VPS даёт полный контроль: Nginx отдаёт статику и проксирует API, pm2 держит Node живым.

Схема

--- VPS ---
Порт 80/443 → Nginx
   * /            статика из dist/ (SPA fallback)
   * /api/*       → localhost:3001 (Express, pm2)

# /etc/nginx/sites-available/app
server {
  listen 80;
  server_name app.ru www.app.ru;
  root /var/www/app/dist;

  location /api/ {
    proxy_pass http://127.0.0.1:3001;
    proxy_set_header Host $host;
  }
  location / {
    try_files $uri /index.html;   # SPA-роутинг
  }
}

pm2 и автозапуск

npm i -g pm2
pm2 start server/index.js --name app
pm2 save              # зафиксировать список
pm2 startup systemd   # поднимать процессы после ребута
💡
После всех шагов: DNS-запись A → IP сервера, затем letsencrypt (certbot) для HTTPS. «Замок» браузера — обязательный элемент продакшена, бесплатные сертификаты ставятся за минуту.

Порядок первого деплоя

  1. аренда VPS (Ubuntu), вход по SSH-ключу;
  2. установка Node, nginx, pm2;
  3. заливка кода (git clone), npm ci, сборка;
  4. конфиг Nginx + HTTPS;
  5. проверка: домен открывается, API отвечает, логи чистые.
ℹ️
Деплой по кнопке удобнее — этим займётся CI/CD (урок 44): workflow с ssh-шагами на каждый merge в main. Ручной деплой — для понимания, автоматический — для жизни.