Установка phpmyadmin centos 7. Подготовка web сервера apache. Как узнать свой IP-адрес

Phpmyadmin — популярный инструмент для управления через браузер базами данных mysql. Я почти всегда устанавливаю его на сервер, если там есть базы mysql. Мне он кажется наиболее простым и удобным средством управления. В статье опишу подробно процесс установки на web сервер apache и nginx.

Введение

Ранее я уже касался темы установки phpmyadmin в статье про . Сейчас хочу рассмотреть более подробно этот вопрос не только на nginx, но и традиционном apache (httpd).

Несколько слов о том, что же из себя представляет инструмент под названием phpmyadmin. Это набор php скриптов, которые устанавливаются на веб сервер. С их помощью можно подключиться к локальному или удаленному mysql серверу и управять им через веб браузер. Я чаще всего с помощью phpmyadmin делаю следующие операции:

  1. Создание новых баз и пользователей, назначение прав.
  2. Экспорт или импорт баз не очень большого объема, до 50-ти мегабайт. Если база большего объема, использую утилиты командной строки (mysqldump и mysql) для управления сервером БД.
  3. Просмотр содержимого баз данных или информации о них.

По сути, делаю практически все стандартные действия с базами данных. Без phpmyadmin можно обходиться, для самых простых конфигураций серверов (например голый zabbix сервер) мне хватает консольных утилит. Но если есть, к примеру, веб сервер с сайтами, я обязательно поставлю phpmyadmin. Мне так быстрее и удобнее.

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

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

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

# yum install phpmyadmin

Вы увидите полный список зависимостей, но в нем не будет самого веб сервера и интерпретатора php, только его модули. Веб сервер вам нужно предварительно установить и настроить самим. Сделем это на примере веб сервера httpd (апач). Устанавливаем его:

# yum install -y httpd

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

# yum install -y php

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

# systemctl enable httpd # systemctl start httpd

Заходите по адресу http://ip-адрес-сервер . Вы должны увидеть тестовую страницу апача. Теперь проверим, работает ли php. Создаем тестовую страничку в папке /var/www/html :

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

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

# chown apache. /var/www/html/index.php

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

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

Установка phpmyadmin

Устанавливаем 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 Require all granted Order Deny,Allow Deny from All Allow from None Order Deny,Allow Deny from All Allow from None

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

# systemctl restart httpd

Заходим по адресу . Вы должны увидеть страницу логина:

В этот момент я понял, что мне некуда логиниться. На тестовом сервере, где я готовлю статью, нет mysql. Если у вас та же ситуация, что у меня, установите mariadb. Подробно об я рассказал в статье, посвещенной настройке web-сервера, все подробности можете там посмотреть. Сейчас быстро ставим базу данных и запускаем ее:

# yum install -y mariadb mariadb-server # systemctl enable mariadb.service # systemctl start mariadb # /usr/bin/mysql_secure_installation

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

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

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

Настроим работу phpmyadmin на веб сервере nginx + php-fpm. Подробно вопрос настройки такого сервера я рассматривал ранее в статье . Там речь шла именно о веб сервере и уклон был в эту сторону. Но phpmyadmin может понадобиться не только на веб серверах. Так что рассмотрим общий случай быстрой и простой настройки 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:

# yum install -y phpmyadmin

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

# 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 { } }

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

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

Настройка phpmyadmin

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

Рассмотрим сначала пример с веб сервером apache . Будем использовать стандартное средство для ограничения доступа к каталогу с помощью.htaccees. Создадим такой файл в папке со скриптами phpmyadmin:

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

AddDefaultCharset UTF-8 Require all granted AllowOverride All

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

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

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

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

Bash: htpasswd: command not found

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

# 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. После входа в панель, в разделе Настройки вы увидите сообщение:

Ваши настройки будут сохранены только для текущей сессии. Для постоянного хранения требуется подключение модуля хранения настроек phpMyAdmin.

Подключим необходимый модуль для сохранения настроек. Модуль это громко сказано, нам всего лишь необходимо создать отдельную базу данных для хранения настроек и активации некоторых расширенных возможностей. Файл для создания базы данных хранится в директории phpmyadmin по адресу /usr/share/phpMyAdmin/sql/create_tables.sql . Копируем содержимое этого файла и выполняем его тут же, в phpmyadmin в разделе SQL:

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

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

Заключение

Я рассмотрел основные моменты по установке и настройке phpmyadmin на веб сервер apache и nginx. Хочу подчеркнуть, что это мой личный опыт. Возможно, я где-то ошибась или поступаю не совсем верно. Если вы заметите это, прошу написать в комментариях. Я приму к сведению и исправлю статью. Я пишу статьи в том числе и для того, чтобы самому научиться чему-то новому. Комментарии к статьям мне в этом помогают.

