Урок 14 · Слайд 1
🚀

Что такое деплой?

Публикуем сайт в интернете

Деплой (deploy) — процесс публикации кода на сервере, чтобы сайт стал доступен всем в интернете. Раньше это называли "выложить на хостинг".

Варианты деплоя:

  • ☁️ VPS — виртуальный сервер (полный контроль)
  • 🟣 Vercel / Netlify — деплой за 1 клик (для фронтенда)
  • 🟢 Railway / Render — для Node.js проектов
  • 🔵 GitHub Pages — бесплатно для статики
📖 Словарик
Deploy (деплой)
Процесс публикации приложения на сервер для пользователей.
"Задеплоил новую версию — пользователи видят обновление"
Production (прод)
Боевая среда — сервер, на котором работает реальный сайт.
"Баг на проде = пользователи не могут войти"
Staging (стейдж)
Тестовый сервер — копия прода для проверки изменений.
"Сначала деплоим на stage, потом на prod"
Урок 14 · Слайд 2
🖥️

VPS: виртуальный сервер

Твой кусочек компьютера в датацентре

VPS (Virtual Private Server) — это арендованный компьютер в датацентре, работающий 24/7. Ты получаешь IP-адрес, логин root и полный контроль.

Популярные провайдеры VPS
Timeweb Cloud — от 130₽/мес 🇷🇺
REG.RU — от 149₽/мес 🇷🇺
DigitalOcean — от $4/мес 🌎
Hetzner — от €3.5/мес 🇩🇪

# Что включено обычно:
CPU: 1-2 ядра
RAM: 1-2 ГБ
SSD: 20-40 ГБ
ОС: Ubuntu 22.04 LTS
IP: 1 статический IPv4
📖 Словарик
VPS
Virtual Private Server — виртуальный выделенный сервер.
"VPS = как свой компьютер, но в интернете 24/7"
Датацентр
Здание с тысячами серверов, бесперебойным питанием и охладением.
"Google, Amazon имеют датацентры по всему миру"
Урок 14 · Слайд 3
🔑

SSH: подключаемся к серверу

Управляем удалённым компьютером

terminal
# Подключение по SSH
$ ssh root@185.10.20.30
Welcome to Ubuntu 22.04.3 LTS
root@myserver:~#

# Теперь мы на сервере! Обновляем систему:
root@server:~# apt update && apt upgrade -y

# Устанавливаем Node.js
root@server:~# curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
root@server:~# apt install nodejs -y
nodejs: /usr/bin/nodejs

# Создаём пользователя (не работаем от root)
root@server:~# adduser deploy
root@server:~# usermod -aG sudo deploy
📖 Словарик
SSH
Secure Shell — зашифрованный протокол для удалённого управления.
"SSH позволяет управлять сервером как локальным терминалом"
root
Суперпользователь — полный доступ ко всему на сервере.
"Работать от root опасно — можно сломать сервер"
Урок 14 · Слайд 4
📤

Копируем файлы: scp и rsync

Загружаем проект на сервер

terminal — копирование на сервер
# scp — копирует файлы по SSH
$ scp -r ./myproject root@185.10.20.30:/var/www/
server.js 100% 2.1KB 45.2KB/s
package.json 100% 456 12.1KB/s

# rsync — умная синхронизация (только изменения)
$ rsync -avz --exclude node_modules \
./myproject/ root@185.10.20.30:/var/www/myproject/
sending incremental file list
server.js
sent 3,456 bytes, received 45 bytes

# Устанавливаем зависимости на сервере
root@server:/var/www/myproject# npm install --production
📖 Словарик
scp
Secure Copy — копирует файлы по SSH-протоколу.
"scp file.txt user@server:/path/ — загрузить файл"
rsync
Синхронизация файлов — копирует только изменения.
"rsync быстрее scp при повторных деплоях"
Урок 14 · Слайд 5
🔄

PM2: сервер не падает

Process manager для Node.js

terminal — PM2
# Устанавливаем PM2
$ npm install -g pm2

# Запускаем сервер через PM2
$ pm2 start server.js --name myapp
┌────┬────────────────┬──────────┬─────┬───────────┐
│ id │ name │ status │ cpu │ memory │
│ 0 │ myapp │ online │ 0% │ 45.2 MB │
└────┴────────────────┴──────────┴─────┴───────────┘

# Автозапуск при перезагрузке сервера
$ pm2 startup
$ pm2 save

# Просмотр логов
$ pm2 logs myapp

# Перезапуск после обновления кода
$ pm2 restart myapp
📖 Словарик
PM2
Process Manager 2 — менеджер процессов для Node.js.
"PM2 перезапускает сервер если он упал"
Daemon (демон)
Фоновый процесс, работающий постоянно без интерфейса.
"PM2 запускает Node.js как daemon"
Урок 14 · Слайд 6
🔒

Nginx + SSL: финальная настройка

Сайт с HTTPS за 5 минут

terminal — полный setup
# 1. Устанавливаем nginx
$ apt install nginx -y

# 2. Создаём конфиг (proxy к PM2)
$ nano /etc/nginx/sites-available/mysite
server {
listen 80;
server_name mysite.ru;
location / {
proxy_pass http://localhost:3000;
}
}

# 3. Включаем конфиг
$ ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/
$ nginx -t && systemctl reload nginx

# 4. SSL через Certbot
$ certbot --nginx -d mysite.ru
Successfully deployed certificate! ✅
📖 Словарик
nginx -t
Проверяет синтаксис конфига Nginx без перезапуска.
"Всегда делай nginx -t перед reload!"
systemctl
Управление системными службами Linux.
"systemctl restart nginx — перезапустить nginx"
Урок 14 · Слайд 7
🏆

Мини-квест: задеплой сайт!

Полный цикл от кода до продакшена

1
Зарегистрируйся на Vercel.com и подключи GitHub аккаунт
2
Создай репозиторий на GitHub со своим проектом (папка с index.html)
3
На Vercel нажми "New Project" → выбери репозиторий → Deploy
4
Получи ссылку вида yourproject.vercel.app — это твой сайт!
5
★ Бонус: купи домен и подключи к Vercel через DNS 🏆
6
★★ Попробуй VPS: DigitalOcean даёт $200 кредитов на 60 дней новым пользователям