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. Сайт на WordPress с БД MySQL

Сайт на WordPress с кластером БД MySQL

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте виртуальную машину для WordPress
  • Создайте кластер БД MySQL
  • Настройте веб-сервер Nginx
  • Установите WordPress и дополнительные компоненты
  • Завершите настройку WordPress
  • Настройте DNS
    • Добавьте зону
    • Добавьте ресурсные записи
    • Делегируйте доменное имя
  • Проверьте работу сайта
  • Как удалить созданные ресурсы
  • Как создать инфраструктуру с помощью Terraform

С помощью этой инструкции вы научитесь разворачивать сайт на базе CMS WordPress с кластером баз данных под управлением СУБД MySQL в инфраструктуре Yandex Cloud.

Чтобы настроить веб-сайт на WordPress с MySQL-кластером:

  1. Подготовьте облако к работе.
  2. Создайте виртуальную машину для WordPress.
  3. Создайте кластер БД MySQL.
  4. Настройте веб-сервер Nginx.
  5. Установите WordPress и дополнительные компоненты.
  6. Завершите настройку WordPress.
  7. Настройте DNS.
  8. Проверьте работу веб-сайта.

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

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

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

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

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

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

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

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

В стоимость поддержки веб-сайта на WordPress с MySQL-кластером входит:

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

Создайте виртуальную машину для WordPress

Чтобы создать виртуальную машину:

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

  2. В поле Имя введите имя виртуальной машины: wp-mysql-tutorial-web.

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

  4. В блоке Выбор образа/загрузочного диска перейдите на вкладку Cloud Marketplace и выберите публичный образ Debian 11, Ubuntu 20.04 LTS или CentOS 7.

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

    • Выберите платформу.
    • Укажите необходимое количество vCPU и объем RAM:
      • vCPU — 2.
      • Гарантированная доля vCPU — 20%.
      • RAM — 2 ГБ.
  6. В блоке Сетевые настройки выберите сеть и подсеть, к которым нужно подключить виртуальную машину. Если нужной сети или подсети еще нет, вы можете создать их прямо на странице создания ВМ.

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

  8. Укажите данные для доступа на виртуальную машину:

    • В поле Логин введите имя пользователя, например, yc-user.

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

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

    Внимание

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

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

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

Создание виртуальной машины может занять несколько минут. Когда виртуальная машина перейдет в статус RUNNING, вы можете переходить к следующему шагу.

При создании виртуальной машине назначается публичный IP-адрес и имя хоста (FQDN). Эти данные можно использовать для доступа по SSH.

Создайте кластер БД MySQL

Чтобы создать кластер БД MySQL:

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

  2. В поле Имя введите имя кластера: wp-mysql-tutorial-db-cluster.

  3. В блоке Класс хоста выберите s2.small.

  4. В блоке Размер хранилища укажите 10 ГБ.

  5. В блоке База данных:

    • В поле Имя БД введите wp-mysql-tutorial-db.
    • В поле Имя пользователя введите wordpress.
    • В поле Пароль введите пароль, который вы будете использовать для доступа к базе.
  6. В блоке Сетевые настройки:

    • В списке Сеть выберите сеть, к которой будет подключен кластер.
  7. В блоке Хосты добавьте еще два хоста в других зонах доступности. При создании хостов не включайте для них Публичный доступ.

  8. В блоке Настройки СУБД нажмите кнопку Настроить.

    В поле Default authentication plugin выберите пункт mysql_native_password и нажмите кнопку Сохранить.

  9. Нажмите кнопку Создать кластер.

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

Создание кластера БД может занять несколько минут.

Настройте веб-сервер Nginx

