Next.js на виртуальной машине Cloud.ru
Развертывание приложения Next.js на виртуальной машине Cloud.ru с использованием PM2
Платформа Cloud.ru предоставляет удобные инструменты для развертывания серверов, включая запуск приложений на Next.js. В этой статье мы рассмотрим, как создать виртуальную машину на Cloud.ru, настроить безопасность, развернуть приложение Next.js с использованием Nginx и Node.js, а также настроить PM2 для управления процессом приложения.
Часть 1: Регистрация на Cloud.ru и создание виртуальной машины
-
Регистрация на платформе Cloud.ru
Перейдите на console.cloud.ru и создайте учетную запись. Заполните необходимые данные для доступа к платформе. -
Создание виртуального сервера
В личном кабинете Cloud.ru создайте новую виртуальную машину. Выберите образ Ubuntu 22.04 или другой поддерживаемый дистрибутив Linux. -
Внешний IP-адрес
Обратите внимание, что подключение внешнего IP-адреса может потребовать дополнительных расходов. В Cloud.ru стоимость внешнего IP составляет около 150 рублей в месяц. Это важно для обеспечения доступа к вашему приложению через интернет.
Часть 2: Установка Node.js, Nginx и PM2 на сервер
После создания виртуальной машины подключитесь к ней через SSH:
ssh username@your_vm_ip
Замените username
на ваше имя пользователя, а your_vm_ip
— на IP-адрес вашей виртуальной машины.
Установка Node.js
-
Обновите пакеты на сервере:
sudo apt update && sudo apt upgrade -y
-
Установите
curl
, необходимый для загрузкиnvm
:sudo apt install curl -y
-
Загрузите и установите
nvm
(Node Version Manager):curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash source ~/.bashrc
-
Установите последнюю стабильную версию Node.js:
nvm install --lts
Установка Nginx
-
Установите веб-сервер Nginx:
sudo apt install nginx -y
-
Проверьте, что Nginx установлен и запущен:
systemctl status nginx
Установка PM2
PM2 — это менеджер процессов для Node.js, который позволяет управлять приложением, автоматически перезапускать его в случае сбоев и запускать в фоновом режиме.
-
Установите PM2 глобально:
npm install -g pm2
-
Проверьте установку:
pm2 --version
Часть 3: Настройка Nginx для проксирования Next.js
-
Создайте конфигурационный файл для виртуального хоста:
sudo nano /etc/nginx/sites-available/nextjs_app.conf
-
Добавьте следующую конфигурацию:
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; }
-
Создайте символическую ссылку для активации конфигурации:
sudo ln -s /etc/nginx/sites-available/nextjs_app.conf /etc/nginx/sites-enabled/
-
Проверьте конфигурацию на наличие ошибок и перезагрузите Nginx:
sudo nginx -t sudo systemctl reload nginx
Часть 4: Настройка группы безопасности для разрешения трафика
Чтобы приложение Next.js было доступно из интернета, настройте правила безопасности для разрешения входящего и исходящего трафика.
- В интерфейсе Cloud.ru найдите раздел с группами безопасности.
- Проверьте, какая группа безопасности назначена вашему серверу. При необходимости создайте новую группу.
- Добавьте следующие правила для разрешения входящего трафика по 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 для всех пользователей.
- Сохраните изменения и убедитесь, что сервер доступен через публичный IP.
Часть 5: Развертывание и запуск Next.js с использованием PM2
-
Перейдите в директорию вашего приложения и соберите его:
npm run build
-
Запустите приложение с помощью PM2:
pm2 start npm --name "nextjs-app" -- start
-
Проверьте статус приложения:
pm2 status
-
Настройте автозапуск PM2 при перезагрузке сервера:
pm2 startup pm2 save
Теперь ваше приложение будет работать на порту 3000 и доступно по адресу http://example.com
или http://your_public_ip
. PM2 обеспечит автоматический перезапуск приложения в случае сбоев и его работу в фоновом режиме.
Заключение
Вы успешно настроили виртуальную машину на Cloud.ru для работы с приложением Next.js. Использование Nginx, PM2 и правил безопасности обеспечивает стабильность, безопасность и удобство управления вашим приложением. Убедитесь, что внешний IP настроен корректно, а группа безопасности разрешает доступ по HTTP и HTTPS, чтобы пользователи могли беспрепятственно пользоваться вашим приложением.