Рассмотрим как установить и настроить последнюю версию PhpMyAdmin для PHP 5.6.30 в системе CentOS 7 из исходных данных. Web сервер работает под управлением Nginx. Пожалуй это самый востребованный сервис для веб разработчиков.

Введение

В статье NGINX на web сервер CentOS 7 мы установили базу данных MariaDB работающую с PHP 5.6.30. Осталось настроить удобную систему управления с разграничением доступа к базам данных.

Установить PhpMyAdmin стандартной командой yum install phpmyadmin не получится в связи с конфликтом Ошибка: php56w-common conflicts with php-common-5.4.16-42.el7.x86_64. Можно установить версию php 5.4, которая стандартно ставится в CentOS 7, потом установить PMA и обновить до версии 5.6.30 php. Управления базами будет работать, но не весь функционал. Меня это не устраивает.

Устанавливать будем с официального сайта PhpMyAdmin, где вы всегда сможете взять последнюю версию.
Перейти на сайт

Создание структуры каталогов

Создадим необходимую структуру каталогов:

mkdir -p /web/sites/pma.sevo44.ru/logs

Выполнив эту команду мы создали структуру каталогов:

  • web  — общая папку для всех файлов web сервера,
  • sites — папка в которой будет находится все наши виртуальные хосты,
  • log — папка куда будем писать все логи.

В последствии в папке хоста мы создадим папку www, где будут лежать непосредственно сами данные.

Скачивание и распаковка архива

Для загрузки файлов через консоль установим необходимый пакет:

yum -y install wget

Перейдем в необходимую папку и скачаем туда нужную версию, выполнив по очереди команды:

cd /web/sites/pma.sevo44.ru
wget https://files.phpmyadmin.net/phpMyAdmin/4.6.6/phpMyAdmin-4.6.6-all-languages.zip

Установим без вопросов пакет который нам даст возможность распаковать архивы zip:

yum install -y unzip

Распакуем полученный архив в необходимое место:

unzip /web/sites/pma.sevo44.ru/phpMyAdmin-4.6.6-all-languages.zip -d /web/sites/pma.sevo44.ru/

Переименуем папку phpMyAdmin-4.6.6-all-languages в www:

mv /web/sites/pma.sevo44.ru/phpMyAdmin-4.6.6-all-languages /web/sites/pma.sevo44.ru/www

Дадим необходимые права для Nginx на все папки и файлы:

chown -R nginx:nginx /web/sites/pma.sevo44.ru

Все данные готовы! Дальше необходимо настроить Nginx для нашего виртуального хоста.

Настройка Nginx для PhpMyAdmin

Для начала нам необходимо определится с доменным именем, на котором поддоменом будет работать наша система управления базами данных. В нашем случае используется домен sevo44, где по адресу pma.sevo44.ru и будет работать PhpMyAdmin.

Конфигурационный файл pma.conf, для домена третьего уровня создаем в папке /etc/nginx/conf.d/ со следующим содержанием:

mcedit /etc/nginx/conf.d/pma.conf
= необходимые данные для внесения =
# pma.sevo44.ru
server {
# Работать будет по http
listen 80;
# Адрес для браузера
server_name pma.sevo44.ru;
# Путь к файлам
root /web/sites/pma.sevo44.ru/www/;
index index.php index.html index.htm;
# Место хранения логов
access_log /web/sites/pma.sevo44.ru/log/access.log main;
error_log /web/sites/pma.sevo44.ru/log/error.log;

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /web/sites/pma.sevo44.ru/www/;
fastcgi_param SCRIPT_FILENAME /web/sites/pma.sevo44.ru/www$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /web/sites/pma.sevo44.ru/www$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}

Проверим на правильность настройки и перезагрузим Nginx:

nginx -t
= вывод команды =
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl reload nginx.service

Настройка ротации логов

Ротация это архивирование логов для экономии места и удобства работы с ними. Позднее я опишу подробнее как это настраивать а сейчас лишь покажу как это просто делается с базовыми настройками удовлетворяющими практически любой сайт.

Все файлы правил для ротации находятся в папке /etc/logrotate.d. добавим туда необходимый нам файл с нужными параметрами:

