Установка и настройка LAMP и phpmyadmin в Ubuntu (Server) 18.04
LAMP (Linux, Apache2, MySQL, PHP) – это пакет программ, организующих полноценный web-сервер, а именно:
Apache2 – HTTP (HTTPS) сервер;
MySQL – сервер баз данных MySQL;
PHP – скриптовый (сценарный) язык для серверной обработки данных (бэкграунда).
Развертывается этот пакет чаще всего именно таким комплексом, за исключением случаев, когда вам требуется что-то отдельно для конкретной задачи, например, если нужен только HTTP-сервер без поддержки связи с БД или без серверной обработки данных, то можно поставить только Apache. Но так бывает достаточно редко.
Основных способов установки LAMP два: либо при помощи «tasksel», либо каждый пакет по отдельности (apt).
Нами единожды пакеты устанавливались с использованием «tasksel», и, в последствии, возникло много нюансов и заминок с заменой, обновлением и удалением компонентов AMP, поэтому больше этим способом не пользуемся. Ставим все отдельно.
Итак, устанавливаем комплект:
#> sudo -i (или добавляйте везде в начале команд sudo)
#> apt update
#> apt install apache2 curl mysql-server mysql-client php libapache2-mod-php php-mysql php-cli
По большому счету – всё. В базовой конфигурации web-сервер уже функционирует. Можно проверить: вводим в браузере адрес IP-адрес сервера и должна появиться страницы Apache:
Теперь отдельным пунктом установим phpmyadmin и разберем нюансы.
#> apt install phpmyadmin
Установщик предложит выбрать, для какого HTTP-сервера сконфигурировать phpmyadmin. Поскольку у нас Apache2, его и выбираем:
В конце установки будет предложено сконфигурировать базу данных dbconfig-common для phpmyadmin. При «чистой» установке актуально «Yes». Но, если вы, к примеру, перенесли конфиги и БД с другого сервера и после этого ставите phpmyadmin, так сказать, «поверх», то нужно ответить «no», иначе все старые конфиги будут перезаписаны:
Далее вводим пароль для регистрации на сервере БД:
Установка phpmyadmin завершена.
Боремся с нюансами в phpmyadmin
Установили. Идем в web-интерфейс PMA (phpmyadmin). Адрес PMA в браузере - http://IP_сервера/phpmyadmin
Вводим логин с паролем и…
PMA нюанс №1
Несмотря на «Добро пожаловать…» система в интерфейс не пускает. Указано, что доступ для пользователя root запрещен. Почему? Потому что на серверах с версией MySQL 5.7 и выше аутентификация по дефолту производится не с помощью пароля, а c помощью плагина «auth_socket».
С одной стороны, использование этого плагина удобно тем, что условно «не надо запоминать пароль». Однако, такой метод аутентификации удобен далеко не всегда, да и с базами куда приятней работать в 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 запросе):
Устанавливаем для пользователя root надежный пароль в разделе "Учетные записи пользователй".
* Если ошибки, рассматриваемые ниже, у вас не возникают, то ничего делать не нужно.
PMA нюанс №2
Теперь, к примеру, нужно импортировать сюда некую базу. Нажимаем на вкладку «Импорт» и…:
Проблема решается правкой двух файлов (по одной строчке в каждом).
- Файл 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) {»
Сохраняем изменения.
После этого обновляем web-интерфейс phpmyadmin. Все должно работать корректно:
Устанока web-сервера (LAMP+phpmyadmin) закончена.