Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Статический сайт в Object Storage
    • Сайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Создание сайта на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Сайт на базе 1С-Битрикс
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Публикация обновлений для игр с помощью Cloud CDN
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на OpenCart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage с помощью CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Распознавание архива изображений в Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых ВМ
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка синхронизации часов с помощью NTP
    • Работа с группой ВМ с автомасштабированием
    • Масштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди Message Queue
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Cloud Logging
    • Резервное копирование ВМ с помощью Hystax Acura Backup
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360 в Cloud DNS
    • Интеграция Cloud DNS и корпоративного сервиса DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
    • Все руководства
    • Миграция БД из стороннего кластера Apache Kafka® в Managed Service for Apache Kafka®
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for YDB с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Настройка Kafka Connect для работы с кластером Managed Service for Apache Kafka®
    • Управление схемами данных в Managed Service for Apache Kafka®
    • Использование Managed Schema Registry с Managed Service for Apache Kafka®
    • Использование Confluent Schema Registry с Managed Service for Apache Kafka®
    • Миграция базы данных из MySQL в ClickHouse с помощью Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Настройка Managed Service for ClickHouse для Graphite
    • Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Получение данных из RabbitMQ в Managed Service for ClickHouse
    • Сохранение потока данных Data Streams в Managed Service for ClickHouse
    • Использование гибридного хранилища в Managed Service for ClickHouse
    • Шардирование таблиц Managed Service for ClickHouse
    • Настройка Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse из других облачных сетей
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
    • Миграция данных из стороннего кластера Elasticsearch в Managed Service for Elasticsearch с помощью Reindex API
    • Миграция коллекций из стороннего кластера MongoDB в Managed Service for MongoDB
    • Миграция данных в Managed Service for MongoDB
    • Шардирование коллекций MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Миграция БД из стороннего кластера MySQL в кластер Managed Service for MySQL
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Синхронизация данных из стороннего кластера MySQL в Managed Service for MySQL с помощью Data Transfer
    • Миграция БД из Managed Service for MySQL в сторонний кластер MySQL
    • Миграция БД из Managed Service for MySQL в Object Storage с помощью Data Transfer
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Миграция БД из Managed Service for MySQL в Managed Service for YDB с помощью Data Transfer
    • Создание кластера PostgreSQL для «1С:Предприятия»
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Миграция БД из Managed Service for PostgreSQL
    • Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for YDB с помощью Data Transfer
    • Миграция БД из Managed Service for PostgreSQL в Object Storage
    • Миграция БД из Greenplum® в ClickHouse
    • Миграция БД из Greenplum® в PostgreSQL
    • Миграция БД из стороннего кластера Redis в Managed Service for Redis
    • Использование кластера Managed Service for Redis в качестве хранилища сессий PHP
  • Продукты Microsoft в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая инфраструктура
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Маршрутизация с помощью NAT-инстанса
    • Создание туннеля IPSec VPN
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Настройка сети для Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Cloud Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью QL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Разработка навыка Алисы и сайта с авторизацией
  1. Веб-сервис
  2. Сайт на LAMP- или LEMP-стеке

Веб-сайт на LAMP- или LEMP-стеке

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте облачную сеть
  • Создайте группы безопасности
  • Создайте виртуальную машину с предустановленным веб-сервером
  • Загрузите файлы веб-сайта
  • Настройте DNS (если есть доменное имя)
    • Добавьте зону
    • Добавьте ресурсные записи
    • Делегируйте доменное имя
  • Проверьте работу сайта
  • Как удалить созданные ресурсы
  • Как создать инфраструктуру с помощью Terraform

LAMP (Linux, Apache HTTP Server, MySQL, PHP) и его вариация LEMP (в которой веб-сервер Apache заменяется на Nginx) — популярные наборы компонентов для развертывания веб-приложений и динамических сайтов.

С помощью этой инструкции вы научитесь разворачивать LAMP (LEMP) в инфраструктуре Yandex Cloud: в результате вы запустите виртуальную машину, на которой будет работать веб-сервер вашего сайта.

Чтобы настроить LAMP- или LEMP-сайт:

  1. Подготовьте облако к работе.
  2. Создайте виртуальную машину с предустановленным веб-сервером.
  3. Загрузите файлы веб-сайта.
  4. Настройте DNS.
  5. Проверьте работу сайта.

Если сайт вам больше не нужен, удалите все используемые им ресурсы.

Также инфраструктуру для размещения веб-сервера LAMP- или LEMP-сайта на виртуальной машине можно развернуть через Terraform с помощью готового файла конфигурации.

