Сайт на WordPress в облаке от ЯндексPosted by On


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

Размещать технический блог на среднестатистическом шареде  — скучно, подведем к итогу все преимущества которые мы получим от облачной платформы:

  • Возможность использования Object Storage от Яндекса, которое позволяет хранить данные в огромных количествах.
  • Свежайшие сервера (на момент выхода статьи) и NVM-диски, сайт будет работать быстрее.
  • Отличная связность в интернете от Яндекса (Но не забывайте, трафик выше 10 гигабайт в сутки — оплачивается по тарифу)
  • Надежность, SLA, компенсации в случае простоя.
  • Гибкое конфигурирование.
  • Приятные цены (Если не считать трафик)

Из минусов данного решения — платный трафик, который действительно может ударить по карману при наличии интенсивного использования интернет-канала.

Перейдем к делу, или если быть точнее в консоль Яндекс.Облако.

Подбор тарифа

Определимся с целью, мы хотим размещать WordPress сайт — для этого нам отлично подойдет Compute Cloud (Аналог обычного виртуального сервера).

Так же специалисты платформы уже позаботились о таких клиентах как мы, для разворачивания WordPress доступен готовый шаблон, аналогично можно развернуть LAMP или LEMP.

Мы выбираем более сложный и интересный путь — чистая Centos 7 с последующей установкой всего софта и ручной настройкой сайта.

Облачный сервер в яндексе для wordpress

Сейчас данный блог не требователен к ресурсам, по этой причине я подбираю минимальные характеристики для экономии средств. В будущем объем оперативной памяти, диска, мощность и гарантию процессора можно поменять — увеличить.

Перейдем к выбору дисковых ресурсов, у нас есть несколько вариантов:

  1. Приобретаем NVMe диск для всей системы и сайта, 15 гигабайт — 111.66 рублей/месяц.
  2. Приобретаем NVMe диск 5 гигабайт для сайта, HDD диск на 10 гигабайт для размещения ОС — 20.85 рублей (HDD) + 37.22 рублей (SSD) = 58 рублей/месяц.
  3. Приобретаем NVMe диск 4 гигабайта для сайта, NVMe диск 1 гигабайт для базы данных, HDD диск на 10 гигабайт для размещения ОС = 58 рублей/месяц

Если позволяет бюджет — берите один NVMe на всю систему.

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

В своей конфигурации я оставил систему без SWAP раздела, вам все же рекомендую создать еще один раздел на NVMe для SWAP (например 1 гигабайт). В случае нехватки оперативной памяти, swap позволит не потерять данные после «жесткого» завершения MySQL например.

Переходим к вычислительным ресурсам. На выбор предоставляются платформы Intel Broadwell и Cascade Lake (Новее), в условиях виртуализации нет большой разницы между этими процессорами. При выборе поколения Cascade Lake стоимость получается меньше, чем с Broadwell. Хм, выбор очевиден.

Гарантию ресурсов процессора оставляем на отметке 5%, в случае если ресурсов будет мало — мы сможем увеличить данный параметр. Как правило, для блога важнее скорость оперативной памяти и задержки на жестком диске.

Количество оперативной памяти выбираем 1 гигабайт, для работы php-fpm, nginx, mysql для нужд блога на первое время будет вполне достаточно.

Следующим этапом является создание сети и подсети, для возможности выхода в интернет нашей виртуальной машины:

Автоматически выбираем IP-адрес, заполняем пользователя и добавляем публичный ключ. У облаков и крупных провайдеров не принято давать root доступ по паролю 🙂

На данном этапе сложилась следующая стоимость:

  • Intel Cascade Lake. 5% vCPU — 146.88 рублей/месяц
  • Intel Cascade Lake. RAM — 142.56 рублей/месяц
  • Быстрый диск (SSD) — 37.22 рублей/месяц
  • Публичный IP-адрес — 109.73 рублей/месяц
  • Стандартный диск (HDD) — 20.85 рублей/месяц

Итого в месяц за хостинг блога мы потратим 457.24 рубля в минимальной конфигурации. Это намного дороже чем шаред хостинг, но в сравнении с предложениями на VDS — стоимость конкурентноспособная. В рамках данной статьи (и возможно последующих) мы изучаем сервис от Яндекса, и пытаемся понять насколько это хуже/лучше других предложений на рынке хостинга.

Нажимаем кнопку «Создать ВМ». Виртуальный сервер появится в списке со статусом «Provisioning», операция создания может занять некоторое время, в этот момент резервируются ресурсы, и устанавливается шаблон операционной системы. Как только сервер перейдет в статус «Running» — означает что он готов к работе.

Настройка сервера

Подключаемся к виртуальной машине с помощью ssh и ранее указанного пользователя, переходим под пользователя root с помощью следующей команды:

sudo su

Обновляем систему:

yum update -y

