Next.js на виртуальной машине Cloud.ru

Развертывание приложения Next.js на виртуальной машине Cloud.ru с использованием PM2

Платформа Cloud.ru предоставляет удобные инструменты для развертывания серверов, включая запуск приложений на Next.js. В этой статье мы рассмотрим, как создать виртуальную машину на Cloud.ru, настроить безопасность, развернуть приложение Next.js с использованием Nginx и Node.js, а также настроить PM2 для управления процессом приложения.

Часть 1: Регистрация на Cloud.ru и создание виртуальной машины

  1. Регистрация на платформе Cloud.ru
    Перейдите на console.cloud.ru и создайте учетную запись. Заполните необходимые данные для доступа к платформе.

  2. Создание виртуального сервера
    В личном кабинете Cloud.ru создайте новую виртуальную машину. Выберите образ Ubuntu 22.04 или другой поддерживаемый дистрибутив Linux.

  3. Внешний IP-адрес
    Обратите внимание, что подключение внешнего IP-адреса может потребовать дополнительных расходов. В Cloud.ru стоимость внешнего IP составляет около 150 рублей в месяц. Это важно для обеспечения доступа к вашему приложению через интернет.

Часть 2: Установка Node.js, Nginx и PM2 на сервер

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

ssh username@your_vm_ip

Замените username на ваше имя пользователя, а your_vm_ip — на IP-адрес вашей виртуальной машины.

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

  1. Обновите пакеты на сервере:

    sudo apt update && sudo apt upgrade -y
    
  2. Установите curl, необходимый для загрузки nvm:

    sudo apt install curl -y
    
  3. Загрузите и установите nvm (Node Version Manager):

    curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
    source ~/.bashrc
    
  4. Установите последнюю стабильную версию Node.js:

    nvm install --lts
    

Установка Nginx

  1. Установите веб-сервер Nginx:

    sudo apt install nginx -y
    
  2. Проверьте, что Nginx установлен и запущен:

    systemctl status nginx
    

Установка PM2

PM2 — это менеджер процессов для Node.js, который позволяет управлять приложением, автоматически перезапускать его в случае сбоев и запускать в фоновом режиме.

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

    npm install -g pm2
    
  2. Проверьте установку:

    pm2 --version
    

Часть 3: Настройка Nginx для проксирования Next.js

  1. Создайте конфигурационный файл для виртуального хоста:

    sudo nano /etc/nginx/sites-available/nextjs_app.conf
    
  2. Добавьте следующую конфигурацию:

    server {
        listen 80;
        server_name example.com www.example.com;
    
        location / {
            proxy_pass http://localhost: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;
        }
    
        access_log /var/log/nginx/nextjs_app.access.log;
        error_log /var/log/nginx/nextjs_app.error.log;
    }
    
  3. Создайте символическую ссылку для активации конфигурации:

    sudo ln -s /etc/nginx/sites-available/nextjs_app.conf /etc/nginx/sites-enabled/
    
  4. Проверьте конфигурацию на наличие ошибок и перезагрузите Nginx:

    sudo nginx -t
    sudo systemctl reload nginx
    

Часть 4: Настройка группы безопасности для разрешения трафика

Чтобы приложение Next.js было доступно из интернета, настройте правила безопасности для разрешения входящего и исходящего трафика.

  1. В интерфейсе Cloud.ru найдите раздел с группами безопасности.
  2. Проверьте, какая группа безопасности назначена вашему серверу. При необходимости создайте новую группу.
  3. Добавьте следующие правила для разрешения входящего трафика по HTTP и HTTPS:

Для HTTP (порт 80):

  • Протокол: TCP
  • Порт: 80
  • Тип источника: IP-адрес
  • Источник: 0.0.0.0/0 (разрешить доступ со всех IP-адресов)
  • Описание: Разрешение входящего HTTP-трафика (IPv4).

Для HTTPS (порт 443):

  • Протокол: TCP
  • Порт: 443
  • Тип источника: IP-адрес
  • Источник: 0.0.0.0/0 (разрешить доступ со всех IP-адресов)
  • Описание: Разрешение входящего HTTPS-трафика (IPv4).

Эти правила обеспечат доступ к вашему серверу по протоколам HTTP и HTTPS для всех пользователей.

  1. Сохраните изменения и убедитесь, что сервер доступен через публичный IP.

Часть 5: Развертывание и запуск Next.js с использованием PM2

  1. Перейдите в директорию вашего приложения и соберите его:

    npm run build
    
  2. Запустите приложение с помощью PM2:

    pm2 start npm --name "nextjs-app" -- start
    
  3. Проверьте статус приложения:

    pm2 status
    
  4. Настройте автозапуск PM2 при перезагрузке сервера:

    pm2 startup
    pm2 save
    

Теперь ваше приложение будет работать на порту 3000 и доступно по адресу http://example.com или http://your_public_ip. PM2 обеспечит автоматический перезапуск приложения в случае сбоев и его работу в фоновом режиме.

Заключение

Вы успешно настроили виртуальную машину на Cloud.ru для работы с приложением Next.js. Использование Nginx, PM2 и правил безопасности обеспечивает стабильность, безопасность и удобство управления вашим приложением. Убедитесь, что внешний IP настроен корректно, а группа безопасности разрешает доступ по HTTP и HTTPS, чтобы пользователи могли беспрепятственно пользоваться вашим приложением.

nextjscloudrupm2
Обсудим ваш проект?
Не ждите идеального момента или подходящего времени — начинайте прямо сейчас! Свяжитесь со мной, и я помогу воплотить ваши идеи в реальность.