Найти в Дзене
ProITLive

Phpmyadmin и Web-сервер в Ubuntu (Server) 18.04

Всех категорически приветствую!

Сегодня кратко об установке 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-адрес сервера и наблюдаем вот такую картину

Стартовая страница Apache2
Стартовая страница Apache2

Теперь отдельным пунктом установим phpmyadmin и потом уже будем разбирать нюансы и траблы.

#> apt install phpmyadmin

Установщик предложит выбрать, для какого HTTP-сервера сконфигурировать phpmyadmin. Поскольку у нас Apache2, его и выбираем:

-3

В конце установки будет предложено сконфигурировать базу данных dbconfig-common для phpmyadmin. При «чистой» установке актуально «Yes». Но, если вы, к примеру, перенесли конфиги и БД с другого сервера и после этого ставите phpmyadmin, так сказать, «поверх», то нужно ответить «no», иначе все старые конфиги будут перезаписаны:

-4

Далее вводим пароль для последующего доступа к БД phpmyadmin:

-5

Установка phpmyadmin завершена.

Боремся с нюансами в phpmyadmin

Установить установили. Идем в web-морду PMA (phpmyadmin). Адрес PMA в браузере - http://IP_сервера/phpmyadmin

Вводим логин с паролем и…

PMA нюанс №1

-6

Несмотря на «Добро пожаловать…» не больно-то нас хотят сюда пускать,. Говорят, что доступ для пользователя 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;

-7

Выходим из «mysql» командой «quit».

Возвращаемся к web-морде PMA. Пытаемся зайти под рутом с паролем «qwerty123» (который установили выше в MySQL запросе. Пароль, как вы понимаете, тренировочный). И… счастье есть!

-8

Ставим PMA-шному руту нормальный пароль и радуемся жизни, пока не упремся в нюанс №2!

PMA нюанс №2

Теперь, к примеру, нужно импортировать сюда некую базу. Давим на вкладку «Импорт» и… получите-распишитесь:

-9

Сначала пугает… Потом бесит)) Поэтому, сразу от этого избавимся.

Проблема решается правкой двух 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)»
-10

Сохраняем изменения.

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) {»
-11

В первом случае мы заключаем в скобки функцию «Count», которая является аргументом неимоверного условия для return-а. Складывается впечатление, что разработчики их просто забыли там проставить.

Во втором случае мы явно указываем, что переменная «$options» является массивом, и считать надо количество элементов именно массива, а не невесть какого объекта, которым может оказаться «$options».

Теперь обновляем web-морду PMA и радуемся жизни дальше ))

-12

Собственно, базовая настройка web-сервера (LAMP+phpmyadmin) закончена.

В следующей статье настроим в Apache несколько виртуальных хостов, поиграемся с портами и покрутим HTTPS.

На этом сегодня все!

Ставьте лайк и подписывайтесь на канал!

До связи!

Сайт ProITLive

Мой Дзен

Мой канал в ВК

Мой канал в OK

Мой Facebook