Устанавливаем текстовый редактор nano (да простят меня истинные линуксоиды):

yum install nano -y

Отключаем selinux, для среднестатистического пользователя его настройка может вызывать трудности. Открываем файл /etc/selinux/config и устанавливаем SELINUX в disabled.

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Перезагружаем сервер командой reboot.

Ранее мы сконфигурировали дополнительные диски, сейчас они пустые и не смонтированы в системе. Давайте разметим пространство и добавим их в fstab. Не забываем опять перейти в root с помощью sudo su.

Смотрим какие диски доступны в системе:

fdisk -l
...
Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk label type: dos
Disk identifier: 0x00094fc6

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    20971486    10484719+  83  Linux

Disk /dev/vdb: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/vdc: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Видим два неразмеченных диска размером 4 гигабайта (для файлов сайта) и 1 гигабайт (для базы данных).
Создадим на них файловую систему xfs:

mkfs.xfs /dev/vdb -f
mkfs.xfs /dev/vdc -f

Стараемся не перепутать диски, в моем примере VDB — для файлов сайта, VDC — для базы данных.
Получим UUID (Уникальный идентификатор) для корректного монтирования дисков в fstab:

ls -l /dev/disk/by-uuid

Получаем:

lrwxrwxrwx 1 root root  9 Jun 10 12:08 9ba3d09a-c582-44d3-a93b-bc95b20c3cac -> ../../vdc (NVMe для базы данных)
lrwxrwxrwx 1 root root  9 Jun 10 12:08 aac919d8-b627-4828-b725-8c01e66bdf64 -> ../../vdb (NVMe для сайтов)
lrwxrwxrwx 1 root root 10 Jun 10 11:46 fee57442-5cc2-4108-bb34-ab47f21a61fc -> ../../vda1 (Медленный диск с системой)

Переходим к редактированию /etc/fstab, добавляем диски для монтирования при старте системы:

nano /etc/fstab

Перешли к редактированию файла, вы увидите примерно следующее:

#
# /etc/fstab
# Created by anaconda on Mon Mar  4 12:16:56 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=fee57442-5cc2-4108-bb34-ab47f21a61fc /                       xfs     defaults        0 0

Изменяем на требуемое:

#
# /etc/fstab
# Created by anaconda on Mon Mar  4 12:16:56 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=fee57442-5cc2-4108-bb34-ab47f21a61fc /                       xfs     defaults        0 0
UUID=aac919d8-b627-4828-b725-8c01e66bdf64 /var/www                xfs     defaults        0 0
UUID=9ba3d09a-c582-44d3-a93b-bc95b20c3cac /var/lib/mysql          xfs     defaults        0 0

Делаем перезагрузку для проверки. Входим в систему.
Проверим размеченные и примонтированные диски:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        10G  1.3G  8.8G  13% /
devtmpfs        473M     0  473M   0% /dev
tmpfs           496M     0  496M   0% /dev/shm
tmpfs           496M   13M  483M   3% /run
tmpfs           496M     0  496M   0% /sys/fs/cgroup
/dev/vdc       1014M   33M  982M   4% /var/lib/mysql
/dev/vdb        4.0G   33M  4.0G   1% /var/www
tmpfs           100M     0  100M   0% /run/user/1000

Если вы видите разделы /var/www и /var/lib/mysql — все прошло отлично.

Установка веб-сервера

Переходим к установке компонентов ПО для работы сайта. WordPress отлично себя чувствует в связке nginx + php-fpm + MariaDB в роли сервера баз данных. Рассмотрим пример установки данного ПО, а также придерживаемся тактики свежего и стабильно софта из репозиториев разработчиков, для возможности последующего обновления через yum update.

Установка NGINX

Устанавливаем необходимый пакет для подключения сторонних репозиториев:

yum install -y yum-utils

Подключаем yum репозиторий для NGINX, создаем файл /etc/yum.repos.d/nginx.repo:

nano /etc/yum.repos.d/nginx.repo

Копируем содержимое репозитория и сохраняем:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key

Стабильный репозиторий для NGINX подключен, установим его:

yum -y update
yum install -y nginx

Проверим работу сервиса NGINX:

systemctl status nginx
Redirecting to /bin/systemctl status nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: http://nginx.org/en/docs/

Сервис не запущен. Добавим его в автозапуск и запустим:

systemctl enable nginx
systemctl start nginx

Redirecting to /bin/systemctl status nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-06-10 12:32:28 UTC; 3s ago
     Docs: http://nginx.org/en/docs/
  Process: 3947 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 3948 (nginx)
   CGroup: /system.slice/nginx.service
           ├─3948 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─3949 nginx: worker process

Jun 10 12:32:28 aezakmi-blog.ru-central1.internal systemd[1]: Starting nginx - high performance ....
Jun 10 12:32:28 aezakmi-blog.ru-central1.internal systemd[1]: Started nginx - high performance w....
Hint: Some lines were ellipsized, use -l to show in full.

