Процесс разворачивания сайта на Ubuntu
1. Подключение к серверу: ssh Логин@IPv4
2. Вводим пароль
3. Обновление системы apt update && apt upgrade -y
4. Установка Nginx: apt install nginx -y
4.1 Запуск Nginx: systemctl start nginx
4.2 Добавить Nginx в автозагрузку: systemctl enable nginx
5. Скачать NVM: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
5.1 Активация NVM: source ~/.bashrc
5.2 Установка Node.js: nvm install --lts
5.3 Выбор версии: nvm use --lts
6. Установка PM2: npm install -g pm2
7. Клонирование репозитория:
7.1 Создание директории: mkdir -p /var/www
7.2 Переход в директорию: cd /var/www
7.3 Клонирование репозитория: git clone https://github.com/ваш-репозиторий.git
7.4 Переход в проект: cd {Название проекта}
8. Установка зависимостей: npm install
9. Билд: npm run build
10. Запуск: pm2 start npm --name "Имя процесса(Название проекта)" -- start
10.1 Сохраниние конфигурации:
10.1.1 pm2 save
10.1.2 pm2 startup
11. Сознание nginx конфига: nano /etc/nginx/sites-available/{Домен}
Пример конфига:
# Редирект с HTTP на HTTPS
server {
listen 80;
server_name {{ДОМЕН}};
return 301 https://$server_name$request_uri;
}
# HTTPS сервер
server {
listen 443 ssl http2;
server_name {{ДОМЕН}};
ssl_certificate /etc/ssl/certs/{{ДОМЕН}}.crt;
ssl_certificate_key /etc/ssl/private/{{ДОМЕН}}.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
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;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}11.1 Активация сайта: ln -s /etc/nginx/sites-available/{ДОМЕН} /etc/nginx/sites-enabled/
11.2 Проверяем конфигурацию на ошибки: nginx -t
11.3 Перезагрузка Nginx: systemctl reload nginx
12. Установка сертификатов:
12.1 Скачивание с локального компьютера
12.1.1 Сертификат: scp /путь/к/файлу.crt {ЛОГИН}@{IPv4}:/etc/ssl/certs/{ДОМЕН}.crt
12.1.2 Приватный ключ: scp /путь/к/файлу.key {ЛОГИН}@{IPv4}:/etc/ssl/private/{ДОМЕН}.key
12.1.3 Установка прав на сертификат: chmod 644 /etc/ssl/certs/{ДОМЕН}.crt
12.1.4 Установка прав на приватный ключ: chmod 600 /etc/ssl/private/{ДОМЕН}.key
12.2 Через Certbot
12.2.1 Установка: apt install certbot python3-certbot-nginx -y
12.2.2 Получение сертификата: certbot --nginx -d {ДОМЕН}
13. Перезагрузка: systemctl reload nginx
14. Проверки:
14.1 pm2 list:
- status должен быть online
- name — ваше приложение есть в списке
14.2 systemctl status nginx: Показывает статус Nginx
14.3 ss -tlnp | grep -E ":80|:443": Проверяет, какие программы слушают порты 80 (HTTP) и 443 (HTTPS)
14.4 curl -I https://localhost -k: Проверяет, отвечает ли HTTPS локально
15. Обновление проекта:
- cd /var/www/{Папка}
- git pull origin main
- npm install
- npm run build
- pm2 restart {Имя процесса}