Установка WordPress на LEMP в Ubuntu 16.04

Published by Leave your thoughts

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

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

Данное руководство поможет установить WordPress на стек LEMP на сервере Ubuntu 16.04.

Требования

  • Настроенный сервер Ubuntu 16.04.
  • Пользователь с доступом к команде sudo; все команды этого руководства нужно выполнять в сессии этого пользователя, если не указано иное. О создании такого пользователя можно прочесть здесь.
  • Предварительно установленный стек LEMP; инструкции по установке – по этой ссылке.
  • TLS/SSL-сертификат; он необходим для шифрования данных WordPress. Если у вас есть доменное имя, получите сертификат Let’s Encrypt. Если у вас нет домена, можно создать самоподписанный сертификат.

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

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

Откройте сессию root пользователя MySQL:

mysql -u root -p

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

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

CREATE DATABASE wordpress;

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

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

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

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

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

FLUSH PRIVILEGES;

Закройте MySQL:

EXIT;

2: Настройка Nginx для поддержки WordPress

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

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

В главный блок server нужно добавить несколько блоков location.

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

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

3: Установка расширений PHP

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

Чтобы установить наиболее популярные PHP-расширения для WordPress, введите:

sudo apt-get update
sudo apt-get install php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc

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

Установив все необходимые расширения, перезапустите PHP-FPM:

sudo systemctl restart php7.0-fpm

4: Загрузка WordPress

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

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

cd /tmp
curl -O 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/html

5: Настройка каталога WordPress

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

Права доступа

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

Передайте права на все файлы в каталоге document root текущему пользователю с доступом к sudo; в руководстве пользователь называется 8host. Передайте права ему и группе www-data:

sudo chown -R 8host:www-data /var/www/html

После этого нужно настроить setgid для каждого каталога в document root. Благодаря этому новые файлы, созданные в этих каталогах, смогут наследовать группу родительского каталога (в данном случае это www-data). Таким образом, при создании нового файла в каталоге document root веб-сервер по-прежнему будет иметь соответствующий доступ к нему.

sudo find /var/www/html -type d -exec chmod g+s {} \;

Затем нужно передать группе право на запись в каталоге wp-content; это нужно для того чтобы веб-интерфейс мог изменять темы и плагины.

sudo chmod g+w /var/www/html/wp-content

Далее нужно дать веб-серверу право на запись во всех файлах этих двух каталогов:

sudo chmod -R g+w /var/www/html/wp-content/themes
sudo chmod -R g+w /var/www/html/wp-content/plugins

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

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

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

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

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

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

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

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

nano /var/www/html/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» крайне не рекомендуется.

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

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

7: Обновление WordPress (опционально)

Текущие права позволяют обновлять WordPress после релиза новой версии.

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

При появлении новой версии войдите на сервер с привилегиями sudo. Временно передайте веб-серверу полный доступ к document root:

sudo chown -R www-data /var/www/html

Затем вернитесь в панель инструментов WordPress и примените обновление. После этого нужно отнять доступ к document root в целях безопасности.

sudo chown -R 8host /var/www/html

Заключение

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

Tags: , , , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>