Установка PhpMyAdmin с Nginx в Ubuntu 20.04

PhpMyAdmin - это веб-приложение с открытым исходным кодом, написанное на языке программирования PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. Главной особенностью данного приложения является возможность управления MySQL без непосредственного ввода SQL команд. Приложение позволяет создавать и редактировать таблицы, вносить в них данные, администрировать пользователей баз данных, а также экспортировать и импортировать записи и структуру таблиц из базы данных.

В этой статье мы рассмотрим, как выполняется установка phpMyAdmin на Ubuntu 20.04 с веб-сервером Nginx. Прежде чем приступать к установке phpMyAdmin, у вас уже заранее должны быть установлены такие компоненты, как Nginx, MariaDB или MySQL и PHP. Если ещё нет, то сначала посмотрите статьи про установку Nginx c PHP-FPM и статью по установке MySQL

Установка phpMyAdmin в Ubuntu 20.04

1. Установка нужных компонентов

Прежде чем мы сможем установить phpMyAdmin на Ubuntu, необходимо убедиться, что у вас установлен сам интерпретатор языка программирования PHP и необходимые расширения для PHP. Для установки всех необходимых пакетов выполните в терминале команду:

sudo apt -y install php7.4 php7.4-cli php7.4-fpm php7.4-json php7.4-pdo php7.4-mysql php7.4-zip php7.4-gd php7.4-mbstring php7.4-curl php7.4-xml php-pear php7.4-bcmath

mHePZbc47uAAAAAASUVORK5CYII=

На момент написания статьи (1 августа 2021) актуальной версией PHP в официальных репозиториях Ubuntu считалась версия 7.4. Самая же последняя официальная версия PHP от разработчиков 8.0.9 (по состоянию на 29 июля 2021 года).

2. Установка phpMyAdmin

Теперь можно установить сам пакет phpMyAdmin при помощи команды:

sudo apt -y install phpmyadmin

Установщик спросит вас, какой веб-сервер будет использоваться для работы программы. Так как веб-сервер Nginx отсутствует в списке, в таком случае отмечать ничего не надо. Нажмите на клавишу Tab далее на Enter чтобы продолжить установку:

Io2OAAAAABJRU5ErkJggg==

Далее установщик предложит создать базу данных для phpMyAdmin, в которой будет находиться служебная информация программы и необходимые настройки, необходимо согласиться выбрав пункт Yes:

38SocTfbmRABQAAAABJRU5ErkJggg==

На следующем этапе необходимо придумать пароль для пользователя phpmyadmin, который будет использоваться программой для доступа к собственной базе данных:

zXBr2cA71mQASEyr7MGMhzdDsbGQdAxVAoyP69w+iMFL5OIwhnQAAAABJRU5ErkJggg==

Далее программа попросит вас повторить заданный ранее пароль:

yCQ4oXc1PdNOXBxIeZUUWgqRteXvwXT6xsgLs8V9gAAAAASUVORK5CYII=

После этого установка phpMyAdmin в Ubuntu завершена.

3. Настройка PhpMyAdmin в Nginx с помощью символической ссылки

Для того чтобы Nginx смог правильно открыть phpMyAdmin, необходимо выполнить следующие действия. Для начало настройте PHP-FPM для обслуживания веб-приложений или сайтов на основе PHP в файле конфигурации /etc/php/7.4/fpm/php.ini.

sudo nano /etc/php/7.4/fpm/php.ini

Найдите пункт cgi.fix_pathinfo = 1 и измените его значение на 0 чтобы получилось cgi.fix_pathinfo = 0:

xcnaHw2lFU8ZwAAAABJRU5ErkJggg==

Для получения доступа к веб-интерфейсу phpMyAdmin, необходимо создать символическую ссылку на каталог с файлами PhpMyAdmin в каталог вашего веб-сервера. По умолчанию в Ubuntu веб-сервер получает файлы из /var/www/html. Для этого используйте команду:

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

