WordPress – это самая популярная в мире система управления контентом (CMS), которая позволяет быстро развернуть гибкий сайт или блог на MySQL и PHP.
WordPress идеально подходит для быстрого запуска сайта; после установки почти все задачи по управлению можно выполнить при помощи удобного интерфейса.
Этот мануал поможет установить WordPress на стек LAMP на сервере Ubuntu 18.04.
Требования
- Сервер Ubuntu 18.04, настроенный по этому мануалу.
- Пользователь с доступом к команде sudo; все команды этого руководства нужно выполнять в сессии этого пользователя, если не указано иное.
- Предварительно установленный стек LAMP; инструкции по установке – здесь.
- SSL-сертификат; он необходим для шифрования данных WordPress. Если у вас есть доменное имя, получите бесплатный доверенный сертификат от сервиса Let’s Encrypt. Если у вас нет домена, можно создать самоподписанный сертификат для Apache.
1: Создание базы данных и пользователя MySQL
Сначала нужно подготовить отдельную БД и пользователя MySQL для WordPress. WordPress использует MySQL для хранения и управления данными сайта.
Откройте сессию root пользователя 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
По умолчанию установка LAMP предоставляет только базовые функции своих компонентов.Но для корректной работы WordPress вам нужны дополнительные расширения PHP.
Чтобы загрузить и установить их, обновите индекс пакетов и введите следующую команду:
sudo apt update
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
Примечание: Каждый плагин WordPress имеет свой собственный набор требований. Некоторым может потребоваться установка дополнительных пакетов PHP. Проверьте документацию плагина, чтобы узнать его требования к PHP. Большинство плагинов можно установить с помощью apt, как показано выше.
Перезапустить Apache и обновить настройки можно позже. Для этого используется такая команда:
sudo systemctl restart apache2
3: Поддержка .htaccess и mod_rewrite
Теперь нужно внести поправки в настройки Apache. После установки стека у вас должен быть файл конфигурации сайта в каталоге /etc/apache2/sites-available/. Для примера мы будем использовать /etc/apache2/sites-available/wordpress.conf, но вы должны редактировать свой файл.
Кроме того, мы будем /var/www/wordpress в качестве корневого каталога установки WordPress. Вы должны использовать корневой каталог, указанный в вашей конфигурации.
Примечание: Возможно, вы используете конфигурацию по умолчанию 000-default.conf (и корневой каталог /var/www/html). Это нормально, если вы собираетесь разместить на этом сервере только один веб-сайт. Если нет, лучше разделить конфигурацию на логические фрагменты, по одному файлу на сайт.
Поддержка .htaccess
На данный момент файлы .htaccess не поддерживаются. WordPress и многие плагины этой системы широко используют функции файлов .htaccess.
Откройте конфигурационный файл вашего сайта:
sudo nano /etc/apache2/sites-available/wordpress.conf
Чтобы включить использование файлов .htaccess, нужно установить директиву AllowOverride в блоке Directory, указывающем на каталог document root. Добавьте директиву в конец блока VirtualHost:
. . .
<Directory /var/www/wordpress/>
AllowOverride All
</Directory>
. . .
Сохраните и закройте файл.
Включение модуля rewrite
Чтобы включить модуль mod_rewrite, наберите:
sudo a2enmod rewrite
Обновление настроек
Прежде чем обновить настройки, проверьте синтаксис на наличие ошибок:
sudo apache2ctl configtest
Команда может вернуть такое сообщение:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Чтобы подавить первую строку сообщения, установите директиву ServerName в файле /etc/apache2/apache2.conf, указывающем на домен или IP-адрес. В целом это сообщение никак не влияет на производительность сайта; если команда возвращает строку Syntax OK, можно обновлять настройки.
Для этого нужно перезапустить Apache:
sudo systemctl restart apache2
4: Загрузка WordPress
Теперь сервер готов к установке WordPress. Из соображений безопасности рекомендуется устанавливать только последнюю версию WordPress.
Чтобы загрузить сжатый пакет WordPress, введите:
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
Распакуйте архив WordPress:
tar xzvf latest.tar.gz
Эти файлы нужно переместить в каталог document root. Но прежде нужно добавить фиктивный файл .htaccess. Чтобы создать файл, введите:
touch /tmp/wordpress/.htaccess
Затем нужно скопировать образец конфигурационного файла WordPress:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
Также можно создать каталог upgrade , чтобы WordPress не столкнулся с конфликтом привилегий после обновления его программного обеспечения:
mkdir /tmp/wordpress/wp-content/upgrade
Теперь можно скопировать файлы в каталог document root. Чтобы сохранить права на файлы, используйте флаг –a. Точка после исходного каталога указывает, что в этом каталоге нужно скопировать все файлы, включая скрытые файлы (например, только что созданный .htaccess)
sudo cp -a /tmp/wordpress/. /var/www/wordpress
5: Настройка каталога WordPress
Прежде чем приступить к настройке WordPress в браузере, нужно настроить некоторые компоненты, хранящиеся в каталоге WordPress.
Права доступа
Для начала нужно установить разумные права доступа к файлам и права собственности. Обычный пользователь и веб-сервер должны иметь доступ и возможность настраивать определенные файлы и каталоги.
Передайте права на все файлы в каталоге document root пользователю и группе www-data. Это пользователь, который запускает веб-сервер Apache, и Apache должен читать и изменять файлы WordPress, чтобы обслуживать веб-сайт и выполнять автоматические обновления. Обновите права:
sudo chown -R www-data:www-data /var/www/wordpress
Затем нужно запустить две команды find, чтобы установить правильные привилегии на каталоги и файлы WordPress:
sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;
Конфигурационный файл 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 установлена и готова к работе. Настройте постоянные ссылки (Settings > Permalinks) или выберите новую тему для своего сайта (Appearance > Themes).