Установка и настройка phpmyadmin: увеличение время сессии и https

PHPMyAdmin — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. *(wikipedia.org)
Думаю, это всем понятно. Рассмотрим, как его установить на CentOS и настроить.

1. Установка

Есть несколько вариантов установки:
а) отдельным доменом - т.е., к примеру, phpmyadmin.example.org.
б) или для всех Ваших доменов на этом сервере разом, с использованием "приставки" - т.е. "example.org/phpmyadmin", "mysite.ru/phpmyadmin" и т.д.
Рассмотрим второй вариант, как наиболее удобный для web-сервера. Устанавливать будем в /var/www, так как он должен быть доступен для всех хостов, но Вы можете менять путь как Вам угодно.

Итак, скачиваем последний дистрибутив в формате .bz2 с phpmyadmin.net. Обновляется он довольно часто, так что, если нашли какие-то ошибки в текущей версии, стоит проверить, не появилась ли уже новая.

Когда Вы нажимаете на ссылку нужного формата, например, phpMyAdmin-4.0.8-all-languages.tar.bz2, Вас перебрасывает на страницу загрузки (http://sourceforge.net/projects/phpmyadmin/files/...), где через 5 секунд браузер предлагает сохранить файл локально. Так как нам нужна ссылка для сервера, отменяем скачивание. Нажимаем правой кнопкой мыши на надпись direct link и выбираем "скопировать адрес ссылки". Теперь ссылка есть у нас в буфере.

Выполняем команду на сервере: wget, пробел и правой кнопкой мыши выбираем "Вставить". Должно получиться, что-то вроде этого:
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.8/phpMyAdmin-4.0.8-all-languages.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fphpmyadmin%2Ffiles%2FphpMyAdmin%2F4.0.8%2FphpMyAdmin-4.0.8-all-languages.tar.bz2%2Fdownload&ts=1381486612&use_mirror=citylan
P.S. Надеюсь, Вы работаете по ssh, а не в minimal установке через текстовый браузер. ^_^

Итак, скачали. Теперь у нас есть файл вида phpMyAdmin-4.0.8-all-languages.tar.bz2. Далее:

tar xjf phpMyAdmin-4.0.8-all-languages.tar.bz2
rm -rf phpMyAdmin-4.0.8-all-languages.tar.bz2
mv phpMyAdmin-4.0.8-all-languages.tar.bz2 /var/www/phpmyadmin

Всё, разархивированная папка на месте, перейдём к настройках apache. Хочу заметить, что неважно стоит ли он у Вас "впереди" или бэкендом. Всё будет работать!
Настраиваем нашу "приставку" к доменам. Положим файл настроек в httpd/conf.d, потому как это не хост. Напоминаю, что Вы можете сделать по своему:
nano /etc/httpd/conf.d/phpmyadmin.conf
и добавляем в него следующие настройки:

Alias /phpmyadmin "/var/www/phpMyAdmin"
<Directory /var/www/phpMyAdmin>
  AllowOverride All
  Order allow,deny
  Allow from all
  <IfModule mod_php5.c>
    php_admin_value open_basedir /var/www/phpMyAdmin/
    php_admin_value upload_tmp_dir /tmp
    php_admin_value session.save_path /tmp
    php_admin_value safe_mode off
  </IfModule>
</Directory>

То, что Вы указываете после слова "Alias" будет Вашей "приставкой". Можно написать что угодно, хоть "myRootPasswordIs123" и тогда phpmyadmin будет доступен по ссылке, к примеру, "mysite.ru/myRootPasswordIs123".

Сохраняем изменения, проверяем, что нигде не накосячили и перечитываем конфиги apache'а:

/etc/init.d/httpd configtest
/etc/init.d/httpd graceful

Проверяем!

P.S. Я специально ни слова не сказал про изменения прав, потому как должен работать, даже если папка принадлежит пользователю root. Если всё таки есть желание - можно сделать владельцем, к примеру, apache:
chown -R apache:apache /var/www/phpmyadmin/

2. Настройки phpmyadmin

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

cd /var/www/phpmyadmin/
cp config.sample.inc.php config.inc.php

Настройка №1. Теперь сделаем так, чтобы phpmyadmin не "выкидывал" нас из авторизованного пользователя, так быстро, как он это делает - т.е. увеличиваем время сессии. Для этого открываем файл настроек:
nano /var/www/phpmyadmin/config.inc.php
и добавляем строку, чтобы не запутаться сразу после <?php:
$cfg['LoginCookieValidity'] = 43200;
Это не всё. Теперь нужно рассказать php, что мы хотим так долго работать в phpmyadmin. Открываем файл:
nano /etc/php.ini
ищем строку session.gc_maxlifetime и устанавливаем ей тоже значение:
session.gc_maxlifetime = 43200
Отлично. Проверим, что всё хорошо и перечитаем конфиги apache'а:

/etc/init.d/httpd configtest
/etc/init.d/httpd graceful

Настройка №2. Так как для работы с phpmyadmin мы передаём пароль - лучше, чтобы соединение было "закрытым" - т.е. через https. Но есть проблема - у нас phpmyadmin настроен не как отдельный хост, а значит мы не можем поставить использование ssl соединения в директивах для apache'а и server {} для nginx'а - их просто нет. Для этих целей есть специальное решение.
Заходим в файл настроек phpmyadmin:
nano /var/www/phpmyadmin/config.inc.php
и вписываем строчку:
$cfg['ForceSSL'] = true;
Это принудительный перевод соединения phpmyadmin c http на https. Но! откуда же берётся ключ для него?!

Тут есть хитрость и "неудобность". Если Ваш web-сервер не умеет работать с технологией TLS SNI (например для CentOS 5 нет необходимой версии библиотеки openssl), то Phpmyadmin будет брать первый по алфавиту ключ для nginx или apache, в зависимости от того, "через что работает", и использовать его. Т.е., если у Вас есть три хоста "example.org", "mysite.ru" и "alexxkn.ru", то ключ (если таковые имеются для всех сайтов) будет браться от "alexxkn.ru". Это можно проверить в информации о сертификате в установленном закрытом соединении. Часто это доставляет массу неудобств, если Вам нельзя, например, светить другие имена доменов на сайте. Но тут ничего не поделать. Обновляйте ПО!

Ну а если умеет - то никаких проблем! Phpmyadmin будет использовать тот ключ, который использует впереди стоящий домен.

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image