Использование phpmyadmin в связке с nginx

После настройки связки nginx+php-fpm вам может потребоваться phpmyadmin для управления базами данных MySQL. Наиболее распространённая практика — доступ через алиас. Чуть реже — поддомен. Рассмотрим первый вариант.

В первую очередь следует установить сам phpmyadmin незамысловатой командой:

# aptitude install phpmyadmin

Во время установки будет задано два вопроса. Первый — выполнить ли автоматическую настройку для веб-серверов apache и lighttpd. Второй — следует ли настраивать конфигурацию phpmyadmin посредством db-config.

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

Далее открываем конфигурационный файл nginx и приписываем к нужному сайту следующий location:

location /pma/ {
  alias /usr/share/phpmyadmin/;
  location ~ \.php$ {
    fastcgi_pass unix:/var/run/php-pool-name.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $request_filename;
    fastcgi_ignore_client_abort off;
  }
  location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    access_log    off;
    log_not_found    off;
    expires 1M;
  }
}

Локейшену следует присвоить какое-нибудь уникальное имя, чтобы туда не стучались боты.

Также в качестве значения параметра fastcgi_pass прописываем адрес пула php (tcp или socket, в зависимости от настройки вашего сервера).

Напоследок добавляем исключения open_basedir для каталогов /usr/share/phpmyadmin и /usr/share/php/php-gettext. Тут возможны два варианта. Первый из них (предпочтительный) — это параметр в конфигурационном файле пула:

php_admin_value[open_basedir] ="/usr/share/phpmyadmin:/usr/share/php/php-gettext"

Второй вариант — в вышеописанном location добавить строку:

fastcgi_param PHP_ADMIN_VALUE "open_basedir=/usr/share/phpmyadmin:/usr/share/php/php-gettext";

После редактирования конфигурационных файлов следует перезапустить nginx и php-fpm.

Как вы оцените статью?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (9 оценок, среднее: 3,56 из 5)
Загрузка...

6 Комментарии “Использование phpmyadmin в связке с nginx

  1. администратор сайта, здравствуйте, как вы могли уже заметить у меня каждая первая буква слова почему то пишется автоматически заглавной. наткнулся на ваш сайт только сегодня, нашел очень много хорошо описанных статей. Но конкретно по этой статье сделать phpmyadmin не смог, здесь отсутствует указание о том что надо добавить символическую ссылку на директорию /usr/share/phpmyadmin. без неё phpmyadmin не работал. мне кажется что эта статья не полная, в отличии от остальных, написанных вами. поэтому оценил только на 3. но в целом статьи на сайте очень полезны, особенно для новичков, как я, все очень хорошо написано и подробно объяснено. добавил в избранное ваш сайт, нашел много полезной информации, которой неприменно воспользуюсь для развития своего проекта! выражаю большую благодарность!

    1. Да, спасибо. Поправил css.
      А вот насчёт ссылки сомневаюсь. Куда ей ссылаться, если алиас в конфиге nginx ведёт прямо в папку phpmyadmin? Буду признателен, если дополните, как именно вы решили проблему, т.к. слабо представляю вашу ситуацию. У меня этот конфиг работает. :/

      1. Я совсем запутался, поставил Ваш конфиг для location /pma/ и все работает, даже проблемы с редиректом при cgi.fix_pathinfo 0 нет. До этого наткнулся на решение проблемы с редиректом на этом сайте http://www.samundra.com.np/use-phpmyadmin-with-nginx-and-php7/1374 . Первый раз когда следовал Вашим инструкциям не добавил в конфиг «include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename;» (не знаю что делают эти два параметра), а без них как я теперь понял алиас в конфиге работать не будет, собственно, затем попробовал создать символьную ссылку и наткнулся на проблему с неправильным редиректом на phpmyadmin. В общем, из за непонимания того как и зачем работают параметры в конфиге nginx я не смог выполнить инструкции простого гайда))
        Есть один вопрос: У меня всего два параметра в location ~ \.php$ {include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php5-fpm.sock;} Следует ли мне сделать его как в вашей статье nginx+php-fpm готовый конфиг? Заранее Спасибо!

        1. Отличие методов в том, что по приведённой ссылке папка /usr/share прописана, как корневая: root /usr/share/;. При этом, нельзя никак изменить название локейшена /phpmyadmin. В отличие от примера здесь, когда локейшн с любым именем, хоть /asdasd становится алиасом к папке /usr/share/phpmyadmin. Таким образом, можно защитить PMA от всяких ботов. :)

          Конечно, в случае, алиаса следует прописывать именно fastcgi_param SCRIPT_FILENAME $request_filename;, место стандартного fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;.

          Описание переменных можно найти тут: https://nginx.org/ru/docs/varindex.html.

          А конфигурацию с include snippets/fastcgi-php.conf можно оставить, как есть. Инструкция была написана ещё на примере Debian 7, где всё сделано не так удобно. В fastcgi-php.conf представлена более правильная конфигурация со строкой fastcgi_split_path_info ^(.+\.php)(/.+)$;. Хотя, работать может и по старой инструкции. :)

          1. rusadmin, спасибо большое за такое подробное объяснение. Виноват в своей неграмотности, уже жалею что оценил статью на 3. Есть куча статей и никогда не знаешь можно ли доверять автору и просто копипастить, не знаешь каков будет результат и не приведет ли тебя к еще большему количеству ошибок, по этому предпочитаю делать сначала минимальные конфигурации пока не разберусь во всем сам и не буду уверен что данный способ для меня оптимальный. Но теперь научился)) Сайт отличный. спасибо!

          2. Не за что. :) А подход правильный. Действительно, некоторые даже не пробуют на деле то, что пишут в статьях. Лишь бы набрать трафик. Потому и появился этот блог, чтобы записать, что работает.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *