Как установить WordPress с использованием LAMP в Ubuntu 16.04
Введение
WordPress является самой популярной системой управления контентом (CMS, content management system) в Интернете. WordPress позволяет вам легко создавать гибкие в настройке блоги и веб-сайты на базе MySQL и PHP. WordPress используется повсеместно и является отличным выбором для тех, кто хочет быстро создать веб-сайт. После установки практически все задачи настройки и администрирования сайта можно сделать из его веб-интерфейса.
В этой статье мы рассмотрим процесс установки WordPress на стек LAMP (Linux, Apache, MySQL и PHP) на сервер с Ubuntu 16.04.
Перед установкой
Перед тем, как начать следовать описанным в этой статье шагам, убедитесь, что у вас есть сервер с Ubuntu 16.04.
Перед началом необходимо будет выполнить следующие шаги:
Создать
sudo
пользователя на сервере: Инструкции в этой статье предполагают наличие не-рутового (non-root) пользователя с привилегиямиsudo
. Узнать, как настроить такого пользователя на вашем сервере, можно из статьи о первичной настройке сервера на Ubuntu 16.04.Установить стек LAMP: Для работы WordPress необходим веб-сервер, база данных и PHP. Настройка стека LAMP (Linux, Apache, MySQL и PHP) удовлетворяет всем этим требованиям. Следуйте инструкциям в этой статье для установки и настройки этого программного обеспечения.
Повышение безопасности сайта с помощью SSL: WordPress работает с динамическим контентом и обрабатывает аутентификацию и авторизацию пользователей. TLS/SSL - это технология, которая позволяет вам шифровать трафик вашего сайта для повышения безопасности работы с сайтом. Настройка SSL зависит от того, есть ли у вас доменное имя для сайта или нет.
Если у вас есть доменное имя, самым простым способом сделать ваш сайт безопаснее будет использование сервиса Let's Encrypt, который предоставляет бесплатный сертификаты. Для настройки сертификатов, следуйте инструкциям в статье по настройке Let's Encrypt для Apache.
Если у вас нет доменного имени и вы просто хотите потестировать описанную в этой статье конфигурацию, вы можете использовать самоподписанный сертификат. Он предоставляет такой же уровень шифрования, но без валидации домена. Для его настройки следуйте инструкциям в статье о настройке самоподписанного SSL сертификата для Apache.
После того, как вы выполнили все описанные выше шаги, зайдите на ваш сервер используя созданного вами sudo
пользователя и следуйте инструкциям, описанным далее.
Шаг 1: Создание базы данных MySQL и пользователя для WordPress
WordPress использует MySQL для хранения и управления данными сайта и информацией о пользователях сайта. К этому моменту MySQL уже должен быть установлен на нашем сервере, теперь нам необходимо создать базу данных и пользователя для использования с WordPress.
Сначала зайдём в MySQL с использованием root-аккаунта (аккаунта администратора) следующей командой:
- mysql -u root -p
Вам будет предложено ввести пароль, который вы задали ранее для root-аккаунта MySQL в процессе установки MySQL.
Создадим базу данных, которая будет использоваться для WordPress. Вы можете назвать эту базу данных любым именем, в этой статье мы будем использовать название wordpress
. Для создания базы данных используйте команду:
- CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Внимание: Каждая команда MySQL должна заканчиваться точкой с запятой (;). При вводе команды убедитесь, что вы ввели точку с запятой, чтобы избежать проблем.
Далее мы создадим отдельный аккаунт пользователя MySQL, который будет использоваться исключительно для работы WordPress с нашей базой данных. Создание отдельных баз данных и аккаунтов является хорошей практикой с точки зрения безопасности и управления базами данных. В этой статье мы назовём этого пользователя wordpressuser
. Вы можете использовать любом другое имя пользователя.
Мы создадим аккаунт пользователя, его пароль и дадим ему доступ к созданной нами базе данных. Для этого мы воспользуемся следующей командой (не забудьте задать сильный пароль для пользователя):
- GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
Теперь у вас есть база данных и пользователь для работы с WordPress. Нам осталось лишь применить изменения:
- FLUSH PRIVILEGES;
Выйдите из MySQL командой:
- EXIT;
Шаг 2: Установка расширений PHP
При установке стека LAMP нам требовался минимальный набор расширений 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. Для того, чтобы понять, какие расширения необходимы для работы плагина обратитесь к документации данного плагина. Установить требуемые плагины можно с помощью apt-get
, как описано выше.
Далее перезапустим Apache для начала использования установленных плагинов. При установке дополнительных плагинов в будущем не забудьте перезапускать Apache.
- sudo systemctl restart apache2
Шаг 3: Настройка конфигурации Apache для разрешения директив в .htaccess
Далее сделаем некоторые небольшие изменения в нашей конфигурации Apache. По умолчанию использование файлов .htaccess
не разрешается веб-сервером. WordPress и многие его плагины используют файлы .htaccess
для тонкой настройки поведения сервера.
Также мы включим mod_rewrite
, который необходим для корректной работы постоянных ссылок (permalinks) WordPress.
Включение .htaccess Overrides
Для внесения первого изменения откройте конфигурационный файл Apache:
- sudo nano /etc/apache2/apache2.conf
Для разрешения файлов .htaccess
нам необходимо установить директиву AllowOverride
внутри блока Directory
, отвечающего за корневую директорию нашего сайта. Для этого добавьте в конец файла следующие строки:
. . .
<Directory /var/www/html/>
AllowOverride All
</Directory>
. . .
Сохраните и закройте файл.
Включения модуля Rewrite
Далее активируем модуль mod_rewrite
для использования постоянных ссылок WordPress:
- 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
Перед тем, как переместить эти файлы в корневую директорию нашего сайта, добавим пустой файл .htaccess
и установим права доступа к нему для дальнейшего использования в WordPress. Создайте файл и измените права доступа к нему командами:
- touch /tmp/wordpress/.htaccess
- chmod 660 /tmp/wordpress/.htaccess
Также создадим файл конфигурации WordPress путём копирования примера файла конфигурации:
- cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
Также мы можем создать директорию upgrade
для того, чтобы WordPress мог успешно обновляться в будущем:
- mkdir /tmp/wordpress/wp-content/upgrade
Теперь мы можем скопировать всё содержимое нашей временной директории в корневую директорию нашего сайта. Для сохранения прав доступа мы будем использовать флаг -a
при копировании. Мы поставим точку в конце адреса копируемой директории для того, чтобы всё содержимое директории было скопировано, включая скрытые файлы (например, файл .htaccess
созданный нами ранее):
- sudo cp -a /tmp/wordpress/. /var/www/html
Шаг 5: Настройка директории WordPress
Перед началом настройки WordPress с использованием веб-интерфейса нам необходимо сделать некоторые изменения в самой директории WordPress.
Настройка прав доступа
Одной из важных задач на данном этапе является настройка разумных прав доступа и владельцев файлов. Мы должны иметь возможность писать в эти файлы используя профиль обычного пользователя. Кроме того, веб-сервер должен иметь возможность осуществлять доступ и изменять определённые файлы и директории для своей корректной работы.
Начнём с того, что установим владельцем всех наших файлов в корневой директории сайта нашего пользователя. В этой статье мы используем имя пользователя sammy
, вам необходимо использовать имя вашего sudo
-пользователя. В качестве группы вы будем использовать группу www-data
:
- sudo chown -R sammy:www-data /var/www/html
Далее настроим бит setgid
для каждой из директорий в корневой директории. Благодаря этому все новые файлы, создаваемый в этих директориях, будут наследовать группу родительской директории (которую мы только что установили как www-data
) вместо использования основной группы пользователя. Это необходимо для того, чтобы при создании любого файла в директории с помощью командной строки, веб-сервер имел доступ к этому файлу.
Для установки бита setgid
для каждой директории в корневой директории нашего сайта на WordPress используем следующую команду:
- 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 предоставляет генератор этих строк, поэтому вам не надо придумывать их самостоятельно. Эти строки используются только самим WordPress, поэтому не бойтесь задавать для них сложные значения.
Для получения строк от WordPress используйте следующую команду:
- curl -s https://api.wordpress.org/secret-key/1.1/salt/
В ответ вы получите набор уникальных строк, который будет выглядеть следующим образом:
Внимание: Важно получать уникальные строки при каждой новой установке WordPress. Не копируйте строки, приведённые ниже в качестве примера!
Вывод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', 'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('SECURE_AUTH_KEY', 'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('LOGGED_IN_KEY', 'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('NONCE_KEY', 'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('AUTH_SALT', 'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('SECURE_AUTH_SALT', 'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('LOGGED_IN_SALT', 'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
define('NONCE_SALT', 'ЗНАЧЕНИЕ ПОЛУЧЕННОЕ ИЗ КОМАНДНОЙ СТРОКИ');
. . .
Далее изменим настройки соединения с базой данных в начале файла. Нам необходимо задать имя базы данных, имя пользователя базы данных, а также соответствующий пароль этого пользователя 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 с использованием веб-интерфейса.
Введите доменное имя вашего или IP адрес вашего сервера в браузере.
http://доменное_имя_или_IP_адрес
Выберите язык, который вы хотите использовать:
Далее вам будет показана главная страница настроек.
Выберите имя для вашего сайта WordPress, а также имя пользователя (с точки зрения безопасности рекомендуется не выбирать имя "admin" или похожее). Далее автоматически будет создан сильный пароль для этого пользователя. Сохраните пароль или задайте другой сильный пароль.
Далее введите свой адрес электронной почты и укажите, хотите ли вы, чтобы поисковые системы не индексировали ваш сайт:
При нажатии на кнопку Установить WordPress вам будет предложено залогиниться.
После успешного входа в WordPress вы увидите админ-панель WordPress:
Обновление WordPress
С текущими настройками вы не сможете обновлять WordPress при появлении обновлений.
Выбранные нами настройки позволяют обеспечить хороший баланс между безопасностью и удобством пользования в 99% времени между обновлениями. Тем не менее, эти настройки слишком строгие для осуществления автоматических обновлений.
При появлении обновлений WordPress зайдите на сервер используя вашего sudo
пользователя. Далее временно дайте веб-серверу доступ на запись к содержимому всей корневой директории сайта:
- sudo chown -R www-data /var/www/html
Далее перейдите в админ-панель WordPress и совершите обновление.
После завершения обновления измените права доступа на изначальные:
- sudo chown -R sammy /var/www/html
Описанная процедура необходима только при обновлении самого WordPress (не его плагинов).
Заключение
Теперь WordPress установлен и готов к использованию! Далее вы можете, например, задать настройки постоянных ссылок на ваши посты (эти настройки можно найти в разделе Settings > Permalinks
) или выбрать новую тему (в Appearance > Themes
). Если вы используете WordPress в первый раз, ознакомьтесь в админ-панелью, чтобы лучше понять, как она работает.
1 Comment