После того как виртуальная машина wp-mysql-tutorial-web перейдет в статус RUNNING:

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

  2. Подключитесь к виртуальной машине по протоколу SSH. Для этого можно использовать утилиту ssh в Linux и macOS и программу PuTTY для Windows.

    Рекомендуемый способ аутентификации при подключении по SSH — с помощью пары ключей. Не забудьте настроить использование созданной пары ключей: закрытый ключ должен соответствовать открытому ключу, переданному на виртуальную машину.

  3. Установите Nginx, менеджер процессов PHP-FPM и дополнительные пакеты:

    Debian/Ubuntu
    CentOS
    sudo apt-get update
    sudo apt-get install -y nginx-full php-fpm php-mysql
    sudo systemctl enable nginx
    
    sudo yum -y install epel-release
    sudo yum -y install nginx
    sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
    sudo yum -y --enablerepo=remi-php74 install php php-mysql php-xml php-soap php-xmlrpc php-mbstring php-json php-gd php-mcrypt
    sudo yum -y --enablerepo=remi-php74 install php-fpm
    sudo systemctl enable nginx
    sudo systemctl enable php-fpm
    
  4. Задайте настройки веб-сервера в конфигурационных файлах Nginx:

    Debian/Ubuntu
    CentOS
    1. Вы можете отредактировать файл с помощью редактора nano:

      sudo nano /etc/nginx/sites-available/wordpress
      
    2. Приведите файл к виду:

      server {
          listen 80 default_server;
      
          root /var/www/wordpress;
          index index.php;
      
          server_name <DNS-имя сервера>;
      
          location / {
              try_files $uri $uri/ =404;
          }
      
          error_page 404 /404.html;
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
              root /usr/share/nginx/html;
          }
      
          location ~ \.php$ {
              try_files $uri =404;
              fastcgi_split_path_info ^(.+\.php)(/.+)$;
              fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
              fastcgi_index index.php;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;
          }
      }
      
    3. Разрешите запуск вашего сайта:

      sudo rm /etc/nginx/sites-enabled/default
      sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
      

    Вы можете отредактировать файлы nginx.conf и wordpress.conf с помощью редактора nano:

    1. Откройте файл nginx.conf:

      sudo nano /etc/nginx/nginx.conf
      
    2. Приведите файл к виду:

      user nginx;
      worker_processes auto;
      error_log /var/log/nginx/error.log;
      pid /run/nginx.pid;
      include /usr/share/nginx/modules/*.conf;
      
      events {
          worker_connections 1024;
      }
      
      http {
          log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                            '$status $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for"';
      
          access_log  /var/log/nginx/access.log  main;
      
          sendfile            on;
          tcp_nopush          on;
          tcp_nodelay         on;
          keepalive_timeout   65;
          types_hash_max_size 2048;
      
          include             /etc/nginx/mime.types;
          default_type        application/octet-stream;
      
          include /etc/nginx/conf.d/*.conf;
      }
      
    3. Откройте файл wordpress.conf:

      sudo nano /etc/nginx/conf.d/wordpress.conf
      
    4. Приведите файл к виду:

      server {
          listen 80 default_server;
      
          root /usr/share/nginx/wordpress/;
          index index.php;
      
          server_name <DNS-имя сервера>;
      
          location / {
              try_files $uri $uri/ =404;
          }
      
          error_page 404 /404.html;
          error_page 500 502 503 504 /50x.html;
          location = /50x.html {
              root /usr/share/nginx/html;
          }
      
          location ~ \.php$ {
              try_files $uri =404;
              fastcgi_split_path_info ^(.+\.php)(/.+)$;
              fastcgi_pass 127.0.0.1:9000;
              fastcgi_index index.php;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;
          }
      }
      

Установите WordPress и дополнительные компоненты

  1. Загрузите и распакуйте последнюю версию WordPress:

    Debian/Ubuntu
    CentOS
    wget https://wordpress.org/latest.tar.gz
    tar -xzf latest.tar.gz
    mv wordpress/wp-config-sample.php wordpress/wp-config.php
    sudo mv wordpress /var/www/wordpress
    sudo chown -R www-data:www-data /var/www/wordpress
    
    curl https://wordpress.org/latest.tar.gz --output latest.tar.gz
    tar -xzf latest.tar.gz
    mv wordpress/wp-config-sample.php wordpress/wp-config.php
    sudo mv wordpress /usr/share/nginx/wordpress
    sudo chown -R nginx:nginx /usr/share/nginx/wordpress/
    

    Измените настройки SELinux:

    sudo semanage fcontext -a -t httpd_sys_content_t "/usr/share/nginx/wordpress(/.*)?"
    sudo semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/nginx/wordpress(/.*)?"
    sudo restorecon -R /usr/share/nginx/wordpress
    sudo setsebool -P httpd_can_network_connect 1
    
  2. Получите ключи безопасности WordPress:

    curl -s https://api.wordpress.org/secret-key/1.1/salt/
    

    Сохраните вывод команды — полученные ключи будут нужны на следующем шаге.

  3. Добавьте ключи безопасности в конфигурационный файл WordPress wp-config.php. Вы можете отредактировать файл с помощью редактора nano:

    Debian/Ubuntu
    CentOS
    sudo nano /var/www/wordpress/wp-config.php
    
    sudo nano /usr/share/nginx/wordpress/wp-config.php
    

    Замените блок конфигурации на значения, полученные на предыдущем шаге:

    define('AUTH_KEY',         't vz,|............R lZ5]');
    define('SECURE_AUTH_KEY',  '@r&pPD............dK-A%=');
    define('LOGGED_IN_KEY',    '%6TuLl............9>/dNE');
    define('NONCE_KEY',        'DO(u.H............$?ja-e');
    define('AUTH_SALT',        '|G Vo<............Xeb.~y');
    define('SECURE_AUTH_SALT', 'Y5tIYA............7Lxf8J');
    define('LOGGED_IN_SALT',   'gR]>WZ............<>|;YY');
    define('NONCE_SALT',       '=]nQIb............HLT2:9');
    
  4. Перейдите к блоку конфигурации подключения к кластеру wp-mysql-tutorial-db-cluster:

    // ** MySQL settings - You can get this info from your web host ** //
    /** The name of the database for WordPress */
        
    define( 'DB_NAME', '<DB_NAME>' );
    /** MySQL database username */
    define( 'DB_USER', '<DB_USER>' );
    
    /** MySQL database password */
    define( 'DB_PASSWORD', '<DB_PASSWORD>' );
    
    /** MySQL hostname */
    define( 'DB_HOST', '<DB_HOST>' );
    

    Укажите в файле вместо:

    • <DB_NAME> — имя БД wp-mysql-tutorial-db.

    • <DB_USER> — имя пользователя wordpress.

    • <DB_PASSWORD> — пароль, заданный при создании кластера БД.

    • <DB_HOST> — имя хоста MySQL вида XXXX-XXXXXXXXXX.mdb.yandexcloud.net.

      Чтобы узнать FQDN хоста MySQL:

      Консоль управления
      CLI
      1. Перейдите на страницу кластера MySQL.
      2. На вкладке Базы данных нажмите значок .
      3. Выберите Подключиться.
      4. Найдите строчку mysql --host=ХХХХ-ХХХХХХХХХХ.mdb.yandexcloud.net, где ХХХХ-ХХХХХХХХХХ.mdb.yandexcloud.net — это FQDN хоста с ролью MASTER.

      Получите список хостов и скопируйте NAME хоста с ролью MASTER:

      yc managed-mysql host list --cluster-name <имя кластера MySQL>
      
      +-----------------------------+----------------------+---------+--------+---------------+-----------+ 
      |             NAME            |      CLUSTER ID      |  ROLE   | HEALTH |    ZONE ID    | PUBLIC IP | 
      +-----------------------------+----------------------+---------+--------+---------------+-----------+ 
      | rc1a-...mdb.yandexcloud.net | c9quhb1l32unm1sdn0in | MASTER  | ALIVE  | ru-central1-a | false     | 
      | rc1b-...mdb.yandexcloud.net | c9quhb1l32unm1sdn0in | REPLICA | ALIVE  | ru-central1-b | false     | 
      +-----------------------------+----------------------+---------+--------+---------------+-----------+ 
      
  5. Перезапустите Nginx и PHP-FPM:

    Debian/Ubuntu
    CentOS
    sudo systemctl restart nginx.service 
    sudo systemctl restart php7.4-fpm.service
    
    sudo systemctl restart nginx.service 
    sudo systemctl restart php-fpm.service
    

