Установка WordPress на стек LEMP в Ubuntu 18.04

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

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

Данный мануал поможет установить WordPress на стек LEMP на сервере Ubuntu 18.04.

Требования

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

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

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

sudo mysql

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

mysql -u root -p

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

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

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Примечание: Каждая команда MySQL должна заканчиваться символом точки с запятой.

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

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

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

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

FLUSH PRIVILEGES;

Закройте MySQL:

EXIT;

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

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

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

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. Все необходимые пакеты можно быстро установить с помощью apt, как показано выше.

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

sudo systemctl restart php7.2-fpm

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

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

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

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

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

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

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

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

В главный блок server нужно добавить несколько блоков 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/wordpress

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

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

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:

sudo nano /var/www/wordpress/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');
. . .

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

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

. . .
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wordpressuser');
/** 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).

Tags: , , , , , , ,