Подготовьте облако к работе

Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость поддержки LAMP-сервера входит:

  • плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
  • плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Создайте облачную сеть

Все ресурсы, созданные в сценарии, будут относиться к одной облачной сети.

Чтобы создать сеть:

Консоль управления
Terraform
  1. В консоли управления выберите сервис Virtual Private Cloud.
  2. Нажмите кнопку Создать сеть.
  3. Укажите Имя сети: web-network.
  4. В поле Дополнительно выберите опцию Создать подсети.
  5. Нажмите кнопку Создать сеть.

См. раздел Как создать инфраструктуру с помощью Terraform.

Создайте группы безопасности

Примечание

Группы безопасности находятся на стадии Preview. Если они недоступны в вашей сети, для ресурсов будет разрешен весь входящий и исходящий трафик и дополнительной настройки не требуется.

Группы безопасности содержат правила, которые разрешают обращаться к ВМ из интернета. В сценарии будет создана группа безопасности sg-web.

Чтобы создать группу безопасности:

Консоль управления
Terraform
  1. В консоли управления выберите сервис Virtual Private Cloud.

  2. Откройте вкладку Группы безопасности.

  3. Создайте группу безопасности для балансировщика:

    1. Нажмите кнопку Создать группу.

    2. Укажите Имя группы: sg-web.

    3. Выберите Сеть web-network.

    4. В блоке Правила создайте следующие правила по инструкции под таблицей:

      Направление
      трафика
      Описание Диапазон
      портов
      Протокол Тип источника /
      назначения
      Источник /
      назначение
      Исходящий any Весь Любой CIDR 0.0.0.0/0
      Входящий ext-http 80 TCP CIDR 0.0.0.0/0
      Входящий ext-https 443 TCP CIDR 0.0.0.0/0
      1. Выберите вкладку Исходящий трафик или Входящий трафик.

      2. Нажмите кнопку Добавить правило.

      3. В открывшемся окне в поле Диапазон портов укажите один порт или диапазон портов, куда или откуда будет поступать трафик.

      4. В поле Протокол укажите нужный протокол или оставьте Любой, чтобы разрешить передачу трафика по всем протоколам.

      5. В поле Назначение или Источник выберите назначение правила:

        • CIDR — правило будет применено к диапазону IP-адресов. В поле CIDR блоки укажите CIDR и маски подсетей, в которые или из которых будет поступать трафик. Чтобы добавить несколько CIDR, нажимайте кнопку Добавить CIDR.
        • Группа безопасности — правило будет применено к ВМ из текущей группы или из выбранной группы безопасности.
      6. Нажмите кнопку Сохранить. Таким образом создайте все правила из таблицы.

    5. Нажмите кнопку Сохранить.

См. раздел Как создать инфраструктуру с помощью Terraform.

Создайте виртуальную машину с предустановленным веб-сервером

Консоль управления
Terraform
  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите пункт Виртуальная машина.

  2. В поле Имя введите имя ВМ — lamp-vm или lemp-vm.

    • Длина — от 3 до 63 символов.
    • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
    • Первый символ — буква. Последний символ — не дефис.
  3. Выберите зону доступности, в которой будет создана ВМ. Если вы не знаете, какая зона доступности вам нужна, оставьте выбранную по умолчанию.

  4. В блоке Выбор образа/загрузочного диска перейдите на вкладку Cloud Marketplace и выберите образ ВМ с нужным набором компонентов:

    • LAMP для Linux, Apache, MySQL, PHP.

    • LEMP для Linux, Nginx, MySQL, PHP.

      LEMP рекомендуется использовать для статических сайтов.

  5. В блоке Вычислительные ресурсы:

    • Выберите платформу ВМ.
    • Укажите необходимое количество vCPU и объем RAM.

    Для функционального тестирования сайта хватит минимальной конфигурации:

    • Платформа — Intel Ice Lake.
    • Гарантированная доля vCPU — 20%.
    • vCPU — 2.
    • RAM — 1 ГБ.
  6. В блоке Сетевые настройки нужно выбрать сеть web-network и подсеть, к которым нужно подключить ВМ.

  7. В поле Публичный адрес оставьте значение Автоматически, чтобы назначить ВМ случайный внешний IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.

  8. Укажите данные для доступа на ВМ:

    • В поле Логин введите имя пользователя.

    • В поле SSH-ключ вставьте содержимое файла открытого ключа.

      Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел Подключиться к виртуальной машине Linux по SSH.

    Внимание

    IP-адрес и имя хоста (FQDN) для подключения к ВМ назначается ей при создании. Если вы выбрали вариант Без адреса в поле Публичный адрес, вы не сможете обращаться к ВМ из интернета.

  9. Нажмите кнопку Создать ВМ.

    Создание ВМ может занять несколько минут. Когда ВМ перейдет в статус RUNNING, вы можете загрузить на нее файлы веб-сайта.

