Устанавливаем виртуальную машину
Вначале устанавливаем виртуальную машину, например 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