Отлично, веб-сервер установлен и запущен. Теперь наш сервер может обрабатывать http запросы.
Вы можете перейти по адресу http://ip_адрес, и увидеть стандартную «заглушку» nginx.

Установка php-fpm + php 7.3

NGINX является веб-сервером. Для обработки php и работы сайта на WordPress нам необходимо интерпритатор php который умеет дружить с веб-сервером. Установим самую свежую версию из репозитория Remi.

Подключаем репозиторий Remi:

yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Подключим репозиторий Remi с версией PHP 7.3.

yum-config-manager --enable remi-php73

Устанавливаем PHP 7.3 со всеми необходимыми модулями для работы сайта на WordPress:

yum install php php-fpm php-common php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo php-mbstring php-bcmath php-xml

После установки мы можем убедиться что установили необходимую версию интерпритатора PHP 7.3:

php -v
PHP 7.3.6 (cli) (built: May 28 2019 09:32:59) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.6, Copyright (c) 1998-2018 Zend Technologies

Для повышения безопасности изменяем переменную cgi.fix_pathinfo:

nano /etc/php.ini

Находим и устанавливаем переменную cgi.fix_pathinfo=0 (Обратите внимание, изначально строка закомментирована и по дефолту переменная имеет значение 1).

Аналогично с NGINX запустим веб-сервер php-fpm и добавим его в автозагрузку:

systemctl start php-fpm
systemctl enable php-fpm

Установка MariaDB

Блогу на WordPress требуется база данных. Установим стабильную и свежую версию из репозиториев разработчиков MariaDB.
Доблавляем репозиторий MariaDB:

nano /etc/yum.repos.d/MariDB.repo

Вставляем данные репозитория:

# MariaDB 10.3 CentOS repository list - created 2019-06-10 12:48 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Производим установку MariaDB из репозитория:

yum install MariaDB-server MariaDB-client

Запустим сервер баз данных и добавим в автозагрузку:

systemctl enable mariadb
systemctl start mariadb

Остается сконфигурировать начальные настройки для сервера баз данных, например root-пароль для будуших операций, возможность подключения извне к root.

mysql_secure_installation

Получается примерно следующее:

Enter current password for root (enter for none): (Оставляем пустоту и жмем Enter)
Set root password? [Y/n] Y (Далее задаем пароль для root)
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y (Запрещаем удаленный вход для root)
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Записываем root-пароль в надежное место. Позже он нам потребуется для создания базы данных.

Настройка веб-сервера для WordPress

ПО для работы сайта установлено. Настал момент его правильно сконфигурировать, создать папку для сайта, секцию в NGINX, создать базу данных и пользователя.

Создаем файл wordpress.conf с виртуалхостом для NGINX, где описываем работу нашего сайта:

/etc/nginx/conf.d/wordpress.conf

Конфигурационный файл будет иметь следующий вид:

upstream php {
        server unix:/var/run/php-fpm/php-fpm.sock;
}

