Перенос WordPress сайта с хостинга в Yandex Cloud
WordPress
С помощью WordPress вы можете создавать новостные сайты, личные или корпоративные блоги, сайты организаций, онлайн-магазины и другие сервисы.
Система позволяет с минимальными усилиями развернуть веб-сайт, используя один из множества шаблонов или собственный дизайн. Готовые плагины помогают легко добавить к созданному сервису новые блоки или функциональности.
В Yandex Cloud вы можете быстро создать сайт на WordPress или перенести с другого хостинга.
Для переноса сайта на CMS WordPress в Yandex Cloud:
- Сделайте бэкап сайта.
- Подготовьте облако к работе.
- Создайте виртуальную машину для WordPress.
- Подключитесь к ВМ.
- Установите и настройте дополнительные компоненты.
- Импортируйте базу данных.
- Перенесите файлы сайта.
- Настройте DNS.
- Создайте SSL-сертификат.
- Проверьте работу сайта.
Сделайте бэкап сайта
Сделайте бэкап файлов сайта и БД одним из способов:
-
С помощью различных плагинов для WordPress (например, BackWPup
или Updraft Plus ). -
С помощью встроенных средств в панели управления хостингом, на котором располагается ваш сайт.
-
Скопировать все файлы на свой жесткий диск через FTP-клиент, а БД экспортировать через панель phpMyAdmin
.Этот вариант дольше и займет от 5 до 20 минут — придется копировать много небольших файлов, из которых состоит сайт.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Убедитесь, что в выбранном каталоге есть облачная сеть с подсетью хотя бы в одной зоне доступности. Для этого на странице каталога выберите сервис Virtual Private Cloud. Если в списке есть сеть — нажмите на нее, чтобы увидеть список подсетей. Если нужных подсетей или сети нет, создайте их.
Необходимые платные ресурсы
В стоимость поддержки веб-сайта на WordPress входит:
- Плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud).
- Плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud).
- Плата за публичные DNS-запросы и зоны (см. тарифы Yandex Cloud DNS).
Создайте ВМ для WordPress
Чтобы создать ВМ:
-
Откройте страницу каталога в консоли управления
. -
В правом верхнем углу нажмите кнопку Создать ресурс и выберите Виртуальная машина.
-
В поле Имя введите имя ВМ
wordpress-vm
. Требования к имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
Выберите зону доступности, в которой должна находиться ВМ. Если вы не знаете, какая зона доступности вам нужна, оставьте выбранную по умолчанию.
-
В блоке Образ загрузочного диска перейдите на вкладку Marketplace и выберите LAMP — образ, который содержит необходимый набор компонентов: операционную систему семейства Linux, веб-сервер Apache, СУБД MySQL® и интерпретатор PHP.
-
В блоке Диски и файловые хранилища выберите тип диска и установите нужный размер.
-
В блоке Вычислительные ресурсы на вкладке Своя конфигурация:
- Выберите платформу ВМ.
- Укажите необходимое количество vCPU и объем RAM.
Для обычного WordPress сайта хватит минимальной конфигурации:
- Платформа —
Intel Ice Lake
. - vCPU —
2
. - Гарантированная доля vCPU —
20%
. - RAM —
1 ГБ
.
-
В блоке Сетевые настройки:
- Выберите сеть и подсеть, к которым нужно подключить ВМ. Если нужной сети или подсети еще нет, вы можете создать их на странице создания ВМ.
- В поле Публичный адрес оставьте значение
Автоматически
, чтобы назначить ВМ случайный публичный IP-адрес из пула Yandex Cloud, или выберите статический адрес из списка, если вы зарезервировали его заранее.
-
В блоке Доступ укажите данные для доступа на ВМ:
-
Выберите сервисный аккаунт или создайте новый.
-
В поле Логин введите имя пользователя.
-
В поле SSH-ключ вставьте содержимое файла открытого ключа.
Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел Подключиться к виртуальной машине Linux по SSH.
Внимание
IP-адрес и имя хоста (FQDN) для подключения к ВМ назначается ей при создании. Если вы выбрали вариант
Без адреса
в поле Публичный адрес, вы не сможете обращаться к ВМ из интернета. -
-
Нажмите кнопку Создать ВМ.
Создание ВМ может занять несколько минут. Когда ВМ перейдет в статус
RUNNING
, вы можете загрузить на нее файлы веб-сайта.
Подключитесь к ВМ
Вы можете подключиться к ВМ по протоколу SSH, когда она будет запущена (в статусе RUNNING
). Для этого можно использовать утилиту ssh
в Linux/macOS/Windows 10 и программу PuTTY
Для подключения к ВМ необходимо указать ее публичный IP-адрес.
Чтобы скопировать публичный IP-адрес ВМ:
- Откройте страницу каталога в консоли управления
. - Выберите сервис Compute Cloud.
- На панели слева выберите
Виртуальные машины. - Найдите созданную ВМ и нажмите на ее имя.
- В разделе Сеть скопируйте IP-адрес из поля Публичный IPv4-адрес.
Выполните подключение к ВМ.
Установите и настройте дополнительные компоненты
Перед тем, как перейти к переносу файлов, необходимо:
- Установить текстовый редактор
nano
— он потребуется нам для внесения правок в некоторые файлы конфигурации. - Установить и настроить
phpMyAdmin
для работы с БД сайта.
Установите редактор nano
Выполните команду:
sudo apt install nano
Дождитесь установки редактора.
Установите phpMyAdmin
-
Выполните команды:
sudo apt-get update sudo apt-get install phpmyadmin php-mbstring php-gettext
-
В процессе установки выберите сервер, на который будет установлен
phpMyAdmin
. ВыберитеApache2
и нажмите пробел на клавиатуре — напротивApache2
появится значок*
. Нажмите Enter. -
Настройте доступ
phpMyAdmin
к БД. Для этого на вопросConfigure database for phpmyadmin with dbconfig-common?
выберите<yes>
. Ввод пароля можно пропустить, система автоматически сгенерирует его. Чтобы скопировать сгенерированный пароль, выполните команду:sudo cat /root/default_passwords.txt
Текст файла должен содержать данные:
MYSQL_PASS=DOEC21WECnhF1 MYSQL_ROOT_PASS=KjZKrQV7efFGk MYSQL_USER=wordpress MYSQL_DB=wordpress Apache Web Auth: login: admin password: ***************
Скопируйте и сохраните содержимое файла
default_passwords.txt
себе на компьютер. -
Включите расширение
mbstring
для PHP:sudo phpenmod mbstring
-
Чтобы принять все изменения, перезапустите Apache:
sudo systemctl restart apache2
-
Откройте
phpMyAdmin
через браузер. В адресной строке введитеhttp://<публичный_IP-адрес_ВМ>/phpmyadmin
.Для входа в
phpMyAdmin
используйте следующие данные:Пользователь: root Пароль: сгенерированный системой (из файла default_passwords.txt)
Настройте phpMyAdmin
Настройте дополнительный пароль для входа в панель phpMyAdmin
. Чтобы включить возможность использования настроек доступа в .htaccess
, отредактируйте файл phpmyadmin.conf
.
-
Выполните команду:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
-
Добавьте в файл
phpmyadmin.conf
строкуAllowOverride All
:<Directory /usr/share/phpmyadmin> Options SymLinksIfOwnerMatch DirectoryIndex index.php AllowOverride All
-
Сохраните изменения в файле
phpmyadmin.conf
. Для этого нажмите Ctrl + O и Enter. Для выхода из файла нажмите Ctrl + X. -
Перезапустите Apache:
sudo systemctl restart apache2
-
Создайте
.htaccess
:sudo nano /usr/share/phpmyadmin/.htaccess
-
Скопируйте строки в
.htaccess
:AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
-
Сохраните изменения в файле.
-
Создайте
.htpasswd
:sudo htpasswd -c /etc/phpmyadmin/.htpasswd <имя_пользователя>
Введите желаемый пароль и повторите его.
-
Перезапустите Apache:
sudo systemctl restart apache2
Теперь при входе в phpMyAdmin нужно будет ввести дополнительный логин и пароль, указанный в файле .htpasswd
.
Импортируйте БД
-
Откройте файл конфигурации WordPress вашего веб-сайта. Для этого распакуйте архив и в корневой папке откройте файл
wp-config.php
. Найдите значения параметровDB_USER
,DB_NAME
,DB_PASSWORD
:define('DB_USER', 'UsernameTEST'); define('DB_NAME', 'database_wordpress'); define('DB_PASSWORD', 'MySecretPassword');
-
Зайдите в phpMyAdmin — введите в адресной строке браузера:
http://<публичный_IP-адрес_ВМ>/phpmyadmin`
-
Перейдите в раздел Учетные записи пользователей и добавьте учетную запись пользователя с параметрами:
- Имя пользователя — вставьте значение для
DB_USER
изwp-config.php
. - Имя хоста — оставьте по умолчанию
%
. - Пароль — вставьте значение для
DB_PASSWORD
изwp-config.php
. - Глобальные привилегии — включите опцию Отметить все.
Все остальные параметры при создании пользователя оставьте по умолчанию. Внизу экрана нажмите Вперед.
- Имя пользователя — вставьте значение для
-
Перейдите в раздел Базы данных. Заполните поле Имя базы данных — вставьте значение для
DB_NAME
изwp-config.php
. Выберите кодировкуutf8_general_ci
. Нажмите Создать. -
Импортируйте БД из бэкапа:
- В левой колонке выберите созданную БД.
- Нажмите Импорт и выберите сохраненный бэкап БД. Если бэкап БД превышает установленный по умолчанию лимит 2 МБ, отредактируйте файл конфигурации
php.ini
, где задано данное ограничение.
-
Выполните команду:
sudo nano /etc/php/X.X/apache2/php.ini
X.X
— версия PHP. Возможные значения5.6
,7.0
,7.1
,7.2
,7.3
,7.4
,8.0
,8.1
. -
Отредактируйте параметры:
upload_max_filesize
— максимальный размер загружаемого файла.post_max_size
— максимальный размер сообщения методомPOST
.
upload_max_filesize = 80M post_max_size = 80M
-
Сохраните изменения — нажмите Ctrl + O и Enter. Для выхода из файла нажмите Ctrl + X.
-
Перезапустите Apache:
sudo systemctl restart apache2
-
Повторите операцию импорта БД.
Отключите phpMyAdmin
Все основные действия по переносу БД выполнены. Чтобы не подвергать phpMyAdmin
атакам извне, отключите утилиту:
sudo a2disconf phpmyadmin.conf && sudo /etc/init.d/apache2 restart
Для работы с БД вы можете использовать терминал.
Перенесите файлы сайта
Чтобы перенести файлы бэкапа на ВМ, воспользуйтесь FTP-клиентом FileZilla
-
Откройте FileZilla.
-
Перейдите в раздел Файл → Менеджер сайтов и добавьте новый сайт.
-
Выберите протокол SFTP, введите публичный IP-адрес ВМ. В разделе Тип входа выберите Файл с ключом.
-
Укажите пользователя, созданного при настройке ВМ, и выберите файл ключа — ключ находится в папке
/Users/<имя_пользователя>/.ssh/
.FTP-клиент не видит скрытую папку по умолчанию. Нажмите сочетание клавиш Cmd + Shift + G и выберите файл
id_ed25519
без расширенияpub
. Будет выведено сообщение, что файл не поддерживается. FTP-клиент предложит переконвертировать его в нужный формат. Нажмите Да. Сохраните переконвертированный файл в удобном вам месте. -
Нажмите Подключиться и введите кодовую фразу, которую сформировали в начале работы. Вы подключитесь к ВМ.
-
Найдите папку
/var/www/html
на ВМ и скопируйте в нее файл бэкапа. Файл index.html копировать не нужно.UbuntuПо умолчанию для этой папки заданы права 755. Чтобы скопировать файл архива сайта с жесткого диска в папку
html
, измените права на папку:sudo chmod 777 /var/www/html
Распакуйте бэкап:
cd /var/www/html tar -xvf FILENAME.tar.gz
Вместо
FILENAME
укажите название файла с архивом сайта.Внимание
Все файлы должны распаковываться в корневую директорию
html
, а не в поддиректорию/var/www/html/wordpress
.Удалите файл бэкапа, чтобы он не занимал места:
rm FILENAME.tar.gz
Верните права на папки:
html
и вложенных папок —755
.- Для всех файлов внутри
html
—644
. - Для
wp-config.php
отдельно уровень доступа —600
.
cd var/www/ sudo find ./ -type d -exec chmod 0755 {} \; sudo find ./ -type f -exec chmod 0644 {} \; sudo chmod 600 wp-config.php
Параметр
f
— ищет все файлы внутри директорий. Параметрd
— ищет все директории внутриhtml
.
Настройте 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
.
Установите SSL-сертификат c помощью Let’s Encrypt®
Для установки сертификата используйте Let’s Encrypt
Установите клиент Let’s Encrypt
-
Введите в терминал команду:
sudo apt-get update && sudo apt-get install software-properties-common
-
Добавьте репозитории
universe
andcertbot
:sudo add-apt-repository universe && sudo add-apt-repository ppa:certbot/certbot
Нажмите Enter.
-
Установите клиент Let’s Encrypt:
sudo apt-get update && sudo apt-get install certbot python-certbot-apache
-
Нажмите Y и Enter.
Получите SSL-сертификат
-
Введите команду:
sudo certbot --apache
-
В интерфейсе введите название вашего домена
example.com
илиwww.example.com
. -
Определите, нужно ли перенаправлять все страницы с
http
наhttps
при открытии веб-сайта. Выберите2
— перенаправить на https. -
Протестируйте ваш сайт — введите в адресную строку браузера
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
.
Выполните автообновление
Сертификат выдается на 90 дней. Необходимо регулярно обновлять его. Настройте расписание обновления с помощью cron
:
-
Введите в терминале команду:
sudo crontab -e
-
В диалоге выберите первый пункт из списка.
-
Добавьте в самый конец файла строчку кода:
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
В итоге будет запланировано обновление SSL-сертификата с выполнением каждый понедельник в 2:30 ночи. Результат выполнения будет записан в лог-файл.
Проверьте работу сайта
У сайтов на WordPress иногда возникает проблема открытия внутренних ссылок при переходе от одного хостинга к другому. Проверьте, существует ли файл .htaccess
в корневой папке вашего сайта — var/www/html/.htaccess
.
Если файла нет, создайте его.
-
Введите в терминале команду:
sudo nano /var/www/html/.htaccess
-
Добавьте код:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
-
Сохраните изменения — Ctrl + O и Enter. Для выхода нажмите Ctrl + X.
Проверьте сайт. Если ссылки не открываются, значит в Apache
отключена поддержка .htaccess
файла.
Чтобы включить поддержку .htaccess
:
-
Введите команду:
sudo nano /etc/apache2/sites-available/000-default.conf
-
Добавьте код:
<Directory /var/www/html> AllowOverride All Order allow,deny allow from all </Directory>
-
В результате:
<VirtualHost *:80 [::]:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html <Directory /var/www/html> AllowOverride All Order allow,deny allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
-
Перезапустите Apache:
sudo systemctl restart apache2