Завершите настройку WordPress

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

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

  3. Выберите язык и нажмите кнопку Продолжить.

  4. Заполните информацию для доступа к сайту:

    • Укажите любое название сайта, например, wp-your-project.
    • Укажите имя пользователя, которое будет использоваться для входа в административную панель, например, admin.
    • Укажите пароль, который будет использоваться для входа в административную панель.
    • Укажите вашу электронную почту.
  5. Нажмите кнопку Установить WordPress.

  6. Если установка прошла успешно, нажмите кнопку Войти.

  7. Войдите на сайт, используя указанные на прошлых шагах имя пользователя и пароль. После этого откроется административная панель, в которой можно приступать к работе с вашим сайтом.

Настройте 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.

Для входа в панель управления WordPress используйте адрес http://www.example.com/wp-admin/.

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

Чтобы перестать платить за развернутый сайт:

  1. Удалите зону DNS.
  2. Удалите кластер MySQL.
  3. Удалите виртуальную машину.

Если вы зарезервировали для ВМ статический публичный IP-адрес, удалите его.

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

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

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

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

Чтобы разместить веб-сайт на WordPress с MySQL-кластером с помощью Terraform:

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

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

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

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

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

      wordpress-mysql.tf
      terraform {
        required_providers {
          yandex = {
            source  = "yandex-cloud/yandex"
            version = ">= 0.47.0"
          }
        }
      }
      
      provider "yandex" {
        zone = "ru-central1-a"
      }
      
      resource "yandex_compute_instance" "vm-wordpress-mysql" {
        name        = "wp-mysql-tutorial-web"
        platform_id = "standard-v3"
        zone        = "ru-central1-a"
      
        resources {
          core_fraction = 20
          cores         = 2
          memory        = 2
        }
      
        boot_disk {
          initialize_params {
            image_id = "<идентификатор_образа>"
          }
        }
      
        network_interface {
          subnet_id          = yandex_vpc_subnet.subnet-1.id
          security_group_ids = ["${yandex_vpc_security_group.sg-1.id}"]
          nat                = true
        }
      
        metadata = {
          ssh-keys = "<имя_пользователя>:<содержимое_SSH-ключа>"
        }
      }
      
      resource "yandex_mdb_mysql_cluster" "wp-cluster" {
        name                = "wp-mysql-tutorial-db-cluster"
        environment         = "PRESTABLE"
        network_id          = yandex_vpc_network.network-1.id
        version             = "8.0"
        security_group_ids  = ["${yandex_vpc_security_group.sg-1.id}"]
      
        resources {
          resource_preset_id = "s2.small"
          disk_type_id       = "network-ssd"
          disk_size          = "10"
        }
      
        host {
          zone             = "ru-central1-a"
          subnet_id        = yandex_vpc_subnet.subnet-1.id
          assign_public_ip = false
        }
      
        host {
          zone             = "ru-central1-b"
          subnet_id        = yandex_vpc_subnet.subnet-2.id
          assign_public_ip = false
        }
      
        host {
          zone             = "ru-central1-c"
          subnet_id        = yandex_vpc_subnet.subnet-3.id
          assign_public_ip = false
        }
      }
      
      resource "yandex_mdb_mysql_database" "wp-db" {
        cluster_id = yandex_mdb_mysql_cluster.wp-cluster.id
        name       = "wp-mysql-tutorial-db"
      }
      
      resource "yandex_mdb_mysql_user" "wp-user" {
        cluster_id            = yandex_mdb_mysql_cluster.wp-cluster.id
        name                  = "wordpress"
        password              = "password"
        authentication_plugin = "MYSQL_NATIVE_PASSWORD"
        permission {
          database_name = yandex_mdb_mysql_database.wp-db.name
          roles         = ["ALL"]
        }
      }
      
      resource "yandex_vpc_security_group" "sg-1" {
        name        = "wordpress"
        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-ssh"
          v4_cidr_blocks = ["0.0.0.0/0"]
          port           = 22
        }
      
        ingress {
          protocol       = "TCP"
          description    = "ext-msql"
          v4_cidr_blocks = ["0.0.0.0/0"]
          port           = 3306
        }
      
        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_vpc_network" "network-1" {
        name = "network1"
      }
      
      resource "yandex_vpc_subnet" "subnet-1" {
        name           = "subnet1"
        zone           = "ru-central1-a"
        network_id     = yandex_vpc_network.network-1.id
        v4_cidr_blocks = ["192.168.1.0/24"]
      }
      
      resource "yandex_vpc_subnet" "subnet-2" {
        name           = "subnet2"
        zone           = "ru-central1-b"
        network_id     = yandex_vpc_network.network-1.id
        v4_cidr_blocks = ["192.168.2.0/24"]
      }
      
      resource "yandex_vpc_subnet" "subnet-3" {
        name           = "subnet3"
        zone           = "ru-central1-c"
        network_id     = yandex_vpc_network.network-1.id
        v4_cidr_blocks = ["192.168.3.0/24"]
      }
      
      resource "yandex_dns_zone" "zone-1" {
        name        = "example-zone-1"
        description = "Public zone"
        zone        = "example.com."
        public      = true
      }
      
      resource "yandex_dns_recordset" "rs-1" {
        zone_id = yandex_dns_zone.zone-1.id
        name    = "example.com."
        ttl     = 600
        type    = "A"
        data    = ["${yandex_compute_instance.vm-wordpress-mysql.network_interface.0.nat_ip_address}"]
      }
      
      resource "yandex_dns_recordset" "rs-2" {
        zone_id = yandex_dns_zone.zone-1.id
        name    = "www"
        ttl     = 600
        type    = "CNAME"
        data    = ["example.com"]
      }
      

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

    • yandex_compute_instance
    • yandex_mdb_mysql_cluster
    • yandex_mdb_mysql_database
    • yandex_mdb_mysql_user
    • yandex_vpc_security_group
    • yandex_vpc_network
    • yandex_vpc_subnet
    • yandex_dns_zone
    • yandex_dns_recordset
  3. В блоке metadata укажите метаданные для создания виртуальной машины <имя_пользователя>:<содержимое_SSH-ключа>. Указанное имя пользователя не играет роли, ключ будет присвоен пользователю, который задан в конфигурации образа. В разных образах это разные пользователи. Подробнее см. в разделе Ключи, обрабатываемые в публичных образах.

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

    • Debian 11.
    • Ubuntu 20.04 LTS.
    • CentOS 7.
  5. Создайте ресурсы:

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

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

      terraform validate
      

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

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

      terraform plan
      

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

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

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

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

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

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