Создание сайта на WordPress с кластером базы данных MySQL® с помощью консоли управления
Чтобы создать инфраструктуру для сайта на WordPress с кластером базы данных MySQL® c помощью консоли управления Yandex Cloud:
Чтобы настроить веб-сайт на WordPress с кластером MySQL®:
- Подготовьте облако к работе.
- Создайте ВМ для WordPress.
- Создайте кластер БД MySQL®.
- Настройте веб-сервер Nginx.
- Установите WordPress и дополнительные компоненты.
- Завершите настройку WordPress.
- Настройте DNS.
- Проверьте работу веб-сайта.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки веб-сайта на WordPress с кластером MySQL® входит:
- плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
- плата за кластер БД MySQL® (см. тарифы Yandex Managed Service for MySQL®);
- плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud);
- плата за публичные DNS-запросы и зоны DNS (см. тарифы Yandex Cloud DNS).
Создайте ВМ для WordPress
Чтобы создать виртуальную машину для WordPress:
-
На странице каталога в консоли управления
нажмите кнопку Создать ресурс и выберитеВиртуальная машина
. -
В блоке Образ загрузочного диска выберите один из публичных образов: Debian 11, Ubuntu 20.04 LTS или CentOS 7.
-
В блоке Расположение выберите зону доступности, в которой будет находиться ВМ. Если вы не знаете, какая зона доступности вам нужна, оставьте выбранную по умолчанию.
-
В блоке Вычислительные ресурсы перейдите на вкладку
Своя конфигурация
и укажите необходимую платформу, количество vCPU и объем RAM:- Платформа —
Intel Ice Lake
. - vCPU —
2
. - Гарантированная доля vCPU —
20%
. - RAM —
2 ГБ
.
- Платформа —
-
В блоке Сетевые настройки:
- В поле Подсеть выберите сеть и подсеть, к которым нужно подключить ВМ. Если нужной сети или подсети еще нет, создайте их.
- В поле Публичный адрес оставьте значение
Автоматически
, чтобы назначить ВМ случайный внешний IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
-
В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:
- В поле Логин введите имя пользователя, например:
yc-user
. Не используйте имяroot
или другие имена, зарезервированные ОС. Для выполнения операций, требующих прав суперпользователя, используйте командуsudo
. -
В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
- Нажмите кнопку Добавить ключ.
- Задайте имя SSH-ключа.
- Загрузите или вставьте содержимое открытого SSH-ключа. Пару SSH-ключей для подключения к ВМ по SSH необходимо создать самостоятельно.
- Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации.
Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя создаваемой виртуальной машины.
- В поле Логин введите имя пользователя, например:
-
В блоке Общая информация задайте имя ВМ:
wp-mysql-tutorial-web
.IP-адрес и имя хоста (FQDN) для подключения к ВМ назначается ей при создании. Если вы выбрали вариант
Без адреса
в поле Публичный адрес, вы не сможете обращаться к ВМ из интернета. -
Нажмите Создать ВМ.
Создание ВМ может занять несколько минут. Когда ВМ перейдет в статус RUNNING
, вы можете переходить к следующему шагу.
При создании ВМ назначается публичный IP-адрес и имя хоста (FQDN). Эти данные можно использовать для доступа по SSH.
Создайте кластер БД MySQL®
Чтобы создать кластер БД MySQL®:
-
На странице каталога в консоли управления
нажмите кнопку Создать ресурс и выберите Кластер MySQL. -
В поле Имя кластера введите имя:
wp-mysql-tutorial-db-cluster
. -
В блоке Класс хоста выберите
s3-c2-m8
. -
В блоке Размер хранилища укажите
10 ГБ
. -
В блоке База данных:
- В поле Имя БД введите
wp-mysql-tutorial-db
. - В поле Имя пользователя введите
wordpress
. - В поле Пароль введите пароль, который вы будете использовать для доступа к БД.
- В поле Имя БД введите
-
В блоке Сетевые настройки выберите сеть, к которой будет подключен кластер.
-
В блоке Хосты добавьте еще два хоста в других зонах доступности. При создании хостов не включайте для них Публичный доступ.
-
В блоке Настройки СУБД нажмите кнопку Настроить.
В поле default_authentication_plugin выберите пункт
mysql_native_password
и нажмите кнопку Сохранить. -
Нажмите кнопку Создать кластер.
Создание кластера БД может занять несколько минут.
Настройте веб-сервер Nginx
После того как ВМ wp-mysql-tutorial-web
перейдет в статус RUNNING
:
-
В блоке Сеть на странице ВМ в консоли управления
найдите публичный IP-адрес ВМ. -
Подключитесь к ВМ по протоколу SSH. Для этого можно использовать утилиту
ssh
в Linux и macOS и программу PuTTY для Windows.Рекомендуемый способ аутентификации при подключении по SSH — с помощью пары ключей. Не забудьте настроить использование созданной пары ключей: закрытый ключ должен соответствовать открытому ключу, переданному на ВМ.
-
Установите Nginx, менеджер процессов PHP-FPM и дополнительные пакеты:
Debian/UbuntuCentOSsudo 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
-
Задайте настройки веб-сервера в конфигурационных файлах Nginx:
Debian/UbuntuCentOS-
Вы можете отредактировать файл с помощью редактора
nano
:sudo nano /etc/nginx/sites-available/wordpress
-
Приведите файл к виду:
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; } }
-
Разрешите запуск вашего сайта:
sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
Вы можете отредактировать файлы
nginx.conf
иwordpress.conf
с помощью редактораnano
:-
Откройте файл
nginx.conf
:sudo nano /etc/nginx/nginx.conf
-
Приведите файл к виду:
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; }
-
Откройте файл
wordpress.conf
:sudo nano /etc/nginx/conf.d/wordpress.conf
-
Приведите файл к виду:
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 и дополнительные компоненты
-
Загрузите и распакуйте последнюю версию WordPress:
Debian/UbuntuCentOSwget 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
-
Получите ключи безопасности WordPress:
curl --silent https://api.wordpress.org/secret-key/1.1/salt/
Сохраните вывод команды — полученные ключи будут нужны на следующем шаге.
-
Добавьте ключи безопасности в конфигурационный файл WordPress
wp-config.php
. Вы можете отредактировать файл с помощью редактораnano
:Debian/UbuntuCentOSsudo 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');
-
Перейдите к блоку конфигурации подключения к кластеру
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- Перейдите на страницу кластера MySQL® в консоли управления
. - На вкладке Базы данных рядом с БД нажмите значок
→ Подключиться. - Найдите строчку
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 | +------------------------+----------------------+---------+--------+-------------------+-----------+
- Перейдите на страницу кластера MySQL® в консоли управления
-
-
Перезапустите Nginx и PHP-FPM:
Debian/UbuntuCentOSsudo systemctl restart nginx.service sudo systemctl restart php7.4-fpm.service
sudo systemctl restart nginx.service sudo systemctl restart php-fpm.service
Завершите настройку WordPress
- В блоке Сеть на странице ВМ в консоли управления
найдите публичный IP-адрес ВМ. - Перейдите по адресу ВМ в браузере.
- Выберите язык и нажмите кнопку Продолжить.
- Заполните информацию для доступа к сайту:
- Укажите любое название сайта, например,
wp-your-project
. - Укажите имя пользователя, которое будет использоваться для входа в административную панель, например,
admin
. - Укажите пароль, который будет использоваться для входа в административную панель.
- Укажите вашу электронную почту.
- Укажите любое название сайта, например,
- Нажмите кнопку Установить WordPress.
- Если установка прошла успешно, нажмите кнопку Войти.
- Войдите на сайт, используя указанные на прошлых шагах имя пользователя и пароль. После этого откроется административная панель, в которой можно приступать к работе с вашим сайтом.
Настройте DNS
Если у вас есть зарегистрированное доменное имя, воспользуйтесь сервисом Cloud DNS для управления доменом.
В инструкции ниже описана настройка DNS для доменного имени example.com
.
Добавьте зону DNS
Чтобы добавить публичную зону DNS:
Добавьте ресурсные записи
Создайте в публичной зоне записи DNS:
- В блоке Сеть на странице виртуальной машины в консоли управления
найдите публичный IP-адрес ВМ. - Создайте запись типа А:
- Откройте раздел Cloud DNS в каталоге, где находится зона DNS
example.com
. - Выберите зону DNS
example.com
из списка. - Нажмите кнопку Создать запись.
- Задайте параметры записи:
- Имя — оставьте пустым.
- Тип — оставьте значение
А
. - Значение — введите публичный адрес вашей ВМ.
- TTL (в секундах) (время кэширования записи) — оставьте значение по умолчанию.
- Нажмите кнопку Создать.
- Откройте раздел Cloud DNS в каталоге, где находится зона DNS
- Создайте запись типа CNAME:
- Выберите зону DNS
example.com
из списка. - Нажмите кнопку Создать запись.
- Задайте параметры записи:
- Имя —
www
. - Тип — выберите значение
CNAME
. - Значение — введите
example.com
. - TTL (в секундах) (время кэширования записи) — оставьте значение по умолчанию.
- Имя —
- Нажмите кнопку Создать.
- Выберите зону DNS
Делегируйте доменное имя
Делегирование — это перенос ответственности с серверов регистратора на ваши серверы. Для домена создаются ресурсные записи типа NS (ns1.yandexcloud.net
и ns2.yandexcloud.net
).
Чтобы делегировать домен, укажите для него DNS-серверы в личном кабинете регистратора.
Делегирование происходит не сразу. Серверы интернет-провайдеров обычно обновляют записи до 24 часов (86 400 секунд). Это обусловлено значением TTL, в течение которого кэшируются записи для доменов.
Проверить делегирование домена можно с помощью сервиса Whoisdig
:
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/
.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
Если вы зарезервировали для ВМ статический публичный IP-адрес, удалите его.