Помогла статья? Есть возможность автора

Видео

Предалагаю посмотреть видео всего процесса установки и настройки phpmyadmin на примере веб сервера apache.

Онлайн курс "Администратор Linux"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по.

Реляционные системы управления базами данных (СУБД), такие как MySQL и MariaDB, нужны для работы большинства сайтов и приложений. Однако не все пользователи умеют управлять такими СУБД при помощи командной строки.

Чтобы устранить эту проблему, был разработан phpMyAdmin – это альтернативный веб-интерфейс для работы с СУБД. В данном руководстве речь пойдёт об установке и защите phpMyAdmin на сервере CentOS 7. В качестве веб-сервера используется Apache – самый популярный веб-сервер в мире.

Требования

Чтобы создать надёжную основу для установки phpMyAdmin+Apache, нужно выполнить и добавить не-рутового пользователя с доступом к sudo.

1: Установка phpMyAdmin

К сожалению, стандартные репозитории CentOS 7 не содержат пакетов phpMyAdmin, потому нужно добавить репозиторий EPEL. EPEL (ExtraPackages for Enterprise Linux) предоставляет большое количество дополнительных пакетов, в том числе и phpMyAdmin.

Процесс добавления репозитория EPEL теперь очень прост. Для этого нужно установить пакет epel-release, который перенастраивает менеджер пакетов для использования EPEL.

Для этого введите:

sudo yum install epel-release

Итак, теперь репозиторий EPEL добавлен в текущую систему. Используйте менеджер пакетов yum, чтобы установить phpMyAdmin:

sudo yum install phpmyadmin

Обратите внимание: во время установки был добавлен конфигурационный файл Apache, содержащий все необходимые настройки. Его нужно немного отредактировать, чтобы подогнать под текущую систему.

Откройте файл в текстовом редакторе:

В нём находятся блоки каталогов с условной логикой, объясняющей политику доступа к каталогам. В целом, в файле определены два каталога, содержащие конфигурации, которые будут действительны как для Apache 2.2, так и для Apache 2.4 (который используется в этом руководстве).

В настоящее время эта установка запрещает все подключения, кроме подключений самого сервера. Для настройки удалённого доступа нужно указать IP-адрес локального компьютера.

Измените строку Require ip 127.0.0.1 (или Allow from 127.0.0.1), указав в ней IP-адрес локального компьютера.

Примечание : Чтобы узнать этот IP-адрес, читайте следующий раздел.

В целом, файл содержит 4 строки, которые нужно отредактировать:

. . .
Require ip your_IP_address
. . .
Allow from your_IP_address
. . .
Require ip your_IP_address
. . .
Allow from your_IP_address
. . .

Отредактировав файл, перезапустите Apache, чтобы обновить настройки.

Теперь phpMyAdmin готов к работе. Чтобы открыть интерфейс, введите в браузер доменное имя или внешний IP-адрес, а затем /phpmyadmin:

Чтобы войти, используйте учётные данные пользователя MariaDB. К примеру, можно использовать root-пользователя MariaDB и его пароль. Получив валидные учётные данные, phpMyAdmin откроет интерфейс администратора.

Как узнать свой IP-адрес?

Чтобы настроить удалённые подключения, нужно знать IP-адрес компьютера. Это мера предосторожности, запрещающая доступ к серверу посторонним пользователям.

Внимание : Это IP-адрес не виртуального сервера, а локальной машины!

Чтобы узнать IP-адрес, посетите один из этих сайтов в веб-браузере:

Сравните полученные результаты и убедитесь, что все они возвращают один и тот же адрес. Используйте полученный IP в конфигурационном файле.

2: Защита phpMyAdmin

На данном этапе phpMyAdmin полностью готов к использованию. Но установка веб-интерфейса открыла доступ к базе данных MariaDB, что представляет серьёзный риск для безопасности сервера.

Мы применим две основные стратегии для снижения риска взлома. Во-первых, нужно изменить местонахождение установки (сейчас это /phpmyadmin), чтобы исключить ботов, которые пытаются взломать сервер методом автоматизированного подбора пароля. Во-вторых, нужно создать дополнительный шлюз аутентификации на уровне веб-сервера Apache, который необходимо пройти, чтобы получить доступ к странице входа PhpMyAdmin.

Изменение адреса phpMyAdmin

