Актуальное на данный момент (июнь 2022) руководство по настройке LAMP (Linux, Apache, MySQL/MariaDB, PHP/Perl/Python) в linux системах, использующих httpd демон на локальном http сервере.
В основу статьи легла тема на форуме manjaro
Небольшое отступление от темы. Если кто-то в комментариях мне расскажет как сделать навигацию по статье (ссылки там, якоря) - буду премного благодарен, а то сплошная портянка текста - такое себе удовольствие. А душа просит организации контента и содержания со ссылками на параграфы.
Итак, к сути. Установка наших непотребств по шагам.
1. Обновление системы
sudo pacman -Syyu
2. Установка Apache
sudo pacman -S apache
После окончания установки правим конфигурационный файл, который лежит по пути /etc/httpd/conf/httpd.conf. Для этого открываем консоль и вводим следующее:
sudo nano /etc/httpd/conf/httpd.conf
nano - консольный текстовый редактор.
Находим строку LoadModule unique_id_module modules/mod_unique_id.so и комментируем её, должно получиться так
# LoadModule unique_id_module modules/mod_unique_id.so
Сохраняем файл (ctrl + o) и закрываем (ctrl + x) редактор.
Далее, включаем автостарт службы Apache и перезапускаем её:
sudo systemctl enable httpd
sudo systemctl restart httpd
Проверить запущен ли и работает Apache можно командой
sudo systemctl status httpd
Примерный вывод этой команды выглядит так:
2.1 Тестирование Apache.
На данном этапе, корневая директория сервера у нас находится по пути /srv/http (мы это изменим в последствии для удобства разработки на локальном хосте). Создадим файл index.html в корне нашего сервера
sudo nano /srv/http/index.html
и впишем туда немного рандомного html, например:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /><meta http-equiv="X-UA-Compatible" content="ie=edge" /><title>Welcome</title>
</head>
<body>
<h2>Welcome to my Web Server test page</h2>
</body>
</html>
Теперь, открываем наш любимый Интеренет Эксплорер браузер и переходим по адресу
http://localhost/
или
http://127.0.0.1/
Вуаля, как говорили древние греки, всё работает.
3. Установка MariaDB (MySQL)
Снова в консоль:
sudo pacman -S mysql
MariaDB c 2013 года поставляется как альтернатива MySQL в дистрибутивах Arch Linux. Поэтому после ввода команды выше, вы увидите предложение выбрать mariadb или percona-server. Нам нужна mariadb, поэтому вписываем 1 и жмем enter
[root@server ~]# pacman -S mysql
:: There are 2 providers available for mysql:
:: Repository extra
1) mariadb
:: Repository community
2) percona-server
Enter a number (default=1): `Press Enter`
resolving dependencies...
looking for conflicting packages...
Packages (7) boost-libs-1.60.0-2 icu-56.1-2 jemalloc-4.0.4-1libmariadbclient-10.1.11-1 libxml2-2.9.3-1
mariadb-clients-10.1.11-1 mariadb-10.1.11-1
Total Download Size: 30.68 MiB
Total Installed Size: 218.10 MiB
:: Proceed with installation? [Y/n]
Теперь ВАЖНО. Перед стартом сервиса MariaDB, нужно инициализировать рабочую директорию MariaDB (где будут храниться данные). Для этого выполняем следующее:
sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
Теперь, по аналогии с Apache, включаем автостарт службы и стартуем ее
sudo systemctl enable mysqld
sudo systemctl start mysqld
Проверить установку MariaDB можно следующей командой:
sudo systemctl status mysqld
Мы увидим, что-то, похожее на следующий вывод:
3.1 Установка root пароля MySQL/MariaDB
Постараюсь максимально подробно остановиться на этом моменте, т.к. в своё время несколько раз безбожно тупил и начинал установку с начала.
Итак, чтобы начать, открываем консоль (по сути, из нее и выходить-то по ходу событий не надо :) ) и вводим команду:
sudo mysql_secure_installation
Жмем Enter и НЕ ТОРОПИМСЯ
Первый вопрос в консоли будет
Enter current password for root (enter for none):
Так как паролей мы еще не устанавливали, то просто жмем Enter. Далее.
Switch to unix_socket authentication [Y/n]
Если хотите добраться до баз данных через phpMyAdmin на локальном хосте с учетной записью root без танцев с бубном, то вводим N и жмем Enter. Далее.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n]
Тут, я бы рекомендовал выбрать Y и установить root пароль, отличный от вашей учетной записи root в системе. Дело ваше, но, тем не менее. Допустим, выбрали Y и нажали Enter. Консоль попросит дважды ввести выбранный пароль.
После, скрипт спросит удалить ли анонимных пользователей. Эм.. думаю, объяснять не надо, что их желательно удалить, поэтому Y и жмем Enter
Далее, скрипт задаст вопрос, разрешить ли root пользователю удаленный вход. Обычно, на локальном сервере этого не требуется, поэтому можно смело выбирать N и жать Enter
MariaDB по умолчанию содержит тестовые данные, их тоже смело можно удалить при установке
Вводим Y и жмем Enter.
Далее ОБЯЗАТЕЛЬНО соглашаемся с перезагрузкой привилегий
Вводим Y и жмем Enter.
На этом установка MariaDB окончена.
4. Установка PHP
Традиционно, в консоли:
sudo pacman -S php php-apache
После установки PHP нужно настроить PHP модуль Apache. Для этого открываем файл настроек Apache
sudo nano /etc/httpd/conf/httpd.conf
Находим и комментируем следующую строку. Должно получится вот так
# LoadModule mpm_event_module modules/mod_mpm_event.so
Далее, раскомментируем, или добавим строку
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
Далее, в зависимости от установленной версии PHP, добавляем в конец файла следующее.
Для PHP версии 7
LoadModule php7_module modules/libphp7.so
AddHandler php7-script php
Include conf/extra/php7_module.conf
Для PHP версии 8
LoadModule php_module modules/libphp.so
AddHandler php-script php
Include conf/extra/php_module.conf
Сохраняем файл (ctrl + o) и закрываем (ctrl + x) редактор.
4.1 Тестируем PHP
Создадим файл test.php в директории /srv/http
sudo nano /srv/http/test.php
Вписываем внутрь
<?php
phpinfo();
Перезапускаем Apache
sudo systemctl restart httpd
И открываем браузер по адресу http://localhost/test.php . Если видим информацию о PHP, то всё ок.
5, Установка phpMyAdmin
phpMyAdmin - это графическая административная панель управления MySQL / MariaDB.
Установка
sudo pacman -S phpmyadmin
после завершения процесса установки, правим php.ini файл
sudo nano /etc/php/php.ini
раскомментируем расширения
extension=bz2
extension=mysqli
Раскомментирование производится путем удаления ";" в начале строки
Сохраняем файл (ctrl + o) и закрываем (ctrl + x) редактор.
Далее, необходимо создать конфигурационнный файл для phpMyAdmin
sudo nano /etc/httpd/conf/extra/phpmyadmin.conf
и добавить в него следующие строки
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
DirectoryIndex index.php
AllowOverride All
Options FollowSymlinks
Require all granted
</Directory>
Затем, открываем конфигурационный файл Apache
sudo nano /etc/httpd/conf/httpd.conf
и добавляем следующее в конец файла
Include conf/extra/phpmyadmin.conf
Сохраняем файл (ctrl + o) и закрываем (ctrl + x) редактор.
Перезагружаем Apache
sudo systemctl restart httpd
и тестируем phpMyAdmin, открыв http://localhost/phpmyadmin
Если увидите ошибку с текстом "The configuration file now needs a secret passphrase (blowfish_secret)", то сгенерируйте 32-х символьную строку рандомного текста, откройте
sudo nano /etc/webapps/phpmyadmin/config.inc.php
$cfg['blowfish_secret'] = '`MyP@$S`'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH!$ /**
и вместо `MyP@$S` вставьте свои 32 волшебных символа. До недавнего времени длина строки особо роли не играла, но пару версий назад phpMyAdmin стал ругаться на очень длинные строки.
Перезагружаем Apach и радуемся жизни.
sudo systemctl restart httpd
А вот как сменить корневую директорию сервера, и как без боли ниже поясницы работать с сайтами на локальном сервере, я расскажу в следующей статье.