9. Основы CMS WordPress, устанавливаем саму систему
Наконец то мы добрались непосредственно до вопроса установки самой CMS WordPress. Всё, что мы излагали до этого, предназначалось для того, чтобы подготовить для этой установки необходимые условия.
Первое, что нужно будет сделать на этом пути, так это скачать дистрибутив WordPress с официального сайта и положить его в корень созданного нами в предыдущей статье сайта http://site1.sysadmin.bz. Самым грамотным способом это реализовать, будет, также как и для случая MySQL, использование команды sudo wget -c https://wordpress.org/latest.zip
в Linux Shell:
Важно заметить, что действуя таким образом мы сразу получаем последнюю версию zip-архива с дистрибутивом в корневом каталоге нашего сайта. Далее его нужно будет распаковать. Распаковку архива делаем командой: sudo unzip latest.zip
Здесь следует заметить, что тяжёлые архивы всегда желательно распаковывать сразу именно в то место, где они должны лежать, ибо иначе перемещение их в распакованном виде может занять очень много времени даже в рамках файловых систем Linux, и уж тем более это касается передачи файлов через сеть по протоколу sftp: то есть сначала копируем архив, а потом его распаковываем на месте, а не наоборот – распаковываем, а потом копируем.
После распаковки в корневом каталоге сайта появится подкаталог WordPress. Наша следующая задача вытащить всю внутреннюю структуру этого подкаталога в корень сайта, а сам подкаталог (папку, директорию, кто как называет) WordPress после этого удалить. Сделать это лучше всего при помощи Midnight Commander, выделив всё содержимое папки WordPress (клавишей “+” на цифровой панели) и перенеся его при помощи клавиши F6:
Теперь можно удалить пустой каталог WordPress, а также исходный архив latest.zip и файл index.html, который мы создавали в предыдущей статье под номером 8. Сделать это можно как с помощью Midnight Commander, так и с помощью последовательного выполнения двух команд:
rm -d wordpress
rm -f latest.zip index.html
Таким образом, первый шаг мы сделали и у нас в корне нашего сайта развёрнута структура дистрибутива WordPress.
Теперь, на втором шаге нужно немного повозиться с правами к файлам дистрибутива, ибо иначе либо система будет слишком уязвима, либо наоборот, прав будет не хватать. Сначала надо сделать владельцем всех файлов дистрибутива пользователя www-data и группу с тем же именем. Далее, в соответствии с трёхзвенной структурой прав UNIX-подобных систем нам нужно дать полные права владельцу и группе на все каталоги (папки, директории) дистрибутива, но лишить права записи в них всех остальных пользователей (код в нотации триады rwx: 775). Что касается файлов, то для пользователя и группы www-data нужно дать все права, кроме права выполнения, а для всех остальных только право чтения (код 664). Самый важный и уязвимый файл wp-config.php не должен содержать вообще никаких прав для посторонних (т.е. никто, кроме пользователей группы root и www-data, а также перечисленных в файле /etc/sudoers не должен иметь даже право читать его). Делается это следующей последовательностью команд:
chown -R www-data:www-data ./
sudo find . -type d -exec chmod 775 {} +
sudo find . -type f -exec chmod 664 {} +
sudo mv wp-config-sample.php wp-config.php
sudo chmod 660 wp-config.php
Пришло время заняться третьим шагом, после чего можно будет запускать установку системы через www-браузер. Шаг большой и сложный. Конечная цель – отредактировать файл wp-config.php в соответствие с нужными нам параметрами.
Если открыть этот файл, то можно увидеть, что в первую очередь надо задать ряд параметров базы данных сайта, ибо без этого установка не начнётся:
- адрес сервера, где находится база данных (у нас она тут же, поэтому оставляем localhost, но нужно понимать, и это объяснялось в статье по MySQL, что это не обязательно и можно указать любой ip-адрес, где находится ваша СУБД и соответствующий порт, если он отличается от 3306);
- имя базы данных;
- имя пользователя;
- пароль пользователя;
- кодировка базы данных;
- правила сопоставления (collation)
Для того, чтобы понять дальнейший материал вам лучше перечитать статью 6 о MySQL. Нашей локальной задачей будет создание базы данных site-1.sysadmin.bz (название может быть любое, но для избежания путаницы лучше называть базу данных и пользователя точно так же, как и сам сайт, для которого они предназначены), заведение специального пользователя базы данных (что крайне желательно, но не обязательно, так как можно использовать и созданного нами в статье 6 универсального пользователя), предоставление этому пользователю всех прав на созданную базу данных (если мы будем использовать не специального пользователя, то у него будет доступ ко многим базам данных, что ухудшает безопасность).
Итак, приступим к реализации нашего плана. Запускаем MySQL Workbench и соединяемся с СУБД. Выбираем среднюю вкладку “Schemas” в левом столбце, жмём на правую кнопку мыши, после чего выбираем левой кнопкой из контекстного меню пункт “Create Schema”:
В появившемся новом окне вводим имя базы данных, кодироку символов (Charset) и правила сопоставления (collation) оставляем по умолчанию, далее жмём на кнопку “Apply (Применить)”:
Результатом этих действий будет генерация простейшего sql-скрипта, который можно было бы написать самому. но нам здесь важно было показать, как это делается при помощи MySQL Workbench, ибо далее будут действия, приводящие к скриптам посложней. В данном случае в появившемся новом окне нам остаётся согласиться с выполнением скрипта:
После этого создастся схема база данных с заданным нами именем site1-sysadmin.bz. Далее нам лучше тут же ответить себе на вопрос о кодировке и сопоставлении. Для этого нажимаем на кнопку со второй пиктограммой напротив имени нашей схемы базы данных:
и видим в соответствующем поле, что по умолчанию у нас база данных создалась с кодировкой utf8mb4, а правило сопоставления символов в ней имеет код utf8mb4_0900_ai_ci. Эту информацию можно было бы получить и при помощи sql-запроса:
Полученную информацию мы будем вводить в соответсвующее место файла wp-config.php. Напомним, что для того, чтобы приступить к этому нам осталось ещё получить имя пользователя базы данных и его пароль, а для этого надо его создать, к чему и приступим. Переходим на вкладку “Administration” в левом столбце MySQL Workbench и выбираем меню “Users and Privileges”, где нажимаем кнопку “Add Account”:
Здесь в поле “Login name” заменяем “newuser” на “site-1.sysadmin.bz”, в поле “Authentication Type” оставляем “Standard” (ещё раз отметим, что это очень важно для WordPress), в поле “Limit to Hosts Matching” – localhost, а в полях Password и “Confirm Password” вводим одинаковый достаточно сложный пароль. Остаётся нажать кнопку “Apply” и пользователь создастся.
Далее нам останется дать права нашему новому пользователю на базу данных. Делается это следующим образом. Выбираем вкладку “Schema Privileges”, далее жмём копку “Add Entry”, выбираем переключа́тель “Selected Schema”, и в ниспадающем меню находим имя нашей базы:
Нам остаётся нажать на кнопку “OK”, стать курсоров на добавленную базу данных и нажать внизу справа на кнопку “Select All” (при этом выделятся все права, кроме GRANT OPTION, что нам и надо):
Всё, нажимаем на “Apply” и переходим к редактированию файла wp-config.php, для чего закрываем MySQL WorkBench (если мы всё сделали верно, то он нам больше не понадобится), открываем наш Midnight Commander, подводим курсор к файлу и нажимаем F4:
Здесь заменяем все параметры ровно так, как указано на нашем снимке с экрана и сохраняем файл (в случае редактора GNU nano жмём комбинацию клавиш {Ctrl,O} и выходим из редакторв комбинацией {Ctrl, X}). На этом всё. и если вы не совершили ни одной ошибки, то установка WordPress произойдёт без единого предупреждения практически в режиме “silent setup”.
Запуск установки осуществляется с web-браузера открыванием сайта по ссылке http://site-1.sysadmin.bz (так как мы удалили файл index.html, то отрабатывать теперь будет index.php).
Поля следующего экрана заполняем в соответствии с нашими договорённостями, задаём сложный логин и пароль администратору системы и нажимаеми на кнопку “Установить WordPress”:
Всё, если ваша виртуальная машина не слишком медленная, то через несколько секунд (в любом случае не больше чем через минуту) вы получите такой завершающий процедуру установки CMS WordPress экран:
Остаётся нажать на кнопку и войти в административную консоль вашего сайта на WordPress для того, чтобы начать его настраивать и заполнять, но об этом уже в следующих статьях:
6. Основы CMS WordPress, установка и настройка СУБД MySQL
Настал черёд установки MySQL, предпоследнего элемента нашей LAMPы. Дело это непростое и кропотливое, так что налейте себе чашку ароматного кофе и приготовьтесь к длинной беседе.
В дальнейшем мы теперь всегда будем считать, что установленная нами в предыдущих статьях виртуальная машина с гостевой ОС Debian Linux 11 (bullseye) запущена и у вас открыт сеанс работы с ней по протоколу ssh, в котором запущен менеджер файлов Midnight Cоmmander (помним, что в любой момент можно с помощью комбинации клавиш {Ctrl, O} переключаться в режим командной строки и обратно).
Первое, что нам нужно будет сделать, это скачать последний стабильный дистрибутив (apt-репозиторий) СУБД MySQL с официального сайта проекта, зайдя на него по адресу: https://dev.mysql.com/downloads/repo/apt:
Обращаем внимание на то, что указано на этой странице касательно проверки целостности пакета и понимаем, что нам нужно установить пакет GnuPG, что и делаем в первую очередь с помощью команды: apt install gnupg
Скачать дистрибутив можно при помощи веб-браузера в Windows, но тогда он попадёт к вам на хост-машину, а потом его придётся перекидывать по протоколу SFTP на гостевую (например, при помощи очень полезной утилиты WinSCP), поэтому здесь мы применим более правильный в данной ситуации подход и скачаем файл прямо из командной строки Linux командой: wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.23-1_all.deb
Теперь полученный файл нужно будет распаковать при помощи команды: dpkg -i mysql-apt-config_0.8.23-1_all.deb
, запуск которой приводит к появлению следующего экрана:
где можно выбрать другой (кластерный) вариант установки сервера, но мы оставляем всё как есть, выбираем “ОК” и нажимаем “Enter”:
Результатом работы команды dpkg является появление нового файла mysql.list в локальном репозитории apt, расположееном в каталоге /etc/apt/sources.list
:
Всё, теперь можно устанавливать СУБД MySQL при помощи команды: apt install mysql-server
, предварительно запустив на всякий случай сначала: apt update
и apt upgrade
, если это окажется необходимым:
Заметим здесь, что мощнейшая современная утилита APT (Advanced Packaging Tool). пришедшая на смену apt-get, на самом деле как бы сама может скачивать и распаковывать пакеты Debian при помощи специальных ключей, и многие даже не знают, что делает она это обращаясь к тем же wget и dpkg. Наша цель показать вам как можно глубже анатомию процессов и думается, что на примере устанвоки MySQL нам это удастся.
Итак, запускаем установку и на предупреждение о том, готовы ли вы к тому, что этот процесс отнимет у вас 290 мегабайт на жёстком диске, конечно же отвечаем согласием “д”:
На вопрос о пароле для пользователя root придумываете и вводите сложный пароль и подтвержаете его, а на вопрос о методе аутентификации по умолчанию соглашаетесь с использованием плагина, работающего на основе более безопасного алгоритма хеширования, версии 2 (SHA-256), хотя WordPress и не поддерживает его. Позже мы объясним, как решать это вопрос.
Всё, если в процессе установки на чёрном экране не появилось никаких строк другого цвета, кроме белого, то на этом установка MySQL завершается и всё выгдядит относительно просто, однако дьявол, как говорится, в деталях, а именно в настройке MySQL, к которой и приступим.
Для начала проверим, всё ли действительно хорошо с нашей установкой:
Если у вас также, как и у нас, значит всё отлично, если нет, то смотрим журнал ошибок, находящийся в файле /var/log/mysql/error.log. Если там указана проблема, то ищем её решение в интернет.
Заметим, что при нормальном завершении установки журнал должен выглядеть следующим образом:
Итак, мы установили MySQL и убедились, что установилось всё корректно. Теперь нам будет нужен удобный инструмент, заменяющий (а точнее дополняющий) возможности стандартного клиента mysql, работающего из командной строки. В последних версиях СУБД в состав дистрибутива входит MySQL Workbench – мощная программа с графическим интерфейсом, пользоваться которой можно с любой машины, откуда доступен установленный нами сервер по нужному порту (по умолчанию 3306).
Давайте скачаем MySQL Workbench, скопируем скачанный файл mysql-workbench-community-8.0.30-winx64.msi
в наш каталог дистрибутивов D:\Distrib.dsk
после чего запустим и проведём установку по умолчанию в режиме complete (полная установка) на нашей host-машине. Результатом будет следующее окно, где будет сказано, что MySQL Workbench не смог найти ни одного запущенного MySQL-сервера и это правильно, так как по умолчанию к серверу есть доступ только с той машины, на которой он установлен и, кроме того, к нему нельзя соединяться удалённо при помощи логина root:
Первое, что нам нужно будет сделать для того, чтобы преодолеть данные препятствия (а они необходимы для улучшения безопасности), так это открыть доступ к серверу с хост-машины, а можно и вообще с вашей внутренней сети 192.168.1/24, если вы уверены в том, что в ней не будут работать злоумышленники (здесь, в случае домашней сети, речь о ваших домочадцах, а в случае рабочей – о ваших сотрудниках). Для этого с помощью Midnight Commander находим на сервере файл /etc/mysql/mysql.conf.d/mysqld.cnf, нажимаем F4 для вызова редактора, добавляем в конец файла строку: bind-address=0.0.0.0
и сохраняем изменения:
Второе, что нужно будет сделать – это завести с помощью утилиты командной строки другой логин, который не такой очевидный, как root, и дать ему все права на управление СУБД. Делается это следующей последовательностью действий:
1) запускаем команду linux shell: mysql --user=root --password
, что позволяет зайти нам на сервер под логином root и получить доступ к выполнению команд MySQL;
2) запускаем уже sql-команду : create user 'ваш-логин'@'%' identified by 'ваш-пароль';
3) проверяем, появился ли пользователь sql-командой: SELECT User, Host FROM mysql.user;
4) даём все права на все базы sql-командой: grant all privileges on *.* to 'ваш-логин'@'%' with grant option;
5) инициируем права sql-командой: flush privileges;
6) возвращаемся в linux-shell командой exit
;
Отметим, что излагаемый здесь материал подразумевает, что вы находитесь в DMZ (то есть к вам с внешней сети невозможно зайти по любому порту, кроме 80) и вам нет смысла устанавливать и настраивать Firewall (Брэндмауэр), однако, если он у вас всё же стоит, то нужно будет обязательно открыть порт 3306.
Теперь перезапускаем MySQL-сервер командой: service mysql restart
и возвращаемся к окну MySQL Workbench, где нужно будет выбрать меню Database-Connect to Database или сразу нажать комбинацию клавиш {Ctrl,U}:
В открывшемся окне нужно ввести правильно логин, который вы создавали вышеприведённой sql-командой create user и адрес виртуальной машины (у нас 192.168.1.11), а далее в следующем окне пароль пользователя, и если всё, что описано выше, было сделано верно, то вы успешно соединитесь с СУБД и получите основное рабочее окно MySQL Workbench:
Здесь можно видеть, что у нас ещё нет созданных баз данных (схем), но если нажать на кнопку “Users and Privileges”, то появится список пользователей, среди которых будут созданные нами и автоматически созданные системой. Для нас тут будет представлять интерес разница между пользователем root и пользователем, под именем которого мы соединились с MySQL:
Как видите, у пользователя root разрешение только на вход с localhost, а у созданного вами пользователя %, что означает отовсюду.
Кроме того, когда мы будем создавать пользователей для конкретных баз данных, то будем выбирать Authentification Type: “Standard”, поскольку, как уже говорилось, WordPress не поддерживает SHA 2.
Обратим ещё ваше внимание но то, что если нажать на кнопку “Server Status”, то можно увидеть подробную информацию о состоянии сервера MySQL, что бывает очень полезным.
Также заметим, что MySQL Workbench – достаточно новая программа-клиент MySQL и пока ещё сыровата, что проявляется в разного рода “странностях” при работе с ней. Если у вас такое произошло, произведите обновление вида или пересоединитесь. Коме того, рекомендуется постоянно обновлять это приложение. В любом случае, не забывайте, что у вас всегда есть в распоряжении инструменты командной строки.
На этом мы заканчиваем статью об установке и настройке СУБД MySQL, но к материалу, изложенному здесь будем ещё не раз возвращаьться, когда речь пойдёт об установке конкретных сайтов, построенных на CMS WordPress.
4. Основы CMS WordPress, ставим гостевую ОС
Итак, настала пора перейти к нашей практической цели: установке WordPress, а, как мы писали в первой статье, первым шагом к достижению этой цели является установка Linux.
Мы будем устанавливать Debian Linux 11 с кодовым именем bull’s-eye (яблочко). Почему именно эту версию?
Во-первых это самый последний на момент написания статьи устойчивый (стабильный, проверенный) свободно-распространяемый официальный дистрибутив Debian Linux.
Во-вторых Debian Linux – операционная система, проверенная временем, обладающая самым мощным набором пакетов программ и, в силу всего этого, наиболее подходящая для нашей цели, однако это не значит, что вы обязательно должны ставить именно её – если у вас есть опыт и уверенность, то можете ставить любую Unix-подобную ОС, главное чтобы вы смогли поднять на ней web-сервер, php и MySQL. Можно даже установить Windows, поднять MySQL на нём и заставить работать PHP c Internet Information Services, причём автор имеет опыт в этом направлении и именно поэтому предлагает не искать приключений, а пойти по первому пути.
Таким образом, начинаем действовать:
- заходим по ссылке;
- находим кнопку скачивания нужного нам дистрибутива для архитектуры AMD64:
- нажатие на неё приведёт к скачиванию необходимого iso-образа дистрибутива:
- находим этот файл в каталоге “Загрузки” и переносим его в ваш каталог дистрибутивов, например, как мы в каталог (директорию, папку) “D:\Distrib.dsk”;
- запускаем Диспетчер Hyper-V описанным в предыдущей статье способом: нажатием комбинации клавиш {Windows, R}, набором virtmgmt.msc и нажатием Enter;
- в появившемся окне Диспетчер Hyper-V (Hyper-V Manager в английском варианте) видим установленную нами в предыдущей статье виртуальную машину с именем WordPress-01 и любым способом выбираем пункт меню “Параметры” этой виртуальной машины (например, через контекстное меню, как на снимке ниже, или через меню “Действия” или правую вкладку “Действия”:
- здесь нам нужно будет установить DVD-привод, в который мы будем “вставлять” скачанный образ дистрибутивного DVD-диска, для чего нажимаем кнопку “Добавить”:
- выбираем DVD-дисковод и снова жмём на “Добавить”
- далее указываем полный путь к скачанному нами файлу образа устанавливаемой операционной системы Debian 11 либо найдя и выбрав его с помощью кнопки “Обзор”, либо просто набрав D:\Distrib.dsk\debian-11.4.0-amd64-netinst.iso
- теперь определяем порядок просмотра устройств для загрузки – нам нужно, чтобы DVD-дисковод был первым:
- следующим крайне важным моментом является отключение режима безопасной загрузки, ибо иначе у вас не получится установить Linux, так как он её не поддерживает (снимаем птичку):
- всё, подготовительный этап на этом завершён, теперь возвращаемся в меню Диспетчер Hyper-V, выбираем нашу виртуальную машину и сначала запускаем её кнопкой “Пуск”,
а затем подключаемся к ней кнопкой “Подключить”, в результате чего у вас должно появиться новое окно с запущенной установкой ОС Debian 11: - если оно не появилось, то проверьте, выбрали ли вы верный порядок просмотра устройств при загрузке виртуальной машины, первым должен быть DVD-привод со смонтированным iso-образом дистрибутива Debian GNU/Linux 11, после чего инициируйте перезагрузку симулируя нажатие комбинации (Ctrl, Alt, Del} с помощью меню “Действие”:
- Итак, уже можно установить ОС, выбрав пункт меню “Install”, однако если вы хотите иметь возможность выбрать именно такую конфигурацию, которая вам нужна, то всегда выбирайте “Advanced options …”, а затем “… Expert install”, что приведёт вас к большому числу промежуточных меню, большая часть из которых интуитивно понятна и позволяет вам специфицировать многие параметры системы, но некоторые меню требуют пояснения, чем мы сейчас и займёмся, предварительно обратив ваше внимание на то, что для перехода от поля к полю здесь нужно будет использовать клавишу табуляции, а для подтверждения выбора клавишу “Enter”:
- пункт “Загрузка компонентов с установочного носителя” вызовет следующее новое окно:
где нам не нужно ничего выбирать, а просто нажать на Enter, перейдя на кнопку “Продолжить” при помощи клавиши табуляции; - пункт “Настройка сети”
предполагает запрос на разрешение автоматически назначить ip-адрес через dhcp, на что нужно ответить отказом, после чего последуют обычные вопросы об ip-адресе, маске сети, шлюзе и dns-сервере, на которые мы в нашем случае внешнего виртуального коммутатора должны отвечать таким образом, как если бы к тому же коммутатору, к которому подключена ваша физическая машина с основной операционной системой, была бы подключена ещё одна машина, например стандартным ответом будет следующий:- ip-адрес: 192.168.1.11
- маска подсети: 255.255.255.0
- шлюз: 192.168.1.1
- dns-серверы: 192.168.1.1
- настройка сети заканчивается просьбой ввести имя компьютера (у нас WordPress-1):
и имя домена (имеется ввиду dns-имя), в который вы хотите включить эту машину - далее последует группа вопросов, связанных с пунктом меню “Настройка учётных записей пользователей и паролей”, где мы подтверждаем использование теневых паролей, запрещаем вход в систему под логином “root”, придумываем и вводим логин и пароль;
- настройку времени делаем так, как предлагает система, то есть подтверждаем использование NTP и выбираем ваш часовой пояс;
- далее остановимся на разметке дисков, где выбираем второй вариант (шифрование нам ни к чему, так как мы не собираемся хранить файлы с документами в системе)
а, в новом окне выбираем для простоты “Все файлы в одном разделе” - теперь нужно будет задать имя (например WordPress-1-Volumes) и размер (max) группы томов:
- на следующий важный вопрос отвечаем утвердительно, несмотря на предупреждение:подтверждаем запись изменений на диск и переходим к этапу установки базовой системы и пакетов программ, где соглашаемся со всеми предложениями системы, то есть по сути всё время жмём на Enter, кроме экрана выбора ПО, где проставляем птички следующим образом:
- остался последний шаг, установка загрузчика, на что мы соглашаемся:
после чего может последовать вопрос, на который важно ответить утвердительно, иначе система может не загрузиться; - всё, после этого будет ещё всего два экрана, один информационный:
и один, требующий действия, суть которого ясна из контекста: - Если всё, что написано выше было сделано верно, то переходим в окно “Параметры” Диспетчера Hyper-V и вновь смотрим на верный порядок загрузки, где микропрограмма загрузки EFI находится в отдельном файле и он указан первым для просмотра (если у вас не так, то система может не загрузиться),
после чего инициируем запуск гостевой операционной системы кнопкой “Пуск” и соединяемся с ней кнопкой “Подключить” из вкладки “Действия” Диспетчера Hyper-V, и если всё было сделано верно, то должно появиться новое окно со следующим содержимым:
которое означает не что иное, как успешное завершение процесса установки Debian GNU/Linux в минимально необходимой нам конфигурации.
- пункт “Загрузка компонентов с установочного носителя” вызовет следующее новое окно: