Деплой JavaScript приложения на VPS: пошаговое руководство от А до Я

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Введение: Почему VPS — это правильный выбор для вашего Node.js приложения

Вы написали крутое приложение на JavaScript (Node.js), протестировали его локально, и теперь оно готово покорить мир. Но как перенести его из уютной среды разработки в суровый мир продакшена? Ответ прост — VPS (Virtual Private Server). В отличие от общего хостинга, VPS даёт вам полный контроль над сервером, root-доступ и возможность тонкой настройки окружения под нужды вашего Node.js приложения.

В этом пошаговом руководстве мы пройдем весь путь: от покупки сервера и установки Node.js до настройки домена, SSL-сертификата и менеджера процессов PM2. Вы узнаете, как сделать ваш сайт стабильным, быстрым и безопасным. Поехали!

Шаг 1: Подготовка VPS и подключение к серверу

Первым делом вам нужно арендовать VPS. Подойдут любые популярные провайдеры: DigitalOcean, Linode, Vultr или российские аналоги. Минимальная конфигурация для небольшого приложения — 1 vCPU и 1 GB RAM (с Ubuntu 20.04 или 22.04 LTS).

После создания сервера вы получите IP-адрес и root-пароль. Подключаемся по SSH:

ssh root@ваш_IP_адрес

Если вы используете macOS или Linux, SSH-клиент уже встроен. На Windows можно использовать PowerShell или Putty.

Сразу обновим систему:

apt update && apt upgrade -y

Совет: создайте отдельного пользователя (не root) для повседневной работы. Это повысит безопасность:

adduser myuser
usermod -aG sudo myuser
su - myuser

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

Мы установим последнюю стабильную версию Node.js через NodeSource — это самый надежный способ:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

Проверяем версии:

node --version   # v20.x.x
npm --version    # 10.x.x

Отлично! Теперь у нас есть среда для запуска JavaScript кода на сервере.

Шаг 2: Загрузка приложения на сервер и установка зависимостей

Есть несколько способов перенести код. Самый простой для новичков — использовать git clone. Если ваш код хранится на GitHub/GitLab, выполните:

git clone https://github.com/ваш_аккаунт/ваш_репозиторий.git /var/www/myapp
cd /var/www/myapp

Если репозиторий приватный, настройте SSH-ключи или используйте Personal Access Token.

Альтернативный способ — загрузить файлы через SCP (из вашей локальной консоли):

scp -r /путь/к/вашему/проекту myuser@ваш_IP:/var/www/myapp

После переноса кода устанавливаем зависимости:

cd /var/www/myapp
npm install --production

Флаг --production гарантирует, что не будут установлены dev-зависимости (тесты, сборщики и т.д.), что экономит место и повышает безопасность.

Настройка переменных окружения

Никогда не храните пароли и API-ключи в коде. Создайте файл .env в корне проекта:

nano .env

Пример содержимого:

PORT=3000
DB_HOST=localhost
DB_USER=myuser
DB_PASS=supersecret
JWT_SECRET=myjwtsecret123

Убедитесь, что этот файл добавлен в .gitignore. Для чтения переменных в коде используйте пакет dotenv (он уже должен быть в ваших зависимостях).

Шаг 3: Запуск приложения с PM2 и настройка автозапуска

Если вы запустите node app.js и закроете SSH-сессию — приложение упадет. Нам нужен менеджер процессов, который будет держать приложение живым 24/7. PM2 — идеальный выбор для Node.js.

Устанавливаем PM2 глобально:

sudo npm install -g pm2

Запускаем приложение:

pm2 start app.js --name "myapp"

Если ваше приложение использует порт 3000, проверьте, что оно работает:

curl http://localhost:3000

Вы должны увидеть HTML или JSON ответ. Теперь настраиваем автозапуск PM2 при перезагрузке сервера:

pm2 startup systemd
pm2 save

PM2 автоматически создаст systemd-сервис. Теперь ваше приложение будет запускаться даже после ребута.

Полезные команды PM2

  • pm2 list — список запущенных процессов
  • pm2 logs myapp — просмотр логов в реальном времени
  • pm2 restart myapp — перезапуск приложения
  • pm2 stop myapp — остановка приложения
  • pm2 monit — мониторинг использования CPU/RAM

Шаг 4: Настройка Nginx как Reverse Proxy и SSL сертификат

Ваше приложение слушает порт 3000, но пользователи не хотят вводить http://ваш_IP:3000. Мы настроим Nginx, который будет принимать запросы на стандартных портах 80 (HTTP) и 443 (HTTPS) и перенаправлять их на Node.js.

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

sudo apt install nginx -y

Создаем конфигурационный файл для нашего сайта:

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

Вставляем следующий код (замените your_domain.com на ваш домен):

server {
    listen 80;
    server_name your_domain.com www.y                

Блоги

Рекомендаций по книгам