Всех категорически приветствую!
Сегодня кратко об установке LAMP и phpmyadmin, их настройке и нюансах.
LAMP (Linux, Apache2, MySQL, PHP) – это пакет программ, организующих полноценный web-сервер, а именно:
- Apache2 – HTTP (HTTPS) сервер;
- MySQL – сервер баз данных MySQL;
- PHP – скриптовый (сценарный) язык для серверной обработки данных (бэкграунда).
Развертывается этот пакет чаще всего именно комплексом, за исключением случаев, когда вам требуется что-то отдельно для конкретной задачи, например, если нужен только HTTP-сервер без поддержки связи с БД или без серверной обработки данных, то можно поставить только Apache. Но так бывает крайне редко.
Основных способов установки LAMP два: либо скопом при помощи «tasksel», либо по отдельности (apt).
Единожды я поленился и поставил пакет с использованием «tasksel», и, в последствии, заимел много нюансов и заминок с заменой, обновлением и удалением компонентов AMP, поэтому больше этим способом не пользуюсь. Ставлю все отдельно. От этого и будем плясать дальше.
Итак, устанавливаем комплект (из консольки, конечно же):
#> su (или добавляйте везде в начале команд sudo)
#> apt update
#> apt install apache2 curl mysql-server mysql-client php libapache2-mod-php php-mysql php-cli
По большому счету – всё. В базовой конфигурации web-сервер уже функционирует. Можно проверить: вводим в браузере адрес IP-адрес сервера и наблюдаем вот такую картину
Теперь отдельным пунктом установим phpmyadmin и потом уже будем разбирать нюансы и траблы.
#> apt install phpmyadmin
Установщик предложит выбрать, для какого HTTP-сервера сконфигурировать phpmyadmin. Поскольку у нас Apache2, его и выбираем:
В конце установки будет предложено сконфигурировать базу данных dbconfig-common для phpmyadmin. При «чистой» установке актуально «Yes». Но, если вы, к примеру, перенесли конфиги и БД с другого сервера и после этого ставите phpmyadmin, так сказать, «поверх», то нужно ответить «no», иначе все старые конфиги будут перезаписаны:
Далее вводим пароль для последующего доступа к БД phpmyadmin:
Установка phpmyadmin завершена.
Боремся с нюансами в phpmyadmin
Установить установили. Идем в web-морду PMA (phpmyadmin). Адрес PMA в браузере - http://IP_сервера/phpmyadmin
Вводим логин с паролем и…
PMA нюанс №1
Несмотря на «Добро пожаловать…» не больно-то нас хотят сюда пускать,. Говорят, что доступ для пользователя root категорически запрещен. Почему? Да потому что на серверах с версией MySQL 5.7 и выше аутентификация по дефолту производится не с помощью пароля, а c помощью плагина «auth_socket».
С одной стороны, использование этого плагина удобно тем, что условно «не надо запоминать пароль». Набрал в консоле «mysql» и сразу залогинен на mysql-сервере под рутом. Но мне такой расклад удобен далеко не всегда, да и с базами куда приятней работать в PMA. Поэтому придется сменить метод аутентификации с «плагинового» на «парольный» (да, безопасность от этого несколько страдает, но, как известно, красота требует жертв!).
Делается это достаточно просто: заходим в mysql из консольки; обновляем метод аутентификации; обновляем привилегии.
#> mysql
# mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'qwerty123';
# mysql> FLUSH PRIVILEGES;
Проверим, что метод изменился:
# mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Выходим из «mysql» командой «quit».
Возвращаемся к web-морде PMA. Пытаемся зайти под рутом с паролем «qwerty123» (который установили выше в MySQL запросе. Пароль, как вы понимаете, тренировочный). И… счастье есть!
Ставим PMA-шному руту нормальный пароль и радуемся жизни, пока не упремся в нюанс №2!
PMA нюанс №2
Теперь, к примеру, нужно импортировать сюда некую базу. Давим на вкладку «Импорт» и… получите-распишитесь:
Сначала пугает… Потом бесит)) Поэтому, сразу от этого избавимся.
Проблема решается правкой двух PMA-шных файликов (по одной строчке в каждом).
1) Файлик sql.lib.php
- Открываем на редактирование файлик /usr/share/phpmyadmin/libraries/sql.lib.php
- Находим в нем строку «|| (count($analyzed_sql_results['select_expr'] == 1)»
- Меняем ее на «|| ((count($analyzed_sql_results['select_expr']) == 1)»
Сохраняем изменения.
2) Файлик plugin_interface.lib.php (в той же папке, что и sql.lib.php)
- Открываем на редактирование файлик /usr/share/phpmyadmin/libraries/plugin_interface.lib.php
- Находим в нем строку «if ($options != null && count($options) > 0) {»
- Меняем ее на «if ($options != null && count((array) $options) > 0) {»
В первом случае мы заключаем в скобки функцию «Count», которая является аргументом неимоверного условия для return-а. Складывается впечатление, что разработчики их просто забыли там проставить.
Во втором случае мы явно указываем, что переменная «$options» является массивом, и считать надо количество элементов именно массива, а не невесть какого объекта, которым может оказаться «$options».
Теперь обновляем web-морду PMA и радуемся жизни дальше ))
Собственно, базовая настройка web-сервера (LAMP+phpmyadmin) закончена.
В следующей статье настроим в Apache несколько виртуальных хостов, поиграемся с портами и покрутим HTTPS.
На этом сегодня все!
Ставьте лайк и подписывайтесь на канал!
До связи!