См. раздел Как создать инфраструктуру с помощью Terraform.

Загрузите файлы веб-сайта

Чтобы проверить работу веб-сервера, загрузите на ВМ файл index.html. Можно использовать тестовый файл, скачайте и распакуйте архив.

  1. В блоке Сеть на странице ВМ в консоли управления найдите публичный IP-адрес ВМ.

  2. Подключитесь к ВМ по протоколу SSH.

  3. Выдайте права на запись для вашего пользователя на директорию /var/www/html:

    sudo chown -R "$USER":www-data /var/www/html
    
  4. Загрузите на ВМ файлы веб-сайта с помощью протокола SCP.

    Linux/macOS
    Windows

    Используйте утилиту командной строки scp:

    scp -r <путь до директории с файлами> <имя пользователя ВМ>@<IP-адрес виртуальной машины>:/var/www/html
    

    С помощью программы WinSCP скопируйте локальную директорию с файлами в директорию /var/www/html на ВМ.

Настройте DNS (если есть доменное имя)

Если у вас есть зарегистрированное доменное имя, воспользуйтесь сервисом Cloud DNS для управления доменом.

Также настроить DNS можно с помощью Terraform, подробнее см. в разделе Как создать инфраструктуру с помощью Terraform.

В инструкции ниже описана настройка DNS для доменного имени example.com.

Добавьте зону

Чтобы добавить публичную зону:

  1. Откройте раздел Cloud DNS в каталоге, где требуется создать зону DNS.
  2. Нажмите кнопку Создать зону.
  3. Задайте настройки зоны:
    • Имя зоны: example-zone-1.
    • Зона: example.com.. Укажите ваш зарегистрированный домен.
    • Тип — Публичная.
  4. Нажмите кнопку Создать.

Добавьте ресурсные записи

Создайте в публичной зоне записи DNS:

  1. В блоке Сеть на странице ВМ в консоли управления найдите публичный IP-адрес ВМ.
  2. Создайте запись типа А:
    • Откройте раздел Cloud DNS в каталоге, где находится зона example.com.
    • Выберите зону example.com из списка.
    • Нажмите кнопку Создать запись.
    • Задайте параметры записи:
      • Имя: оставьте пустым.
      • Тип записи: оставьте значение А.
      • TTL (время кэширования записи): оставьте значение по умолчанию.
      • Значение: введите публичный адрес вашей ВМ.
    • Нажмите кнопку Создать.
  3. Создайте запись типа CNAME:
    • Выберите зону example.com из списка.
    • Нажмите кнопку Создать запись.
    • Задайте параметры записи:
      • Имя: www.
      • Тип записи: выберите значение CNAME.
      • TTL (время кэширования записи): оставьте значение по умолчанию.
      • Значение: введите example.com.
    • Нажмите кнопку Создать.

Делегируйте доменное имя

Делегирование — это перенос ответственности с серверов регистратора на ваши серверы. Для домена создаются ресурсные записи типа NS (ns1.yandexcloud.net и ns2.yandexcloud.net).

Чтобы делегировать домен, укажите для него DNS-серверы в личном кабинете регистратора.

Делегирование происходит не сразу. Серверы интернет-провайдеров обычно обновляют записи до 24 часов (86400 секунд). Это обусловлено значением TTL, в течение которого кэшируются записи для доменов.

Проверить делегирование домена можно с помощью сервиса Whois или утилиты dig:

dig +short NS example.com

Результат:

ns2.yandexcloud.net.
ns1.yandexcloud.net.

Проверьте работу сайта

Чтобы проверить работу сайта, введите в браузере его IP-адрес или доменное имя:

  • http://<публичный_IP-адрес_виртуальной_машины>.
  • http://www.example.com.

Как удалить созданные ресурсы

Чтобы перестать платить за развернутый сервер, достаточно удалить ВМ.

Если вы зарезервировали статический публичный IP-адрес специально для этой ВМ:

  1. Выберите сервис Virtual Private Cloud в вашем каталоге.
  2. Перейдите на вкладку IP-адреса.
  3. Найдите нужный адрес, нажмите значок и выберите пункт Удалить.

