phpmyadmin на виртуальном хосте

Иногда требуется запустить phpmyadmin на виртуальном хосте. Базовая система, на которой будет развернут сервер Apache, сервер баз данных MariaDB и непосредственно phpmyadmin, это Ubuntu 24.04.

Установка необходимых пакетов

После установки Ubuntu 24.04 сделаем апгрейд системы и установим необходимые пакеты

sudo apt update && sudo apt upgrade -y
sudo apt install apache2 mariadb-server php php-mysql php-mbstring php-zip php-gd php-json php-curl -y
sudo systemctl enable --now apache2 mariadb

Базовая настройка MariaDB

Настройте MariaDB: sudo mysql_secure_installation для базовой безопасности.

sudo mysql_secure_installation

Установка и интеграция phpMyAdmin

Установим phpmyadmin

sudo apt install phpmyadmin -y

Отключим конфигурацию созданную по умолчанию

sudo a2disconf phpmyadmin

Создание виртуального хоста

Создадим файл конфигурации виртуального хоста

sudo nano /etc/apache2/sites-available/phpmyadmin.conf
<VirtualHost *:80>
ServerName phpmyadmin.somehost.ladm.lazyadmin.ru

ServerAdmin webmaster@localhost
DocumentRoot /usr/share/phpmyadmin/

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/phpmyadmin>
Options Indexes SymLinksIfOwnerMatch FollowSymLinks
DirectoryIndex index.php
AllowOverride All
Require all granted
</Directory>

<Directory /usr/share/phpmyadmin>
Options Indexes SymLinksIfOwnerMatch FollowSymLinks
DirectoryIndex index.php

<IfModule mod_php7.c>
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
</IfModule>

# PHP 8+
<IfModule mod_php.c>
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/usr/share/doc/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/:/usr/share/javascript/
</IfModule>

AllowOverride All
Require all granted

</Directory>

<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
</VirtualHost>

Активируем добавленную конфигурацию и перезагрузим apache

sudo a2ensite phpmyadmin
sudo systemctl reload apache2

Проанализируем логи на предмет ошибок

tail -f /var/log/apache2/error.log

Если ошибок в логах нет и phpmyadmin нормально загружается в браузере, пропускаем следующий этап.

Если phpmyadmin на виртуальном хосте не запустился, нужно проверить /var/log/apache2/error.log на наличие ошибок. Может случится что без переназначения прав на папки bootstrap, jquery и phpmyadmin, там много символических ссылок, из-за чего apache может ругатся. Помогает установка прав пользователя от которого запущен apache на эти папки

sudo chown -R www-data:www-data /usr/share/phpmyadmin/
sudo chown -R www-data:www-data /usr/share/bootstrap-html/
sudo chown -R www-data:www-data /usr/share/javascript/

Используйте эти команды только если в логах явно видно ошибки доступа (Permission denied к файлам/каталогам). Не запускайте chown -R без понимания последствий.”

открываем в браузере

phpmyadmin.somehost.ladm.lazyadmin.ru

DNS сервер должен знать о существовании этого адреса, вносим соответствующие записи на сервере или прописываем в хостах

Если внутри сети используется DNS сервер, то нужно будет внести соответствующую A запись, иногда достаточно будет сделать CNAME

A запись

sudo samba-tool dns add 10.0.0.254 ladm.lazyadmin.ru phpmyadmin.somehost A [ip_address_somehost] -U Administrator

CNAME

sudo samba-tool dns add 10.0.0.254 ladm.lazyadmin.ru phpmyadmin.somehost CNAME somehost.ladm.lazyadmin.ru -U Administrator

Запись в файле hosts

[ip_address_somehost] phpmyadmin.somehost.ladm.lazyadmin.ru