
Как задеплоить сайт на облачный сервер: полное руководство с Nginx и HTTPS

Узнавайте о выходе новых статей в блоге первыми!
Будем держать в курсе новостей и облачных трендов


Виртуальный хостинг справляется с сайтом-визиткой или блогом на WordPress, но как только появляется нестандартный стек, высокая нагрузка или несколько приложений на одном IP — начинаются ограничения. Облачный сервер решает эти проблемы: root-доступ, любые пакеты, предсказуемая производительность и оплата только за то, что реально используется.
В этом руководстве рассмотрим конкретные шаги от создания виртуальной машины до работающего сайта с SSL-сертификатом. Руководство рассчитано на Ubuntu 22.04 LTS и VK Cloud, но подходит для любого облачного провайдера с VPS на базе Linux. Все команды ниже готовы к выполнению в терминале.
Что такое облачный сервер и зачем он нужен
Облачный сервер, или виртуальная машина (VPS), — это изолированный вычислительный ресурс с выделенными процессором, оперативной памятью и диском. В отличие от физического сервера, его арендуют хоть на час, масштабируют за минуты и платят только за фактическое потребление.
Российский рынок облачных сервисов в 2025 году достиг 400–416 млрд рублей, показав рост 30–35% год к году. По прогнозу iKS-Consulting, среднегодовой темп роста до 2030 года составит около 24%.
Главное, чем облачный сервер отличается от виртуального хостинга — полная изолированность ресурсов. На виртуальном хостинге процессор и память делятся между всеми клиентами одной физической машины, тогда как у облачного сервера три принципиальных преимущества:
- Полный контроль: root-доступ, любые пакеты, любые конфигурации.
- Предсказуемая производительность: ресурсы выделены конкретной виртуальной машине и не зависят от нагрузки соседей.
- Гибкость: поднять дополнительный сервер или добавить RAM можно за считанные минуты.
Когда нужен облачный сервер, а не хостинг
Виртуальный хостинг обычно подходит для сайтов-визиток и простых блогов на WordPress. Но дальше начинаются нюансы.
Выбирайте облачный сервер, если:
| Ситуация | Причина |
| Нестандартный стек (Node.js, Python, Go) | На виртуальном хостинге часто нет нужных версий |
| Высокая нагрузка (>1000 запросов/мин) | Shared-хостинг ограничивает CPU и RAM |
| Нужен Docker или кастомный Nginx | Root-доступ обязателен |
| Несколько приложений на одном IP | Виртуальные хосты Nginx |
| Приватный GitHub-репозиторий | Настройка SSH-ключей на сервере |