Как создать инфраструктуру с помощью Terraform

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). Terraform и его провайдеры распространяются под лицензией Mozilla Public License.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Чтобы разместить веб-сервер LAMP- или LEMP-сайта на виртуальной машине с помощью Terraform:

  1. Установите Terraform и получите данные для аутентификации.

  2. Укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).

  3. Подготовьте файлы с описанием инфраструктуры:

    Готовый архив
    Создание вручную
    1. Создайте папку для файлов.
    2. Скачайте архив (1 КБ).
    3. Разархивируйте архив в папку. В результате в ней должен появиться конфигурационный файл lamp-lemp.tf.
    1. Создайте папку для файлов.

    2. Создайте в папке конфигурационный файл lamp-lemp.tf:

      lamp-lemp.tf
      terraform {
        required_providers {
          yandex = {
            source  = "yandex-cloud/yandex"
            version = ">= 0.47.0"
          }
        }
      }
      
      provider "yandex" {
        zone = "ru-central1-a"
      }
      
      resource "yandex_compute_instance" "vm-lamp" {
        name        = "lamp-vm"
        platform_id = "standard-v3"
        zone        = "ru-central1-a"
      
        resources {
          core_fraction = 20
          cores         = 2
          memory        = 1
        }
      
        boot_disk {
          initialize_params {
            image_id = "<идентификатор_образа_ВМ>"
          }
        }
      
        network_interface {
          subnet_id          = "${yandex_vpc_subnet.subnet-1.id}"
          nat                = true
          security_group_ids = ["${yandex_vpc_security_group.sg-1.id}"]
      
        }
      
        metadata = {
          user-data = "#cloud-config\nusers:\n  - name: <имя_пользователя>\n    groups: sudo\n    shell: /bin/bash\n    sudo: ['ALL=(ALL) NOPASSWD:ALL']\n    ssh-authorized-keys:\n      - ${file("<путь_к_открытому_SSH-ключу>")}"
        }
      }
      
      resource "yandex_vpc_network" "network-1" {
        name = "web-network"
      }
      
      resource "yandex_vpc_subnet" "subnet-1" {
        name           = "subnet1"
        v4_cidr_blocks = ["10.2.0.0/16"]
        zone           = "ru-central1-a"
        network_id     = "${yandex_vpc_network.network-1.id}"
      }
      
      resource "yandex_vpc_security_group" "sg-1" {
        name        = "sg-web"
        description = "Description for security group"
        network_id  = "${yandex_vpc_network.network-1.id}"
      
        ingress {
          protocol       = "TCP"
          description    = "ext-http"
          v4_cidr_blocks = ["0.0.0.0/0"]
          port           = 80
        }
      
        ingress {
          protocol       = "TCP"
          description    = "ext-https"
          v4_cidr_blocks = ["0.0.0.0/0"]
          port           = 443
        }
      
        egress {
          protocol       = "ANY"
          description    = "any"
          v4_cidr_blocks = ["0.0.0.0/0"]
        }
      }
      
      resource "yandex_dns_zone" "zone1" {
        name        = "example-zone-1"
        description = "Public zone"
        zone        = "example.com."
        public      = true
      }
      
      resource "yandex_dns_recordset" "rs1" {
        zone_id = yandex_dns_zone.zone1.id
        name    = "www"
        type    = "CNAME"
        ttl     = 200
        data    = ["example.com"]
      }
      

    Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:

    • yandex_vpc_network
    • yandex_vpc_security_group
    • yandex_compute_instance
    • yandex_vpc_subnet
    • yandex_dns_zone
    • yandex_dns_recordset
  4. В блоке metadata укажите имя пользователя и путь к открытому SSH-ключу. Подробнее см. в разделе Метаданные виртуальной машины.

  5. В блоке boot_disk укажите идентификатор одного из образов ВМ с нужным набором компонентов:

    • LAMP (Linux, Apache, MySQL, PHP).
    • LEMP (Linux, Nginx, MySQL, PHP).
  6. Создайте ресурсы:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

  7. Проверьте работу сайта.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте облачную сеть
  • Создайте группы безопасности
  • Создайте виртуальную машину с предустановленным веб-сервером
  • Загрузите файлы веб-сайта
  • Настройте DNS (если есть доменное имя)
  • Добавьте зону
  • Добавьте ресурсные записи
  • Делегируйте доменное имя
  • Проверьте работу сайта
  • Как удалить созданные ресурсы
  • Как создать инфраструктуру с помощью Terraform