Деплой на VPS: pm2/systemd/nginx
Деплой приложения на VPS: настройка процесса через pm2 или systemd, nginx как reverse proxy и HTTPS. Пошаговая инструкция, как своими руками вывести проект в интернет.
Коротко. Чтобы проект стал доступен по адресу в интернете, нужен сервер (VPS), процесс-менеджер (pm2 или systemd), чтобы приложение не падало, nginx как reverse proxy и HTTPS через бесплатный сертификат. Это классический навык, который сильно усиливает портфолио.
Что такое VPS
VPS — виртуальный сервер, который вы арендуете и настраиваете сами. На нём вы разворачиваете приложение, базу и веб-сервер. Доступ — по SSH. Стоит недорого (несколько сотен рублей в месяц) и даёт понимание, как устроен продакшн изнутри, — то, чего не увидишь на платформах вроде Vercel.
Держим процесс живым
Если просто запустить приложение в терминале, оно умрёт при закрытии сессии. Нужен процесс-менеджер:
- pm2 (для Node.js):
pm2 start server.js, автозапуск после перезагрузки. - systemd (универсально): unit-файл, который стартует и перезапускает приложение при падении.
Nginx как reverse proxy
Nginx принимает запросы на 80/443 и перенаправляет их вашему приложению (например, на порт 3000):
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
}
}
Это скрывает внутренний порт, позволяет раздавать статику и добавить HTTPS.
HTTPS бесплатно
Сертификат Let's Encrypt выдаётся бесплатно; утилита certbot настраивает его для nginx автоматически и продлевает. HTTPS сегодня обязателен: без него браузеры помечают сайт небезопасным.
Безопасность сервера: минимум
Свежий VPS сканируют боты уже через минуты после запуска, поэтому базовую защиту настраивают сразу. Минимальный набор джуна: вход по SSH-ключу вместо пароля, отключённый вход под root, файрвол (ufw), открытый только на нужные порты (22, 80, 443), и регулярные обновления системы. Это не «продвинутый DevOps», а гигиена, без которой сервер с вашим проектом быстро станет чужим.
Чеклист деплоя
- Арендовать VPS, зайти по SSH, обновить систему.
- Установить рантайм (Node/Python), клонировать проект.
- Поднять приложение под pm2/systemd.
- Настроить nginx как reverse proxy.
- Выпустить HTTPS через certbot.
- Закрыть лишние порты (firewall), настроить деплой из CI.
Чеклист «не стыдно показать в проде»
- процесс под systemd/pm2, автоперезапуск;
- nginx reverse proxy + HTTPS (Let's Encrypt);
- firewall: только 80/443/ssh, ssh по ключу;
- логи приложения и access/error nginx;
- бэкап данных и .env не в git;
- отдельный пользователь, не root для приложения.
Для джуна важен не «идеальный k8s», а понимание: процесс живёт, порт слушает, проксирует, сертификат обновляется, логи читаются. Контейнеры — следующий шаг: Docker, общий трек — DevOps старт.
Обновление без «ой упало»
Простой путь: новый релиз в соседний каталог → migrate → switch symlink → restart → healthcheck. Откат — symlink назад. Не invent k8s, пока один VPS не обслуживаете спокойно.
Следующий шаг в бэкенде
Примените идеи из «Деплой на VPS: pm2/systemd/nginx» к своему учебному проекту или к одной вакансии на этой неделе. Соберите минимальный API: CRUD + валидация + одна таблица в БД + README с запуском. Дальше: REST API, SQL, auth, деплой. План — бэкенд 2026, обзор роли — backend starter.
Как применить «Деплой на VPS: pm2/systemd/nginx» на практике
Пройдите материал не как статью, а как задание. Выпишите 3 тезиса из разделов (Что такое VPS; Держим процесс живым; Nginx как reverse proxy) и напротив каждого — действие на 30–90 минут: что сделаете руками, какой файл/репозиторий появится, как поймёте что готово. Без этого колонки «изучил» в голове не конвертируются в оффер.
Связка с соседними материалами: Docker, DevOps старт, REST API, SQL, auth. Не читайте всё подряд — возьмите один следующий URL и закройте его артефактом в git до конца недели. Если роль ещё не выбрана, сначала профессии и 5 вакансий-ориентиров, потом возвращайтесь к этой теме.
На собеседовании по теме «Деплой на VPS: pm2/systemd/nginx» вас почти всегда просят пример из практики. Подготовьте 60–90 секунд: задача → что сделали → результат/ограничение. Даже учебный пример звучит сильнее пересказа теории.
Частые вопросы
VPS или облачный хостинг?
Для обучения VPS даёт понимание «как всё устроено». Платформы (Vercel и т.п.) проще, но скрывают детали. Для портфолио полезно уметь работать с VPS.
pm2 или systemd?
pm2 проще для Node-проектов; systemd универсален и есть в любой Linux-системе. Достаточно освоить один.
Нужен ли Docker для деплоя?
Не обязателен, но упрощает переносимость. См. Docker для новичка.
Как автоматизировать деплой?
Настроить CI/CD, который на каждый push сам обновляет сервер — см. GitHub Actions.
Материал «Деплой на VPS: pm2/systemd/nginx» имеет смысл только вместе с практикой: один артефакт в git на этой неделе важнее десяти вкладок с теорией. Если застряли на выборе роли — начните с профессий и одной вакансии-ориентира.