Маленькая статья о том, как установить одну из самых известных бесплатных CMS на свой LAMP стек. Речь пойдет о WordPress, благодаря широкой известности, под нее написано очень много плагинов, шаблонов и отдельных скриптов для обработки определенных задач. Благодаря этому WordPress стал очень гибким инструментом для реализации как одностраничных лендингов, так и больших сайтов. Адаптивность этой системы позволяет производить администрирование сайта почти полностью из веб интерфейса.
И так начнем, нам понадобится ос Ubuntu server 18.04, установленный LAMP, желательно защитить сайт шифрованием, и я бы рекомендовал использовать виртуальные хосты.
Сам процесс установки очень прост, и ничем не отличается от обычной установки программы на компьютере, которую мы выполняем уже на автомате, но до того как устанавливать, нужно подготовить систему. Первым делом создадим базу данных, для этого заходим в MySQL под логином root
$ sudo mysql -u root -p
Вводим пароль и оказываемся внутри оболочки MySQL, здесь мы можем использовать SQL команды для совершения операций с базами данных. Создадим отдельную базу данных для управления сайтом, условно назовем ее wordpress
mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Заметьте, каждая команда SQL должна заканчиваться ‘;’, вроде мелочь, а даже опытные пользователи иногда забывают об этом. Далее создадим пользователя под которым будут совершаться операции только с этой базой данных, назовем его wpuser, дадим ему полномочия и придумаем сложный пароль, с точки зрения безопасности это хорошая практика, создавать отдельного пользователя для каждой БД
mysql> GRANT ALL ON wordpress.* TO 'wpuser'@'localhost' IDENTIFIED BY 'password';
Обновим привилегии, чтобы MySQL был в курсе что мы сделали
mysql> FLUSH PRIVILEGES;
На этом подготовка базы данных завершена, можно выходить
mysql> EXIT;
Следующим шагом установим дополнительные пакеты PHP, делается это для того, чтобы минимизировать последующую установку этих пакетов если они понадобятся в будущем для какого нибудь плагина
$ sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
Перезапустим Apache, чтобы установленные пакеты стали известны серверу
$ sudo systemctl restart apache2
WordPress активно использует файлы .htaccess для своей работы, мы должны настроить наш Apache, потому что по умолчанию, использование файлов .htaccess отключено. Откроем файл нашего виртуального хоста, предварительно настроенный
$ sudo nano /etc/apache2/sites-available/wordpress.conf
Добавим внутрь блока VirtualHost директиву
<Directory /var/www/wordpress/>
AllowOverride All
</Directory>
Тем самым мы активируем переопределение .htaccess для данного виртуального хоста, как можно было заметить, в вышестоящем листинге файла записан путь к директории сайта /var/www/wordpress, вы можете использовать любой. Сохраняем и закрываем файл /etc/apache2/sites-available/wordpress.conf
Активируем модуль перезаписи командой.
$ sudo a2enmod rewrite
Проверяем правильность конфигурации Apache
$ sudo apache2ctl configtest
И если ошибок нет можно перезапустить наш веб сервер
$ sudo systemctl restart apache2
Последний этап подготовки, это скачать, распаковать и настроить сам движок сайта WordPress. Переходим в папку и качаем последнюю версию архива
$ cd /tmp
$ curl -O https://wordpress.org/latest.tar.gz
Распаковываем архив
$ tar xzvf latest.tar.gz
Добавляем пустой файл .htaccess в корневую папку движка
$ touch /tmp/wordpress/.htaccess
Сразу же скопируем файл примера конфигурации для последующего редактирования
$ cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
Ещё, было бы неплохо, заранее создать папку upgrade, что у wordpress не возникало трудностей с правами при самостоятельной попытке это сделать
$ mkdir /tmp/wordpress/wp-content/upgrade
Теперь можно скопировать все файлы в папку размещения сайта, согласно конфигурации виртуального хоста, обратите внимание что в адресе источника копирования, в конце стоит точка, тем самым мы говорим что скопировать нужно файлы включая скрытые .htaccess
$ sudo cp -a /tmp/wordpress/. /var/www/wordpress
Перед тем как установить WordPress в веб интерфейсе, следует произвести некоторые настройки в директории сайта. Самым важным шагом, как я считаю, является настройка разрешений для файлов, для корректной работы веб сервера с WordPress, следует дать ему разрешение для этого, пользователь под которым работает Apache это www-data, сделаем принадлежность файлов сайта именно этому пользователю
$ sudo chown -R www-data:www-data /var/www/wordpress
Далее, с помощью команды find установим разрешения для файлов и папок
$ sudo find /var/www/wordpress/ -type d -exec chmod 750 {} \;
$ sudo find /var/www/wordpress/ -type f -exec chmod 640 {} \;
Теперь можно приступать к настройки файла конфигурации самого движка. WordPress использует секретные ключи для безопасной работы, так же WordPress даёт возможность использовать защищённый генератор значений этих секретных ключей, так что нам не придется ничего придумывать
$ curl -s https://api.wordpress.org/secret-key/1.1/salt/
Мы получим примерно такой вывод
define('AUTH_KEY', 'iIWH$q)E.*{$J^{Hx|%6w%s IrR|?om8%{&<9!nIpf#yGi n5c;|$K8Oz{|k~+Ev');
define('SECURE_AUTH_KEY', '[3vJr- t8oE%qnC4A|b!qG0HwJ}GXL47Gh3x3x%~-9PH~-_n9F]Ob}:fq!l&c>S4');
define('LOGGED_IN_KEY', 'J5Se/A@oT:r6R,8EFD`(U5@#y0=ZN#m{Bm081pr_}&/_Xo*f|uj$1yp7S>Z81-i/');
define('NONCE_KEY', '>MC^/V:7k,L401)>?hAh1YFVL%jgG5&G<#1,C+4iY;Fn3*+1nZB5LTkEr-^z7f<X');
define('AUTH_SALT', 'GSiNS!GH<6%?7e$!WzY{@2kGI|#g{TRP6fvI,G5IC-`D* M!K+5T2;Ktzbo+2[fC');
define('SECURE_AUTH_SALT', 'KjdWZRy~1]4}OU0p5}[3tQpQ).Z34~x=d.>E7GuAPuuc32K~o-[If-]/+-t$Zz0I');
define('LOGGED_IN_SALT', 'j%.+Igt~l#l_<upQ@+OMNI}LTh$b<Sa/b!;AwoVGDKswMB2alD3CP-@&[_m0NZ1X');
define('NONCE_SALT', 'SA!#?tU@-?p#sf.-B>q*Kh5]8T2[8>ict!neQ]l,@+Z8lheImv-W|lk[%ZWCo&+D');
Обратите внимание, что генератор не выдает одинаковые значения, а значит копировать их отсюда не стоит, это не безопасно. Открываем наш конфигурационный файл
$ 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');
. . .
И вместо этого раздела вставляем то что нам прислал генератор. Следующим шагом настроим подключение к базе данных, в том же файле нам нужно указать имя базы данных, имя пользователя и пароль для подключения к серверу MySQL, и вишенкой на торте следует указать метод записи данных в файловой системе, так как мы настроили разрешение для веб сервера записывать файлы там куда ему нужно, то метод будем использовать прямой, иначе нам пришлось бы использовать FTP сервер для работы с файлами, а это каменный век
. . .
define('DB_NAME', 'wordpress');
/** MySQL database username */
define('DB_USER', 'wpuser');
/** MySQL database password */
define('DB_PASSWORD', 'password');
. . .
define('FS_METHOD', 'direct');
Сохраняем и закрываем файл. Все, наконец то мы добрались до установки самого движка. В адресной строке браузера открываем https://адрес_нашего_сайта_или_его_ip
Попадаем на главную страницу и нас переадресовывает на страницу установки, выбираем язык установки, нажимаем кнопку продолжения
И можно указать что сайт не надо индексировать поисковыми ботами.На следующей странице вводим
– название сайта
– имя пользователя администратора (не стоит использовать admin, это не безопасно, стоит придумать имя пользователя на этом этапе, потому что потом его поменять можно будет только через изменения в базе данных)
– пароль (можно сгенерировать или придумать свой, советую использовать сложный пароль, из-за широкой известности WordPress, она постоянно подвергается атакам, и пока мы не настроили защиту от брутфорса нас могут хакнуть)
– Почтовый адрес
Нажимаем кнопку установки, после сообщения об успешной инсталляции WordPress нажимаем кнопку входа в админку
Вводим логин и пароль настроенные при установке и попадаем в панель администратора. На этом установка WordPress можно считать завершённой и готовой к использованию, дальнейшие настройки и манипуляции можно делать из этой панели.
Все статьи можно посмотреть на сайте или на Zen Yandex