Чтобы веб-сервер Apache мог корректно взаимодействовать с phpMyAdmin, в конфигурационном файле используется директива alias, задающая местонахождение файлов.

Чтобы изменить URL, по которому доступен phpMyAdmin, нужно просто изменить значение этой директивы. Откройте конфигурационный файл Apache для phpMyAdmin:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

В конце файла находятся следующие строки:

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

Эти строки задают местонахождение файлов phpMyAdmin. То есть, если в браузере открыть доменное имя или IP-адрес, а затем добавить /phpMyAdmin или /phpmyadmin, на экране появится контент /usr/share/phpMyAdmin.

Эти директивы очень часто становятся мишенью ботов и злоумышленников. Потому нужно их нужно закомменитровать и добавить свою директиву другим значением. Выберите нестандартное значение, которое не отображает цели; для примера в руководстве используется /nothingtosee.

Итак, закомментируйте или удалите существующие строки и добавьте в файл новую:

# Alias /phpMyAdmin /usr/share/phpMyAdmin
# Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /nothingtosee /usr/share/phpMyAdmin

Сохраните и закройте файл.

Чтобы активировать изменения, перезапустите веб-сервис.

sudo systemctl restart httpd.service

Убедитесь, что всё выполнено верно. Попробуйте посетить предыдущее местонахождение установки phpMyAdmin; на экране должна появиться ошибка 404.

http://server_domain_or_IP/phpMyAdmin
Not Found
The requested URL /phpMyAdmin is not found on this server.

Теперь интерфейс phpMyAdmin доступен по новой ссылке:

Настройка шлюза авторизации веб-сервера

К счастью, многие веб-серверы, – и Apache в том числе, — поставляются с этой функцией. Нужно просто настроить Apache для поддержки файла авторизации.

Откройте конфигурационный файл Apache для phpMyAdmin:

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

В блок настроек каталога /usr/share/phpMyAdmin (но вне других внутренних блоков) нужно добавить директиву AllowOverride:

. . .

AllowOverride All

. . .

. . .

Сохраните и закройте файл.Это позволит внести дополнительные настройки в файл.htaccess, который находится в каталоге phpMyAdmin. Используйте этот файл, чтобы настроить дополнительную авторизацию.

Перезапустите сервис, чтобы активировать обновления:

sudo systemctl restart httpd.service

Создание файла.htaccess

Теперь директива AllowOverride будет направлять Apache в файл.htaccess в каталоге /usr/share/phpMyAdmin. Если веб-сервер находит такой файл, он выполняет указанные в нём директивы.

Создайте в каталоге /usr/share/phpMyAdmin файл htaccess.

sudo nano /usr/share/phpMyAdmin/.htaccess

Внесите в этот файл следующие данные:

AuthType Basic
AuthName "Admin Login"
AuthUserFile /etc/httpd/pma_pass
Require valid-user

Теперь файл содержит следующие директивы:

  • AuthType Basic: определяет тип авторизации (тип Basic осуществляет авторизацию на основе пароля с помощью файла паролей).
  • AuthName: задаёт сообщение для окна, которое будет появляться при запросе учётных данных. Можно оставить стандартное значение, чтобы не сообщать злоумышленникам о том, какая именно программа защищается этой страницей.
  • AuthUserFile: задаёт текущий файл паролей (будет создан немного позже). Он не должен находиться в обслуживаемых каталогах.
  • Require valid-user: указывает, что только авторизованные пользователи могут получить доступ к ресурсу. Именно этот параметр предотвращает доступ неавторизованных пользователей.

Сохраните и закройте файл.

Создание файла паролей

Теперь нужно создать файл паролей, указанный в настройках.htaccess, и внести в него пароли пользователей, у которых должен быть доступ к phpMyAdmin.

Для этого используется утилита htpasswd. Запустите команду, передав местонахождение файла и его имя:

sudo htpasswd -c /etc/httpd/pma_pass username

Флаг –с указывает, что это исходный файл. Кроме того, команда содержит местоположение каталога (путь и имя файла). Username нужно заменить именем пользователя, которого нужно добавить в файл первым. После запуска команды будет предложено ввести и подтвердить пароль этого пользователя.

Чтобы добавить в файл других пользователей, запустите эту команду без флага –с и укажите имя другого пользователя:

sudo htpasswd /etc/httpd/pma_pass seconduser

Создав файл паролей, можно протестировать шлюз авторизации. Попробуйте открыть страницу входа phpMyAdmin:

http://server_domain_or_IP/nothingtosee

На экране появится промежуточная страница авторизации. Введите валидные учётные данные, и только после этого вы сможете получить доступ к странице входа phpMyAdmin. Этот дополнительный уровень безопасности сохранит логи СУБД в чистоте (в них не будет данных о неудачных попытках входа).