mcedit /etc/logrotate.d/pma-sevo44
= необходимые данные для внесения =
/web/sites/pma.sevo44.ru/log/*.log {
 daily
 missingok
 rotate 52
 compress
 delaycompress
 notifempty
 create 640 nginx adm
 sharedscripts
 postrotate
 if [ -f /var/run/nginx.pid ]; then
 kill -USR1 `cat /var/run/nginx.pid`
 fi
 endscript
}

Сохраним и применим изменения без перезагрузки:

logrotate /etc/logrotate.conf

По такому принципу настраивается ротация для любых данных, но обычно этот механизм настраивают для логов, хотя он может работать и с другими файлами.

Создание папки для хранения сессий PHP

Без создания этой папки с необходимыми правами для Nginx, данные не будут обрабатываться, о чем будет показывать страница с ошибкой при попытке зайти по адресу http://pma.sevo44.ru.

phpMyAdmin — Error

 Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.

session_start(): open(SESSION_FILE, O_RDWR) failed: No such file or directory (2)

Создадим необходимую папку с нужными правами:

cd /var/lib/php/
mkdir session
chown nginx:nginx session/

Предварительная подготовка закончена и осталось лишь настроить сам PhpMyAdmin.

Создание файла config.inc.php для PhpMyAdmin

Вариантов создать файл настроек несколько:

  • Переименовать файл config.sample.inc.php в config.inc.php и отредактировать параметры под свои нужды,
  • Средствами самого PMA войдя в панели управления под root.

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

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

PhpMyAdmin необходимость настройки

Вначале разберемся с первым сообщением. Как и написано переходим в любую базу. Выберем базу mysgl в меню слева.

PhpMyAdmin создание хранилища

Жмем «Узнать причину» почему нет хранилища.

PhpMyAdmin создание хранилища2

Нажимаем «Создать» и выполнятся все необходимые действия.

PhpMyAdmin создание хранилища

Теперь непосредственно создадим средствами панели управления PhpMyAdmin файл настроек config.inc.php.

Переходим по меню сверху «Настройки» и видим блок.

PhpMyAdmin создание файла настроек

Нажимаем «Скрипт настройки»

Создаем сервер localhost, выбираем язык, и конец строки. Можете пройтись по остальным настройкам и указать всё на свой вкус и цвет.

PhpMyAdmin скрипт настроек

Смотри результат настроек.

PhpMyAdmin скрипт настроек2

Скачиваем себе файл, закидываем в корневую папку PhpMyAdmin. Откроем посмотреть как он выглядит:

cat /web/sites/pma.sevo44.ru/www/config.inc.php
= вывод команды с пояснениями =
<?php
/*
 * Generated configuration file
 * Generated by: phpMyAdmin 4.6.6 setup script
 * Date: Tue, 28 Mar 2017 05:01:04 +0000
 */

/* Servers configuration */
$i = 0;

/* Server: localhost [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = '';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';

/* End of servers configuration */

$cfg['DefaultLang'] = 'ru';
$cfg['ServerDefault'] = 1;
$cfg['blowfish_secret'] = '"_uz+-/r$U;z,7sB]eU"73?G"V2#5Map';
#Можете создать папки для загрузки.сохранения и указать в строчках ниже 
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
?>

Последнее что нам осталось сделать, это дать права Nginx для этого файла:

chown nginx:nginx /web/sites/pma.sevo44.ru/www/config.inc.php

Настройка закончилась и теперь при попытке повторно создать этот файл будет выскакивать сообщение:

PhpMyAdmin запрет на настройку

Основные моменты работы с PhpMyAdmin

Для удобства разграничения прав лучше создавать базу с правами на одного пользователя.

Создадим пользователя со своей базой данных:

  • Выбираем «Учётные записи пользователей» — «Добавить учетную запись пользователя«,
  • Создаем имя, пароль и ставим галочку «Создать базу данных с таким же именем и предоставить на неё все привилегии.» и в самом низу нажимаем «Вперёд«

База с правами создана и теперь эти данные можете предоставить по требованию для работы с ней.

Имейте ввиду что данные пользователя прописываются в файлах сайта и при смене пароля не забывайте их менять!

Удаление пользователя с его базой данных выполняется аналогичным способом.

Результат

После всех выполненных действий мы получили последнюю стабильную версию PhpMyAdmin которая будет удобна и стабильна в работе. Мы получили один из самых главных инструментов для работы с web хостингом.

В следующей статье я расскажу как предоставить доступ по FTP для веб разработчиков которые смогут работать с файлами сайтов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Хотите сказать денежное спасибо? Подарите денежку!