Установка WordPress на LEMP в Ubuntu 16.04
LEMP Stack, Linux, Ubuntu | Комментировать запись
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: LEMP, LEMP Stack, Let's Encrypt, MySQL, PHP, Ubuntu 16.04, WordPress