Заключение

Теперь можно управлять системой баз данных MariaDB при помощи надёжного и относительно безопасного веб-интерфейса. Он предоставляет основные функции, доступные в командной строке MariaDB: просмотр баз данных, схем, создание запросов и новых наборов и структур данных.

Tags: ,

LEMP — набор софта, который реализует серверную платформу для хостинга сайтов с динамическим контентом. Термин является акронимом, за которым скрывается операционная система L inux, веб сервер E Nginx (иногда он заменяется сервером A pache — LAMP ), база данных M ySQL и скриптовый язык P HP.
Сначала для получения последней версии пакета добавим официальный репозиторий:

# vim /etc/yum.repos.d/nginx.repo name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1

Подключив его просто устанавливаем nginx

# yum install nginx

пробуем запустить:

# service nginx start Redirecting to /bin/systemctl start nginx.service

# chkconfig nginx on Note: Forwarding request to "systemctl enable nginx.service". ln -s "/usr/lib/systemd/system/nginx.service" "/etc/systemd/system/multi-user.target.wants/nginx.service"

По умолчанию в CentOS 7 открыт только 22 порт для коннекта по ssh. Необходимо разрешить и 80 для веб-сервера
Добавим правило:

# iptables -A IN_public_allow -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT

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

# iptables-save > /etc/sysconfig/iptables

MySQL
Что бы иметь последние версии форка MariaDB добавим официальный репозиторий. Корректное содержание для файла можно сгенерировать на этом ресурсе, выбрав свой дистрибутив и версию
Для CentOS 7 текст такой

# MariaDB 10.3 CentOS repository list - created 2018-10-08 09:21 UTC # http://downloads.mariadb.org/mariadb/repositories/ name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1

# yum install MariaDB-server MariaDB-client -y

Мы уже умеем правильно запускать сервисы:

# systemctl start mariadb # mysql_secure_installation Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? y ... Success! Normally, root should only be allowed to connect from "localhost". This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? y ... Success! By default, MariaDB comes with a database named "test" that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? y ... Success! Cleaning up... All done! If you"ve completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!

И знаем как правильно добавить сервис в автозагрузку:

# systemctl enable mariadb.service

Установка интерпретатора PHP. Я сразу установлю и phpMyAdmin

# yum -y install epel-release # yum install php-fpm php php-mysql phpMyAdmin

По умолчанию PHP-FPM работает на сетевом порту 9000. Я же для повышения как безопасности так и производительности запускаю его на доменном сокете.
Для этого в файле /etc/php-fpm.d/www.conf необходимо поменять строку listen = 127.0.0.1:9000 на listen = /var/run/php-fpm/php-fpm.sock
или быстрее просто

# sed -i "s/^listen = 127.*/listen = \/var\/run\/php-fpm\/php-fpm.sock/" /etc/php-fpm.d/www.conf

Кроме того по умолчанию есть параметр, который необходимо раскоментировать(удалив перед ним «; «) и заменить значение с 1 на 0 из соображений секьюрности в /etc/php.ini

# sed -i "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php.ini

Запускаем и проверяем:

# systemctl start php-fpm.service # ps aux | grep php-fpm root 47055 0.0 0.2 220696 8428 ? Ss 12:09 0:00 php-fpm: master process (/etc/php-fpm.conf) apache 47056 0.0 0.1 220696 4056 ? S 12:09 0:00 php-fpm: pool www apache 47057 0.0 0.1 220696 4056 ? S 12:09 0:00 php-fpm: pool www apache 47058 0.0 0.1 220696 4056 ? S 12:09 0:00 php-fpm: pool www apache 47059 0.0 0.1 220696 4056 ? S 12:09 0:00 php-fpm: pool www apache 47060 0.0 0.1 220696 4052 ? S 12:09 0:00 php-fpm: pool www

Работает, добавляем в автозагрузку:

# systemctl enable php-fpm.service

И собственно необходимо подружить вебсервер и менеджер процессов FastCGI. Мой конфиг имеет такой вид:
/etc/nginx/conf.d/default.conf

Server { listen 80 default; server_name localhost; root /usr/share/nginx/html; index index.php index.html index.htm; #access_log /var/log/nginx/log/host.access.log main; location / { try_files $uri $uri/ =404; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location /pma/ { auth_basic "O-ops! Password required"; auth_basic_user_file /usr/share/phpMyAdmin/htpasswd; alias /usr/share/phpMyAdmin/; location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_ignore_client_abort off; } } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

Мы запаролили phpMyAdmin. Точнее пока что мы только указали, что этот локейшн запаролен. Так же нужно сгенерировать файл с доступами.

# htpasswd -cb /usr/share/phpMyAdmin/htpasswd user P@ssw0rd

Можно перезапустить сервер

# systemctl restart nginx.service

но я обычно проверяю конфиг и просто перечитываю правила:

# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful # nginx -s reload

Phpmyadmin - популярный инструмент для управления через браузер базами данных mysql. Я почти всегда устанавливаю его на сервер, если там есть базы mysql. Мне он кажется наиболее простым и удобным средством управления. В статье опишу подробно процесс установки на web сервер apache и nginx.

Несколько слов о том, что же из себя представляет инструмент под названием phpmyadmin. Это набор php скриптов, которые устанавливаются на веб сервер. С их помощью можно подключиться к локальному или удаленному mysql серверу и управять им через веб браузер. Я чаще всего с помощью phpmyadmin делаю следующие операции:

  • Создание новых баз и пользователей, назначение прав.
  • Экспорт или импорт баз не очень большого объема, до 50-ти мегабайт. Если база большего объема, использую утилиты командной строки (mysqldump и mysql) для управления сервером БД.
  • Просмотр содержимого баз данных или информации о них.
По сути, делаю практически все стандартные действия с базами данных. Без phpmyadmin можно обходиться, для самых простых конфигураций серверов (например голый zabbix сервер) мне хватает консольных утилит. Но если есть, к примеру, веб сервер с сайтами, я обязательно поставлю phpmyadmin. Мне так быстрее и удобнее.

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

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

# yum install phpmyadmin

Вы увидите полный список зависимостей, но в нем не будет самого веб сервера и интерпретатора php, только его модули. Веб сервер вам нужно предварительно установить и настроить самим. Сделем это на примере веб сервера httpd (апач). Устанавливаем его:

# yum install -y httpd

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

# yum install -y php

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

# systemctl enable httpd # systemctl start httpd

Заходите по адресу

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

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


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

# chown apache. /var/www/html/index.php

Теперь снова заходим по адресу

Вы должны быть зарегистрированы, чтобы видеть ссылки.

, вы должны увидеть вывод phpinfo:




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

Устанавливаем 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 AddDefaultCharset UTF-8 Require all granted Require all granted Order Deny,Allow Deny from All Allow from None Order Deny,Allow Deny from All Allow from None

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

# systemctl restart httpd

Заходим по адресу

Вы должны быть зарегистрированы, чтобы видеть ссылки.

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

В этот момент я понял, что мне некуда логиниться. На тестовом сервере, где я готовлю статью, нет mysql. Если у вас та же ситуация, что у меня, установите mariadb. Сейчас быстро ставим базу данных и запускаем ее:

# yum install -y mariadb mariadb-server # systemctl enable mariadb.service # systemctl start mariadb # /usr/bin/mysql_secure_installation

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


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

Настроим работу phpmyadmin на веб сервере nginx + php-fpm. Устанавливаем 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

Заходим по адресу

Вы должны быть зарегистрированы, чтобы видеть ссылки.

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


# yum install -y phpmyadmin

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

# 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 { } }

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

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

# systemctl restart nginx

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

Идем по адресу

Вы должны быть зарегистрированы, чтобы видеть ссылки.

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

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, хотя у нас веб сервер nginx. Это связано с тем, что php-fpm по-умолчанию работает под пользователем apache. Логичнее изменить это и запускать его от nginx. Для этого надо отредактировать файл /etc/php-fpm.d/

Вы должны быть зарегистрированы, чтобы видеть ссылки.

Изменив там параметры user и group. Я не стал этого делать сейчас для простоты. Оставляю данный параметр на ваше усмотрение.

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

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

Рассмотрим сначала пример с веб сервером 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


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

# 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. После входа в панель, в разделе Настройки вы увидите сообщение:

Ваши настройки будут сохранены только для текущей сессии. Для постоянного хранения требуется подключение модуля хранения настроек phpMyAdmin.

Подключим необходимый модуль для сохранения настроек. Модуль это громко сказано, нам всего лишь необходимо создать отдельную базу данных для хранения настроек и активации некоторых расширенных возможностей. Файл для создания базы данных хранится в директории phpmyadmin по адресу /usr/share/phpMyAdmin/sql/create_tables.sql . Копируем содержимое этого файла и выполняем его тут же, в phpmyadmin в разделе SQL:


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

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

Вы должны быть зарегистрированы, чтобы видеть ссылки.

.

Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: