🐹 Apache и Nginx: Установка phpMyAdmin.

Содержание:

1. Введение.
2. Подготовка web-сервера apache.
3. Установка phpmyadmin.
4. Установка на nginx.
5. Настройка phpmyadmin.
6. Оригиналы источников информации.


1. Введение.

Для чего может пригодиться phpMyAdmin:

  1. Создание новых баз и пользователей, назначение прав.
  2. Экспорт или импорт баз не очень большого объема, до 50-ти мегабайт.
  3. Просмотр содержимого баз данных или информации о них.

Приступим к простой установке phpMyAdmin на CentOS 7.

2. Подготовка web-сервера apache.

Если на голом сервере выполнить:

# yum -y install phpmyadmin

Вы увидите полный список зависимостей, но в нем не будет самого web-сервера и интерпретатора php, только его модули. Web-сервер вам нужно предварительно установить и настроить самим.

Сделаем это на примере web-сервера httpd (Apache).

# yum install -y httpd

Теперь установим php, без него панель администрирования не заработает:

# yum install -y php

Запускаем web-сервер, добавляем его в автозагрузку и проверяем работу:

# systemctl enable httpd
# systemctl start httpd

Заходите по адресу http://ваш-ip-адрес.

Вы должны увидеть тестовую страницу Apache.

Теперь проверим, работает ли php. Создаем тестовую страничку в папке /var/www/html:

# mcedit /var/www/html/index.php

<?php phpinfo(); ?>

Назначаем владельца Apache на созданный файл:

# chown -R apache:apache /var/www/html/index.php

Теперь снова заходим по адресу http://ip-адрес-сервера, вы должны увидеть вывод phpinfo:

Если видите такой же вывод, значит все в порядке, web-сервер готов для работы с phpMyAdmin. Приступаем к его установке.

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

Перед установкой phpMyAdmin установите PHP по инструкции «CentOS 7: Установка PHP».

Устанавливаем phpMyAdmin со всеми зависимостями:

# yum install -y phpmyadmin

После установки в каталоге с конфигурациями httpd /etc/httpd/conf.d появляется файл phpMyAdmin.conf. Сохраним сразу на всякий случай оригинальный файл, перед тем как начать его редактировать:

# cp /etc/httpd/conf.d/phpMyAdmin.conf /etc/httpd/conf.d/phpMyAdmin.conf.orig

По-умолчанию, в конфиге закрыт доступ к панели управления для всех адресов, кроме 127.0.0.1. Чтобы открыть доступ для всех, приведите файл к следующему виду:

# mcedit /etc/httpd/conf.d/phpMyAdmin.conf

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
Require all granted
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
Require all granted
</Directory>

<Directory /usr/share/phpMyAdmin/libraries/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
Order Deny,Allow
Deny from All
Allow from None
</Directory>

Я удалил все лишнее из файла, в том числе настройки, которые относились к версии apache 2.2.

Перезапускаем httpd:

# systemctl restart httpd

Заходим по адресу http://ip-адрес-сервера/phpmyadmin.

Вы должны увидеть страницу логина:

Если у вас некуда подключаться, установите MariaDB.

Подробнее все описано в инструкции «CentOS 7: Установка и настройка MariaDB»

# установка MariaDB

Сейчас быстро ставим базу данных и запускаем ее по инструкции.

После этого можно еще раз открыть web-интерфейс phpMyAdmin и зайти под учетной записью root от системы базы данных. Откроется главная страница панели с общей информацией о сервере:

На этом установка закончена, web-панелью можно пользоваться. Некоторые полезные настройки мы рассмотрим далее в соответствующем разделе, а сейчас установим phpMyAdmin на веб сервере nginx.

4. Установка на nginx.

Настроим работу phpMyAdmin  на web-сервере nginx + php-fpm.  Рассмотрим общий случай быстрой и простой настройки phpMyAdmin на nginx.

Устанавливаем nginx:

# yum install -y nginx

Устанавливаем php-fpm:

# yum install -y php-fpm

Запускаем службы и добавляем в автозагрузку:

# systemctl start nginx.service
# systemctl enable nginx.service
# systemctl start php-fpm.service
# systemctl enable php-fpm.service

Заходим по адресу http://ip-адрес-сервера и проверяем. Вы должны увидеть тестовую страницу nginx:

Дальше устанавливаем phpMyAdmin на web-сервер с nginx:

# yum install -y phpmyadmin

Редактируем конфигурационный файл nginx для добавления установленной web-панели управления:

# mcedit /etc/nginx/nginx.conf

Приводим секцию server {} к следующему виду:

server {
         listen 80 default_server;
         listen [::]:80 default_server;
         server_name _;
         root /usr/share/nginx/html;
         index index.php index.html index.htm;

         location ~ \.php$ {
         fastcgi_pass 127.0.0.1:9000;
         fastcgi_index index.php;
         include fastcgi_params;
         fastcgi_param SCRIPT_FILENAME $request_filename;
         fastcgi_ignore_client_abort off;
         }

         include /etc/nginx/default.d/*.conf;

         location / {
         }

         error_page 404 /404.html;
         location = /40x.html {
         }

         error_page 500 502 503 504 /50x.html;
         location = /50x.html {
         }
}

Я взял стандартные параметры и добавил несколько новых строк для корректной работы. Теперь нам нужно сделать символьную ссылку (сим линк) из папки со скриптами phpmyadmin в корневой каталог web-сервера nginx:

# ln -s /usr/share/phpMyAdmin /usr/share/nginx/html/phpmyadmin

Перезапускаем nginx:

# systemctl restart nginx

Дальше по идее все должно работать, но у меня не работало, пришлось перезагрузить весь сервер, так как не работал модуль php mbstring, хотя он установлен и подключен. Перезапуск php-fpm тоже не помогал, а перезагрузка помогла. Проверил 2 раза, оба раза воспроизвел ошибку. Разбираться не стал в чем причина такого поведения, просто перезагрузите сервер и продолжайте.

Идем по адресу http://ip-адрес-сервера/phpmyadmin. Должны увидеть стандартную страницу входа. У меня на ней было предупреждение:

Warning in ./libraries/session.inc.php#105
session_start(): open(/var/lib/php/session/sess_j0r4moac0oo7oh250e6t14rn1kfkl6ta, O_RDWR) failed: No such file or directory (2)

Это связано с тем, что в папке /var/lib/php нет директории session.

Исправляем это:

# cd /var/lib/php/
# mkdir session
# chown apache:apache session/

Обращаю внимание на то, что я назначил владельцем папки с сессиями пользователя apache, хотя у нас web-сервер nginx. Это связано с тем, что php-fpm по-умолчанию работает под пользователем apache. Логичнее изменить это и запускать его от nginx. Для этого надо отредактировать файл /etc/php-fpm.d/www.conf, изменив там параметры user и group. Я не стал этого делать сейчас для простоты. Оставляю данный параметр на ваше усмотрение.

Перезагружаем страницу, ошибка должна исчезнуть. Можно подключиться к mysql. Если сервер баз данных у вас не установлен, смотрите выше, как быстро его поставить и запустить. На этом установка закончена, рассмотрим несколько полезных настроек phpmyadmin.

5. Настройка phpMyAdmin.

Phpmyadmin готов к работе сразу после установки, дополнительные настройки не обязательны.

Приведу полезный пример при использовании — ограничение доступа к phpMyAdmin средствами web-сервера. Для использования панели необходимо будет не только знать имя учетной записи mysql, но и пользователя и пароль для доступа непосредственно к панели.

Рассмотрим сначала пример с web-сервером Apache. Будем использовать стандартное средство для ограничения доступа к каталогу с помощью .htaccees.

Создадим такой файл в папке со скриптами phpMyAdmin :

# mcedit /usr/share/phpMyAdmin/.htaccess

AuthName "Enter Password"
AuthType Basic
Require valid-user
AuthUserFile "/usr/share/phpMyAdmin/.htpasswd"

Теперь создадим файл с авторизационными данными:

# htpasswd -bc /usr/share/phpMyAdmin/.htpasswd user password

  • user — имя пользователя;
  • password — пароль.

Чтобы авторизация заработала, необходимо в файле /etc/httpd/conf.d/phpMyAdmin.conf в разделе Directory добавить параметр AllowOverride, чтобы получилось вот так:

<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
Require all granted
AllowOverride All
</Directory>

Перезапускаем Apache и проверяем настройку. При обращении по адресу web-панели, должно выскочить окошко с авторизацией:

Проделаем то же самое на nginx. Так же создаем файл с паролем .htaccess:

# htpasswd -bc /usr/share/phpMyAdmin/.htpasswd user password

Если у вас на сервере не установлен httpd, то скорее всего вы увидите ошибку:

-bash: htpasswd: command not found

Необходимой утилиты нет в системе. Установим htpasswd на сервер:

# yum install -y httpd-tools

Снова создаем файл с паролем:

# htpasswd -bc /usr/share/phpMyAdmin/.htpasswd user1 password

Adding password for user user1

Отредактируем конфигурационный файл nginx, добавив в секцию server {} новый location:

location /phpmyadmin/ {
auth_basic "Enter password";
auth_basic_user_file /usr/share/phpMyAdmin/.htpasswd;
}

Сохраняете конфиг, перезапускаете nginx и проверяете доступ к странице. Должно выскочить такое же, как и с apache, окно авторизации.

Рассмотрим еще несколько полезных настроек phpmyadmin.

После входа в панель, в разделе Настройки вы увидите сообщение:

Теперь можно идти в настройки и изменять их. Я обычно отключаю проверку новой версии. Они выходят достаточно часто, обновлять мне все равно их лень, поэтому информация о новых версиях мне не нужна. Так же отключаю логотип, можно загрузить свой. Сами полистайте настройки, посмотрите, что вам интересно. Все пункты неплохо задокументированы, можно почитать за что отвечают. Иногда бывает полезно вывести отдельный столбец в списке таблиц с информацией по дате создания и обновления. Это настраивается в разделе Настройки -> Основная панель -> Структура базы данных.

Если вы хотите подключиться к удаленному mysql серверу с помощью phpmyadmin, воспользуйтесь скриптом настройки подключения по адресу http://ip-адрес-сервера/phpmyadmin/setup/.

6. Оригиналы источников информации.

  1. serveradmin.ru «Установка phpmyadmin на CentOS 7» от 27.10.2017.