Шаг 1. Арендуем и настраиваем сервер
Создание виртуальной машины в облачной панели занимает 10–15 минут. Ниже — пример для VK Cloud, но последовательность аналогична у большинства провайдеров: выбор ОС, конфигурации, сети и SSH-ключа.
- Войдите в личный кабинет на cloud.vk.com.
- Перейдите в Облачные вычисления → Виртуальные машины → Создать инстанс.
- Укажите имя, выберите ОС — Ubuntu 22.04 LTS.
- Выберите конфигурацию. Для старта подходит например Standard-2-2 (2 vCPU, 2 ГБ RAM).
- В разделе «Сеть» выберите «Внешняя сеть (internet)» — публичный IP назначится автоматически.
- Создайте или выберите SSH-ключ и скачайте .pem-файл для подключения.
Security Groups — это правила файрвола, которые определяют, какой сетевой трафик может поступать на сервер и уходить с него. По умолчанию весь входящий трафик заблокирован. Для работы веб-сервера необходимо открыть три порта: TCP 22 (SSH-подключение), TCP 80 (HTTP) и TCP 443 (HTTPS).
Шаг 2. Подключаемся к серверу по SSH
Подключение к облачному серверу выполняется по протоколу SSH с использованием приватного ключа, который был создан на предыдущем шаге. Ключевой файл должен иметь права доступа 400 (только чтение для владельца), иначе SSH-клиент откажет в подключении из соображений безопасности.
chmod 400 /path/to/your-key.pem ssh -i /path/to/your-key.pem ubuntu@<IP-адрес>
В VK Cloud пользователь по умолчанию — ubuntu (не root). У других облачных провайдеров имя пользователя может отличаться: например, ec2-user в AWS или azureuser в Azure.
Шаг 3. Настраиваем SSH-ключ для GitHub
SSH-ключ для GitHub нужен, если исходный код сайта хранится в приватном репозитории. Ключ позволяет серверу аутентифицироваться в GitHub без пароля и безопасно клонировать репозиторий. Если репозиторий публичный, этот шаг можно пропустить.
ssh-keygen -t ed25519 -C "deploy@yourserver" -f ~/.ssh/github_deploy cat ~/.ssh/github_deploy.pub cat ~/.ssh/github_deploy.pub
Скопируйте содержимое публичного ключа (github_deploy.pub) и добавьте его в настройках GitHub: Settings → Deploy keys → Add deploy key. Алгоритм Ed25519 рекомендован GitHub как более безопасный и быстрый по сравнению с RSA.
Шаг 4. Клонируем проект и устанавливаем Nginx
Nginx — это веб-сервер и обратный прокси, который отдаёт статические файлы сайта по HTTP/HTTPS. После установки Nginx необходимо клонировать репозиторий с кодом сайта в директорию веб-сервера и назначить корректные права доступа.
sudo apt install nginx -y git clone https://github.com/username/your-repo.git /var/www/mysite git clone https://github.com/username/your-repo.git /var/www/mysite sudo chown -R www-data:www-data /var/www/mysite sudo find /var/www/mysite -type d -exec chmod 755 {} \; sudo find /var/www/mysite -type f -exec chmod 644 {} \;
Права 755 для директорий (чтение и переход для всех, запись только для владельца) и 644 для файлов (чтение для всех, запись только для владельца) — стандарт безопасности для веб-серверов. Владелец www-data — это системный пользователь, от имени которого работает Nginx.
Шаг 5. Настраиваем виртуальный хост Nginx
Конфигурация виртуального хоста Nginx определяет, какой домен обслуживается, где лежат файлы сайта и как обрабатываются запросы. Файл конфигурации создаётся в директории /etc/nginx/sites-available/, а затем активируется символической ссылкой в /etc/nginx/sites-enabled/.
server { listen 80; listen 80; server_name yourdomain.ru www.yourdomain.ru; root /var/www/mysite; index index.html index.htm; location / { try_files $uri $uri/ =404; } }
- listen 80 — сервер принимает HTTP-запросы на порту 80.
- server_name — домены, на которые Nginx будет отвечать.
- root — путь к файлам сайта.
- try_files — Nginx ищет запрошенный файл, затем директорию, иначе возвращает ошибку 404.
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
Команда nginx -t проверяет синтаксис конфигурации перед применением. Если конфигурация содержит ошибку, Nginx не перезагрузится и выведет описание проблемы.
Шаг 6. Подключаем домен
Привязка домена к серверу выполняется через DNS-записи: A-запись связывает доменное имя с IP-адресом сервера. В VK Cloud доступен встроенный DNS-хостинг с NS-серверами:
ns1.mcs.mail.ru ns2.mcs.mail.ru
Для использования DNS VK Cloud необходимо указать эти NS-серверы у регистратора домена. DNS-изменения применяются от нескольких минут до 48 часов. В редких случаях — до 72 часов (зависит от TTL и настроек провайдера). Проверить текущее состояние DNS можно командой dig yourdomain.ru +short.
Шаг 7. Подключаем HTTPS-сертификат
Let's Encrypt — крупнейший центр сертификации: ~63% всех SSL-сертификатов в интернете. Сервис бесплатный.
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d yourdomain.ru -d www.yourdomain.ru
Сертификаты Let's Encrypt действуют 90 дней (в 2027–2028 гг. срок сократится до 45 дней по требованиям CA/Browser Forum). Certbot при установке создаёт задачу автопродления.
sudo certbot renew --dry-run
Шаг 8. Как обновлять сайт после деплоя
Обновление сайта на сервере сводится к загрузке последних изменений из Git-репозитория и перезагрузке Nginx. Перед перезагрузкой обязательна проверка конфигурации командой nginx -t, чтобы ошибка в конфигурации не привела к остановке сервера.
cd /var/www/mysite git pull origin main sudo nginx -t && sudo systemctl reload nginx
Такой ручной процесс подходит для небольших проектов. Для продакшен-сайтов с частыми обновлениями рекомендуется настроить CI/CD (например, GitHub Actions), который будет автоматически деплоить изменения при пуше в ветку main.
Частые ошибки при деплое сайта на облачный сервер
Восемь типичных проблем, с которыми сталкиваются при первом деплое, и способы их решения:
- Брутфорс SSH — 89% атак на Linux-серверы направлены на подбор паролей SSH (Elastic, 2024 Global Threat Report. Защита: использовать SSH-ключи вместо паролей, установить Fail2Ban для блокировки IP после неудачных попыток.
- Невалидная конфигурация Nginx — Nginx не запустится и не перезагрузится, если в конфигурационном файле есть синтаксическая ошибка. Перед каждым reload выполняйте sudo nginx -t.
- Закрытые порты в файрволе — UFW (локальный файрвол) и Security Groups (облачный файрвол) в VK Cloud блокируют весь входящий трафик по умолчанию. Необходимо явно открыть порты 80 и 443.
- Конфигурация без активации — файл в sites-available без символической ссылки в sites-enabled не загружается Nginx.
- Ожидание DNS — DNS-изменения распространяются от нескольких минут до 48 часов.
- Certbot не находит домен — Certbot не сможет выпустить сертификат, пока DNS-запись A не указывает на IP-адрес сервера.
- 502 Bad Gateway — означает, что Nginx работает, но бэкенд-приложение (Node.js, Python, PHP-FPM) не запущено или слушает другой порт.
- Ошибки прав доступа — Nginx работает от системного пользователя www-data. Файлы сайта должны иметь права: директории 755, файлы 644, владелец www-data.
Итог
Деплой сайта на облачный сервер по схеме VPS + Ubuntu + Nginx + Let's Encrypt занимает 30–60 минут и не требует специальных DevOps-навыков. Nginx обслуживает 33,8% сайтов в мире (более 60% в России), Let's Encrypt обеспечивает ~63% всех SSL-сертификатов — это проверенный и широко используемый стек. Руководство подходит для статических сайтов и SPA; для приложений с серверным бэкендом потребуется дополнительная настройка reverse proxy в Nginx.
Оставьте заявку, чтобы получить консультацию
Наши специалисты свяжутся с вами в ближайшее время и ответят на все вопросы.

Почитать по теме

Публичное или приватное облако: что выбрать бизнесу в России

«Телепортация» на работу: как работают облачные VDI-решения


