VK Cloud

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

31 марта 2026 г.
268267_007n7ek.jpg
Евгений Левашов
Автор статьи
_blog_head_181.png

Узнавайте о выходе новых статей в блоге первыми!

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

section-subscribe_2x.png
    section-subscribe_2x.png

    Виртуальный хостинг справляется с сайтом-визиткой или блогом на 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-ключа.

    1. Войдите в личный кабинет на cloud.vk.com.
    2. Перейдите в Облачные вычисления → Виртуальные машины → Создать инстанс.
    3. Укажите имя, выберите ОС — Ubuntu 22.04 LTS.
    4. Выберите конфигурацию. Для старта подходит например Standard-2-2 (2 vCPU, 2 ГБ RAM).
    5. В разделе «Сеть» выберите «Внешняя сеть (internet)» — публичный IP назначится автоматически.
    6. Создайте или выберите 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.

    Частые ошибки при деплое сайта на облачный сервер

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

    1. Брутфорс SSH89% атак на Linux-серверы направлены на подбор паролей SSH (Elastic, 2024 Global Threat Report. Защита: использовать SSH-ключи вместо паролей, установить Fail2Ban для блокировки IP после неудачных попыток.
    2. Невалидная конфигурация Nginx — Nginx не запустится и не перезагрузится, если в конфигурационном файле есть синтаксическая ошибка. Перед каждым reload выполняйте sudo nginx -t.
    3. Закрытые порты в файрволе — UFW (локальный файрвол) и Security Groups (облачный файрвол) в VK Cloud блокируют весь входящий трафик по умолчанию. Необходимо явно открыть порты 80 и 443.
    4. Конфигурация без активации — файл в sites-available без символической ссылки в sites-enabled не загружается Nginx.
    5. Ожидание DNS — DNS-изменения распространяются от нескольких минут до 48 часов.
    6. Certbot не находит домен — Certbot не сможет выпустить сертификат, пока DNS-запись A не указывает на IP-адрес сервера.
    7. 502 Bad Gateway — означает, что Nginx работает, но бэкенд-приложение (Node.js, Python, PHP-FPM) не запущено или слушает другой порт.
    8. Ошибки прав доступа — 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.

    Оставьте заявку, чтобы получить консультацию

    Наши специалисты свяжутся с вами в ближайшее время и ответят на все вопросы.

    section_subscribe_2x_9ab2d878a6.png
              Теги: Nginx, VK Cloud, облачный сервер
              Ссылка скопирована
              Поделиться

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

              _blog_head_140.png
              2 марта

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

              _blog_head_19.png
              10 февраля

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

              _blog_head_8.png
              3 февраля

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

              40+ готовых сервисов