Поскольку индексный файл phpMyAdmin имеет расширение .php, убедитесь, что вы добавили его в список индексных файлов, в файле конфигурации сервера или виртуального хоста. Например, файле default который находится по пути /etc/nginx/sites-available/default или /etc/nginx/conf.d/ открыв файл в любом текстовом редакторе:

sudo nano /etc/nginx/sites-available/default

Найдите строку, содержащую комментарий # Add index.php to the list if you are using PHP и добавьте index.php в строку ниже:

 

После внесения изменений перезапустите Nginx, чтобы применить внесенные изменения:

sudo systemctl restart nginx

После выполнения данных действий, phpMyAdmin будет доступен по адресу ip_вашего_сервера/phpmyadmin. Вы можете проверить, всё ли работает, просто открыв этот адрес в браузере:

HeeckAAAAASUVORK5CYII=

4. Настройка Nginx для PhpMyAdmin с помощью root

Это альтернативный способ настройки Nginx. Для его работы вам достаточно добавить код ниже в конфигурацию любого виртуального хоста. Например, того же /etc/nginx/sites-enabled/default:

sudo nano /etc/nginx/sites-enabled/default

location /phpmyadmin {
  root /usr/share/;
  index index.php index.html index.htm;

  location ~ ^/phpmyadmin/(.+\.php)$ {
    try_files $uri =404;
    root /usr/share/;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
  }

  location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
    root /usr/share/;
  }
}

Для location /phpmyadmin устанавливается корневая папка /usr/share где находятся файлы PhpMyAdmin. Этот способ использовать предпочтительнее, поскольку именно с ним вы сможете настроить авторизацию. После внесения изменений проверьте конфигурацию Nginx и перезапустите веб-сервер:

sudo nginx -t

sudo systemctl restart nginx

5. Настройка Nginx для PhpMyadmin с помощью alias

Если вы хотите задать для PhpMyAdmin свой путь, предыдущий вариант работать не будет. Но вы можете использовать другой вариант конфигурации, основанный на директиве alias:

sudo nano /etc/nginx/sites-available/default

location /phpmyadminff {
  alias /usr/share/phpmyadmin/;

  location ~ /(libraries|setup) {
    return 404;
  }
  location ~ ^/phpmyadminff/(.*\.php)$ {
    alias /usr/share/phpmyadmin/$1;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
  }
  location ~* ^/phpmyadminff/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
    alias /usr/share/phpmyadmin/$1;
  }
}

Здесь аналогично предыдущему пункту вам необходимо сохранить изменения, проверить конфигурацию веб-сервера и перезапустить Nginx.

6. Создание пользователя для phpMyAdmin

По умолчанию, вы не сможете авторизоваться в phpMyAdmin от пользователя root, потому что данная особенность отключена. В целях безопасности включать данную опцию не рекомендуется. В данном случае необходимо создать нового пользователя и наделить его полномочиями root. Для создания нового пользователя перейдите в консоль MySQL введя команду в терминале:

sudo mysql -u root -p

После ввода пароля root пользователя MySQL, введите следующие команды:

CREATE USER 'test'@'localhost' IDENTIFIED BY 'пароль';

GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost';

FLUSH PRIVILEGES;

При помощи первых двух команд был создан новый пользователь с именем test, ему был присвоен пароль и предоставлены все возможные привилегии (такие как создание, удаление, редактирование баз данных, таблиц и т.д.). Третья команда обновляет заданные ранее привилегии.

69I1UrJbwAAAAASUVORK5CYII=

Теперь необходимо авторизоваться в phpMyAdmin при помощи созданного пользователя:

AeTH1WMtAt4KAAAAAElFTkSuQmCC

7. Защита phpMyAdmin

Если phpMyAdmin установлен на производственном сервере, который доступен из сети, то его необходимо обезопасить, добавив авторизацию.

Чтобы добавить аутентификацию, необходимо создать файл для хранения учетных записей, которые будут использоваться для аутентификации. В Nginx пароли шифруются при помощи встроенной функции crypt. Для шифрования паролей будет использоваться пакет OpenSSL, который уже должен быть установлен на вашем сервере. Для проверки на наличии данной программы введите в терминале команду openssl:

lMkdERaHRNWPp+MV2HTJSF0rlscOWGeopiH6aN8FsURvrZ+eDpXYzYQLcPDIL1QAx+FNS5vJfC0URl6Sv9vsLHMzWbPqCFLDLTC8Y1IsNM0tkw9k6IbqVCCcN3X5vYPy7NDaMcWeiEznFV58KSb2lQvmVKKk9XeAlJ7pSNGH77P5F8dkS7B8eYAAAAAElFTkSuQmCC

Если пакет у вас присутствует, то приглашение командной строки изменится на OpenSSL. Если пакет у вас отсутствует, установите его при помощи команды:

sudo apt -y install openssl

Для создания зашифрованного пароля введи в терминале команду:

openssl passwd

8CEspEja0B6z8AAAAASUVORK5CYII=

На первом этапе вам будет предложено придумать и ввести пароль. После его ввода его необходимо ввести еще раз. Далее утилита отобразит зашифрованную версию пароля. Скопируйте значение, которое получилось на выходе, так как оно будет использоваться далее. Теперь создайте файл аутентификации. Для примера назовем этот файл pma_pass и поместим его в каталог конфигурации Nginx:

sudo nano /etc/nginx/pma_pass

В этом файле укажите имя пользователя, которое будет использоваться для аутентификации, далее поставьте символ двоеточие (:), и вставьте зашифрованную версию пароля, которую вы получили на выходе от команды openssl passwd. В итоге файл должен быть приведен к следующему виду:

wt8TtjDYQQB9QAAAABJRU5ErkJggg==

Здесь test1 это имя пользователя, которое будет использоваться для аутентификации, а avltQWsa5wSSw – зашифрованный пароль который вы получили от команды openssl passwd.

 

Сохраните и закройте файл. Теперь необходимо прописать настройки аутентификации. В качестве настройки будет использовать конфигурационный файл по умолчанию, который находиться в /etc/nginx/sites-available. Откройте данный файл для редактирования при помощи любого текстового редактора:

sudo nano /etc/nginx/sites-available/default

Найдите директиву server и в нем блок location, который вы создали для PhpMyAdmin на шаге 4 или 5 и добавьте в него такие строчки:

auth_basic "Admin Login";
auth_basic_user_file /etc/nginx/pma_pass;

 

Где auth_basic – сообщение, которое будет отображаться при аутентификации. Можно написать все что угодно. А в auth_basic_user_file – указывается путь до файла содержащий логин и пароль. Если вы использовали вариант со символической ссылкой, то сделать авторизацию только для PhpMyAdmin не получится. После внесения изменений сохраните и закройте файл.

Всегда, как только вы внесли какие-либо изменения в конфигурационные файлы Nginx, запускайте команду для проверки файлов на наличие ошибок:

sudo nginx -t

Если в выводе команды отобразились следующие строчки:

x9VibUsG1t8kgAAAABJRU5ErkJggg==

Это означает что ошибок нет. В противном случае будет выведен текст с ошибкой, а также указан номер строки, в которой была обнаружена ошибка. Далее перезапустите веб-сервер nginx:

sudo systemctl restart nginx

После перезапуска перейдите по адресу ip адрес/имя сервера/phpMyAdmin и вы увидите окно с авторизацией, где необходимо ввести ранее созданный логин и пароль:

8DLiK2JxgnwUcAAAAASUVORK5CYII=

Как удалить phpMyAdmin с Ubuntu

Чтобы удалить phpMyAdmin, необходимо выполнить команду:

sudo apt purge phpmyadmin

Команда purge позволяет удалить не только пакеты, но и их конфигурационные файлы. Если вы хотите оставить конфигурационные файлы, используйте команду remove.

Выводы

В этой небольшой статье мы рассмотрели, как выполняется установка и настройка phpMyAdmin в операционной системе Ubuntu 20.04. Как видите, всё стало намного проще, чем в предыдущих версиях, когда нам нужно было вручную включать различные модули и настраивать местоположение файлов программы.

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: