Разворачиваем сервер на Ubuntu для проекта на Next.js

Разворачиваем сервер на Ubuntu для проекта на Next.js

Устанавливаем виртуальную машину

Вначале устанавливаем виртуальную машину, например Oracle VM VirtualBox https://www.virtualbox.org

В настройках виртуальной машины ставим для сети тип подключения: сетевой мост.

Устанавливаем сам Ubuntu

Качаем Ubuntu и устанавливаем https://ubuntu.com/

Если нужно узнать ip адрес в Ubuntu

Для проверки ip адреса в Ubuntu, можно использовать команду:

ip addr show

Если заканчивается место диска VirtualBox

Увеличить его можно при помощи таких команд для Windows

cd "C:\Program Files\Oracle\VirtualBox"

Для просмотра информации о диске набираем команду:

VBoxManage showhdinfo C:\virtualMachine\ubuntu\ubuntu\ubuntu.vdi

Для увеличения размера, используем команду, в которой указываем новый размер диска:

VBoxManage modifyhd C:\virtualMachine\ubuntu\ubuntu\ubuntu.vdi --resize 20240

Далее нужно загрузиться в виртуальную машину, или при помощи загрузочного диска, если дошло до того, что из-за места не загружается. И при помощи утилиты Gparted, расширяем место, нажав на команду “изменить размер/переместить”.

Устанавливаем SSH на Ubuntu

Установка SSH на Ubuntu

sudo apt-get install ssh

Запуск, остановка, перезапуск SSH

sudo service ssh stop|start|restart

Для обмена файлами, можно использовать FileZilla

Подключение к SSH из командной строки:

ssh root@hostname-or-ip-address

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

sudo apt install nodejs

Проверяем версию Node.js

node -v

Установка более свежей версии Node.js

Устанавливаем url

sudo apt install curl

Вначале установим PPA для получения доступа к его пакетам. Используйте в домашнем каталоге команду curl для получения скрипта установки предпочитаемой версии.

cd ~
curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh

Запускаем скрипт с привилегиями sudo

sudo bash nodesource_setup.sh

Далее запускаем команду, для установки Node.js

sudo apt-get install -y nodejs

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

node -v

Установка NPM

sudo apt install npm

Проверяем версию npm

npm -v

Создаем проект на Next.js

npx create-next-app yandex-direct

Далее заливаем файлы проекта, если есть разработанные уже, можно через FileZilla

Запускаем команду, для установки пакетов проекта:

npm install

Далее запускаем команду:

npm run build

А для запуска будем использовать демонизацию

Устанавливаем pm2 для демонизации

sudo npm install pm2 -g

Запустим при помощи pm2

pm2 start npm --name "next" -- start

Добавляем автозапуск, для pm2

pm2 startup ubuntu

Выполняем нижнюю сформированную команду, которая появилась на экране, например:

sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup ubuntu -u dima --hp /home/dima

Сохраним изменения

pm2 save

Другие полезные команды pm2

Для проверки запущенных приложений:

pm2 list

Для мониторинга:

pm2 monit

Перезагрузка всех процессов pm2

pm2 reload all

Остановка процесса, например так:

pm2 stop next

Для удаления процесса:

pm2 delete next

Устанавливаем и настраиваем веб-сервер nginx

sudo apt-get install nginx

Редактируем конфигурационный файл:

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

В настройках, нужно прописать:

listen 80;
server_name yandex-direct.polyakovdmitriy.ru;
location / {
proxy_pass http://127.0.0.1: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;
}

Сохраняем и перезапускаем nginx:

sudo service nginx restart

Для проверки конфигурационных файлов nginx можно использовать:

sudo nginx -t

Настройка раздачи статики в Nginx

Для раздачи статических файлов прописываем в настройках, например так:

location /public {
    include /etc/nginx/mime.types;
    root /home/dima/Документы/pozdravlenie;
}

Далее необходимо

Пробросить порты на роутере

Сделать необходимые записи dns для домена

Настройка https (ssl) в Nginx с помощью сертификатов Let’s Encrypt в Ubuntu

Шаг 1 – Установка Certbot

sudo apt install certbot python3-certbot-nginx

Шаг 2 – перезагружаем nginx

sudo systemctl reload nginx

Шаг 3 – Получение сертификата SSL

sudo certbot --nginx -d yandex-direct.polyakovdmitriy.ru

Шаг 4 – Проверка автоматического обновления Certbot

sudo systemctl status certbot.timer

Чтобы протестировать процесс обновления, можно сделать запуск вручную

sudo certbot renew --dry-run

Если ошибок нет, значит все ок.

Далее перезапускаем и убеждаемся, что все работает!

Для запуска нескольких сайтов на Next.js на одном сервере

Соответственно next.js проекты запускаем на разных портах, чтобы запустить на другом порту, используется ключик -p

npx next start -p 4000

Ключик с портом записываем в package.json

"start": "next start -p 4000"

Соответственно запускаем еще один процесс в pm2:

pm2 start npm --name "next2" -- start

Далее

pm2 save

Если нужно запустить при помощи pm2 проект на Node, то можно прописать так:

pm2 start app.js

Далее

pm2 save

В Nginx – добавляем запись о новом сервере

В файле /etc/nginx/sites-available/default, добавляем например такую запись:

server {
	root /var/www/html;

	# Add index.php to the list if you are using PHP
	index index.html index.htm index.nginx-debian.html;

	server_name kontekstnaya-reklama.polyakovdmitriy.ru;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		
		proxy_pass http://127.0.0.1:4000;
		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;
	}
}

Запустить редактирование файлика, можно при помощи команды:

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

Перезапускаем nginx

sudo service nginx restart

Далее получаем сертификат для https и для этого домена

sudo certbot --nginx -d kontekstnaya-reklama.polyakovdmitriy.ru

После перезаливки проектов новыми файлами, используем такие команды

npm run build
pm2 reload all

Оставить комментарий