Установка WordPress на стек LEMP в Debian 10

WordPress – это самая популярная система управления контентом (CMS), которая позволяет быстро развернуть гибкий сайт или блог на MySQL и PHP.

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

Этот мануал поможет установить WordPress на стек LEMP на сервере Debian 10.

Требования

  • Сервер Debian 10, настроенный по этому мануалу (все команды данного мануала нужно выполнять в сессии пользователя с доступом к команде sudo, если не указано иное).
  • Предварительно установленный стек LEMP; инструкции по установке – в мануале Установка стека LEMP в Debian 10.
  • TLS/SSL-сертификат; он необходим для шифрования данных WordPress. WordPress обслуживает динамический контент и обрабатывает аутентификацию и авторизацию пользователей. TLS/SSL – это технология, которая позволяет шифровать трафик и защищает соединения. В мануале предполагается, что у вашего блога есть домен.  Вы можете получить бесплатный доверенный сертификат от Let’s Encrypt.

1: Создание базы данных и пользователя для WordPress

Сначала нужно подготовить отдельную базу данных и пользователя для WordPress. В данной установке для хранения и управления данными сайта используется СУБД MariaDB, форк MySQL. На данный момент MariaDB является MySQL-совместимым сервером БД по умолчанию для всех пакетных менеджеров на основе debian.

Откройте сессию root пользователя MariaDB. Если MariaDB поддерживает плагин аутентификации auth_socket (по умолчанию), вы можете сделать это с помощью sudo:

sudo mariadb

Если же вы изменили метод аутентификации по умолчанию и используете пароль, введите:

mariadb -u root -p

Команда запросит root пароль MariaDB.

Сначала нужно создать базу данных для WordPress; в руководстве эта БД будет условно называться wordpress, но лучше выбрать более описательное имя. Итак, чтобы создать БД для WordPress, наберите:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Теперь нужно создать отдельного пользователя для новой БД. В целом создавать индивидуальных БД и пользователей для разных сервисов очень полезно с точки зрения управления и безопасности. В мануале пользователь условно называется wordpress_user.

Следующая команда создаст пользователя, установит пароль, и передаст пользователю права на новую БД.

GRANT ALL ON wordpress.* TO 'wordpress_user'@'localhost' IDENTIFIED BY 'password';

Теперь WordPress может использовать индивидуальную БД и пользователя. Сбросьте привилегии, чтобы обновить настройки MySQL.

FLUSH PRIVILEGES;

Закройте MariaDB:

EXIT;

2: Установка дополнительных расширений PHP

При установке стека LEMP на сервер загружается минимальное количество PHP-расширений, необходимое для поддержки взаимодействия между PHP и MariaDB. Для корректной работы WordPress и плагинов нужны дополнительные PHP расширения.

Сейчас для работы WordPress нужно загрузить и установить некоторые из самых популярных расширений PHP:

sudo apt update
sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

Примечание: Каждый плагин WordPress имеет свой набор требований. Некоторым может потребоваться установка дополнительных пакетов PHP. Проверьте документацию плагина, чтобы узнать его требования к PHP.

Когда установка расширений будет завершена, перезапустите процесс PHP-FPM, чтобы PHP-процессор мог добавить новые функции:

sudo systemctl restart php7.3-fpm.service

Теперь у вас есть необходимые PHP-расширения.

3: Настройка Nginx

Теперь нужно немного откорректировать блок server для веб-сервера Nginx.

Согласно предварительным требованиям, в каталоге /etc/nginx/sites-available/ у вас должен быть конфигурационный файл сайта, который отвечает на доменное имя или IP-адрес сервера и защищен сертификатом TLS/SSL. Здесь в качестве примера мы используем /etc/apache2/sites-available/your_domain, но вы должны указать путь к своему файлу.

Кроме того, мы будем использовать /var/www/your_domain в качестве корневого каталога WordPress. Вы должны использовать корневой каталог, указанный в вашей конфигурации.

Примечание: Возможно, вы используете конфигурацию по умолчанию /etc/nginx/sites-available/default (и /var/www/html как корневой каталог). Это хорошо, если вы собираетесь разместить на сервере только один веб-сайт. Если нет, лучше разделить конфигурацию веб-сервера на логические фрагменты, по одному файлу на сайт.

Откройте файл блока server с привилегиями sudo:

sudo nano /etc/nginx/sites-available/your_domain

В главный блок server нужно добавить несколько блоков location. После добавления SSL-сертификатов конфигурация может иметь два блока server. Если это так, найдите тот, который содержит root /var/www/your_domain и другие директивы location, и внесите изменения туда.

Для начала создайте идентичные блоки location для /favicon.ico и /robots.txt.

Используйте регулярное выражение для обработки запросов к статическим файлам. Отключите логирование таких запросов и настройте их кэширование (они, как правило, требуют большого количества ресурсов). Добавьте в предложенный список другие необходимые статические файлы.

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

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


location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {


expires max;


log_not_found off;


}

. . .
}

В существующем блоке location / нужно отредактировать try_files; тогда вместо ошибки 404 сервер будет передавать обработку файлу index.php. Параметр должен иметь такой вид:

server {
. . .
location / {
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php$is_args$args;
}
. . .
}

Сохраните и закройте файл.

Проверьте синтаксис на наличие ошибок.

sudo nginx -t

Если ошибок нет, перезапустите Nginx.

sudo systemctl reload nginx

4: Загрузка WordPress

Теперь сервер готов к установке WordPress. Из соображений безопасности рекомендуется устанавливать только последнюю версию WordPress.

Чтобы загрузить сжатый пакет WordPress, введите:

cd /tmp
curl -LO https://wordpress.org/latest.tar.gz

Распакуйте архив WordPress:

tar xzvf latest.tar.gz

Эти файлы нужно переместить в каталог document root. Но сначала нужно скопировать образец конфигурационного файла WordPress в файл, который будет читать программа:

cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

Теперь можно скопировать файлы в каталог document root. Чтобы сохранить права, используйте флаг –a. Точка после исходного каталога указывает, что в этом каталоге нужно скопировать все файлы, включая скрытые файлы:

sudo cp -a /tmp/wordpress/. /var/www/your_domain

Передайте права на все файлы в каталоге document root пользователю группе www-data. Они отвечают за работу веб-сервера Nginx. Имея эти привилегии, Nginx сможет читать и изменять файлы WordPress и выполнять автоматические обновления.

sudo chown -R www-data:www-data /var/www/your_domain

5: Конфигурационный файл WordPress

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

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

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

Команда вернёт уникальные значения:

define('AUTH_KEY',         '1jl/vqfs<XhdXoAPz9 DO NOT COPY THESE VALUES c_j{iwqD^<+c9.k<J@4H');
define('SECURE_AUTH_KEY',  'E2N-h2]Dcvp+aS/p7X DO NOT COPY THESE VALUES {Ka(f;rv?Pxf})CgLi-3');
define('LOGGED_IN_KEY',    'W(50,{W^,OPB%PB<JF DO NOT COPY THESE VALUES 2;y&,2m%3]R6DUth[;88');
define('NONCE_KEY',        'll,4UC)7ua+8<!4VM+ DO NOT COPY THESE VALUES #`DXF+[$atzM7 o^-C7g');
define('AUTH_SALT',        'koMrurzOA+|L_lG}kf DO NOT COPY THESE VALUES  07VC*Lj*lD&?3w!BT#-');
define('SECURE_AUTH_SALT', 'p32*p,]z%LZ+pAu:VY DO NOT COPY THESE VALUES C-?y+K0DK_+F|0h{!_xY');
define('LOGGED_IN_SALT',   'i^/G2W7!-1H2OQ+t$3 DO NOT COPY THESE VALUES t6**bRVFSD[Hi])-qS`|');
define('NONCE_SALT',       'Q6]U:K?j4L%Z]}h^q7 DO NOT COPY THESE VALUES 1% ^qUswWgn+6&xqHN&%');

Важно! Используйте только свои уникальные значения. Не копируйте предложенные выше параметры!

Эти строки можно добавить в конфигурационный файл. Откройте файл WordPress:

nano /var/www/your_domain/wp-config.php

Найдите такой раздел:

. . .
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');
. . .

Удалите эти строки и вставьте свои уникальные ключи:

. . .
define('AUTH_KEY',         'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_KEY',  'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_KEY',    'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_KEY',        'VALUES COPIED FROM THE COMMAND LINE');
define('AUTH_SALT',        'VALUES COPIED FROM THE COMMAND LINE');
define('SECURE_AUTH_SALT', 'VALUES COPIED FROM THE COMMAND LINE');
define('LOGGED_IN_SALT',   'VALUES COPIED FROM THE COMMAND LINE');
define('NONCE_SALT',       'VALUES COPIED FROM THE COMMAND LINE');
. . .

После этого нужно отредактировать параметры БД. Укажите имя БД, имя пользователя и пароль MariaDB.

Также нужно определить метод внесения данных WordPress в файловую систему. Поскольку веб-сервер имеет право на запись в файловой системе, можно выбрать direct. Если не внести эту настройку, при выполнении некоторых действий WordPress будет запрашивать учётные данные FTP.

. . .
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpress_user');
/** MySQL database password */
define('DB_PASSWORD', 'password');
. . .
define('FS_METHOD', 'direct');

Сохраните и закройте файл.

6: Веб-интерфейс WordPress

После настройки сервера можно завершить установку WordPress в браузере.

http://server_domain_or_IP

Интерфейс предложит выбрать язык установки, после чего появится главная страница настройки. Укажите название сайта и имя пользователя для доступа к CMS. Система самостоятельно сгенерирует надёжный пароль. Вы можете использовать этот пароль или выбрать свой.

Примечание: Использовать имя вроде «admin» крайне не рекомендуется.

Затем введите адрес электронной почты и настройте индексацию сайта в поисковых системах.

После этого появится страница входа. Укажите свои учётные данные, чтобы получить доступ к панели инструментов.

Заключение

Теперь система WordPress установлена и готова к работе. Вы можете самостоятельно ознакомиться с интерфейсом CMS. Настройте постоянные ссылки (Settings > Permalinks) или выберите новую тему для своего сайта (Appearance > Themes).

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

Tags: , , ,