server {
        ## Доменное имя для сайта
        server_name oblako.aezakmi.ru;

        ## Домашняя папка сайта
        root /var/www/aezakmi;

        index index.php;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

Сохраняем и перечитываем конфигурационные файлы:

systemctl restart nginx

Создаем папку для сайта и выдаем права веб-серверу nginx:

mkdir /var/www/aezakmi
chown nginx:nginx -R /var/www/aezakmi

Настроим сокет для php-fpm, для nginx мы указали передавать запросы туда:

nano /etc/php-fpm.d/www.conf

Меняем listen = 127.0.0.1:9000 на listen = /var/run/php-fpm/php-fpm.sock (Стандартно php-fpm слушает на порту, что может быть полезно в много-серверном кластере, работа через unix сокет более быстрая).
Не закрываем файл, поменяем пользователя на котором работает php-fpm:

; RPM: apache user chosen to provide access to the same directories as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

Меняем на:

; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

Меняем пользователя для unix сокета:

;listen.owner = nobody
;listen.group = nobody
listen.owner = nginx
listen.group = nginx

Чтобы перечитать конфигурационный файл, перезагружаем php-fpm:

systemctl restart php-fpm

Осталось создать базу данных, пользователя и загрузить файлы CMS.
Переходим в консоль MySQL (Вспоминаем пароль):

mysql -u root -p

Создаем базу данных с названием wordpress:

CREATE DATABASE wordpress;

Создаем пользователя wordpress, ограничиваем доступ только с локального сервера:

CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'пароль';

Предоставляем полный доступ пользователю wordpress на базу wordpress:

GRANT ALL ON wordpress.* TO 'wordpress'@"localhost";

Перечитываем привелегии и выходим:

FLUSH PRIVILEGES;
quit

На этом базовая настройка завершена.

Загрузка WordPress на сервер

Далее я подробно опишу процесс миграции WordPress со старого сервера на новый сервер в Яндекс Облаке. Для этого нам потребуется root ssh-доступ на прошлый сервер.

Переходим на старый сервер и создаем дамп базы данных. Заранее переходим в папку, например /home.
Делаем дамп базы с WordPress:

mysqldump -u root Название Базы > wordpress.sql

Упаковываем сайт в архив (Точка в конце обязательна):

tar -czvf files1.tar.gz -C /полный_путь_до_папки_с_сайтом .

Пример полного пути до папки с сайтом: /var/www/hunting/data/www/aezakmi.ru
Результатом команды будем являться созданный архив с содержимым указанной папки.

Теперь давайте скачаем данные на другой сервер, перейдем в консоль сервера на Яндекс Облаке, делаем sudo su.
Скачаем данные с помощью scp:

cd /home
scp -P 22 [email protected]_старого_сервера:/home/wordpress.sql /home
scp -P 22 [email protected]_старого_сервера:/home/wordpress.tar.gz /home

Используйте -P для указания порта, в случае если он не стандартный. Результатом команды является скачивание файлов wordpress.sql и wordpress.tar.gz со старого сервера на новый в папку /home. В процессе вам потребуется ввести пароль от старой машины.
Распакуем архив с сайтом и удалим архив:

tar xvzf wordpress.tar.gz -C /var/www/aezakmi

Мы производим действия под рутом, поменяем владельца папок и файлов на nginx:

chown -R nginx:nginx /var/www/aezakmi

В вашем случае путь может отличаться от /var/www/aezakmi.
Загрузим дамп базы данных в ранее созданную базу данных wordpress (Вспомним пароль от root):

mysql -u root wordpress -p < wordpress.sql

Изменяем значения в wp-config.php (/var/www/aezakmi/wp-config.php)

define( 'DB_NAME', 'wordpress' );

/** Имя пользователя MySQL */
define( 'DB_USER', 'wordpress' );

/** Пароль к базе данных MySQL */
define( 'DB_PASSWORD', 'пароль' );

Не забудьте прописать А-запись домена на IP-адрес Вашей машины в Яндекс Облаке. Если все сделано корректно - Ваш сайт заработает, вы можете проверить это перейдя по http://вашсайт (Мы ранее указывали домен в конфигурации для NGINX).

Подключение SSL-сертификата

На текущий момент http уходит в прошлое, в приоритете сайты использующие сертификат и протокол https.

Мы можем использовать certbot для автоматического получения и продления сертификата Let's Encrypt бесплатно.

Установим необходимые пакеты:

yum install certbot python2-certbot-nginx

Certbot умеет автоматически добавлять секцию для https в конфигурацию веб-сервера.
На данном этапе А-запись для основного домена должна быть активна, так как certbot производит автоматическую проверку для выпуска сертификата.
Выпустим сертификат для нашего сайта следующей командой:

certbot --nginx -m [email protected] -d example.com -d www.example.com

Вместо example.com вставляем домен сайта.

Описание этапов получения сертификата


Принимаем правила предоставления сервиса:

Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

Отправить свою почту для сообщений/новостей от EFF. Скорее всего вам это не нужно.

Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
-------------------------------------------------------------------------------
(Y)es/(N)o: N

Редирект с http на https. Certbot автоматически изменит конфигурацию nginx.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

После этого certbot получит сертификат и добавит правила в конфигурацию.

Автоматическое продление сертификата

Сертификат от Let's Encrypt предоставляется на 3 месяца, добавим автопродление в cron:

EDITOR=nano crontab -e

Вставляем строчку с продлением:

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew 

Certbot будет проверять сертификат два раза в день, это позволит продлять сертификат вовремя и не получить даун-тайм сайта в случае окончания действия сертификата.

Теперь ваш сайт работает по https, а конфигурация нашего веб-сервера выглядит следующим образом:

upstream php {
        server unix:/var/run/php-fpm/php-fpm.sock;
}

server {
        listen 80;
        listen [::]:80;
        server_name aezakmi.ru;
        root /var/www/aezakmi;
        index index.php;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/aezakmi.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/aezakmi.ru/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

Настройка https для WordPress

Осталось изменить значения для вордпресса, открываем wp-config.php в корне с сайтом и добавляем следующие значения:

//Use HTTPS for WordPress
define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');
define('FORCE_SSL_ADMIN', true);

Базовая настройка завершена. Наш сайт готов к работе, публикации записей и посетителям.

Дополнительно рекомендуем настроить firewall, кэш для wordpress.

ХостингиШпаргалки

centoscloudlinuxmariadbmysqlwordpressyandexоблакохостингияндекс облако

avatar
  Подписаться  
Уведомление о