How to install phpmyadmin with apache on centos 8

Apache

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

Устанавливаем apache и модуль для php:

apt-get install apache2 libapache2-mod-php

Заходим в настройки портов:

vi /etc/apache2/ports.conf

И редактируем следующее:

Listen 8080
#<IfModule ssl_module>
#       Listen 443
#</IfModule>
#<IfModule mod_gnutls.c>
#       Listen 443
#</IfModule>

* мы настроили прослушивание на порту 8080, так как на 80 уже работает NGINX. Также мы закомментировали прослушивание по 443, так как и он будет слушаться NGINX.

Теперь открываем настройку следующего модуля:

vi /etc/apache2/mods-available/dir.conf

И добавляем впереди индексных файлов index.php:

<IfModule dir_module>
    DirectoryIndex index.php index.html …
</IfModule>

* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html и так далее.

Открываем основной конфигурационный файл для apache:

vi /etc/apache2/apache2.conf

Рядом с опциями Directory дописываем:

<Directory /var/www/*/www>
    AllowOverride All
    Options Indexes ExecCGI FollowSymLinks
    Require all granted
</Directory>

* где Directory указывает на путь, для которого мы хотим задать настройки; AllowOverride — позволит переопределить все настройки с помощью файла .htaccess; Options задает некоторые настройки: Indexes разрешает списки каталогов, ExecCGI разрешает запуск cgi скриптов, Require all granted — предоставляет всем доступ к сайтам в данном каталоге.

Ниже допишем:

<IfModule setenvif_module>
    SetEnvIf X-Forwarded-Proto https HTTPS=on
</IfModule>

* этой настройкой мы при получении заголовка X-Forwarded-Proto со значением https задаем переменную $_SERVER равную on. Данная настройки критична для функционирования некоторых CMS.

Запрещаем mpm_event:

a2dismod mpm_event

* по умолчанию, apache2 может быть установлен с модулем мультипроцессовой обработки mpm_event. Данный модуль не поддерживает php 7 и выше.

Разрешаем модуль мультипроцессовой обработки mpm_prefork:

a2enmod mpm_prefork

Разрешаем модуль php:

a2enmod php7.4

* в данном примере установлен php версии 7.4.

Разрешаем модуль setenvif:

a2enmod setenvif

Разрешаем модуль rewrite:

a2enmod rewrite

В процессе включения модулей, если мы видим «Module … already enabled», значит модуль уже включен.

Разрешаем автозапуск Apache и перезапускаем службу:

systemctl enable apache2

systemctl restart apache2

Открываем браузер и вводим в адресную строку http://<IP-адрес сервера>:8080. Мы должны увидеть привычную страницу:

* в разделе Server API мы должны увидеть Apache.

NGINX + Apache

Ранее мы настроили связку nginx + php-fpm. Теперь настроим nginx + apache. Открываем конфигурационный файл nginx для сайта по умолчанию:

vi /etc/nginx/sites-enabled/default

Находим наш настроенный location для php-fpm:


        location ~ \.php$ {
            set $root_path /var/www/html;
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_param DOCUMENT_ROOT $root_path;
        }

и меняем на:


        location ~ \.php$ {
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }

Проверяем и перезапускаем nginx:

nginx -t

systemctl restart nginx

Пробуем открыть в браузере http://<IP-адрес сервера> — должна открыться та же страница, что при проверке Apache (с добавлением 8080):

Apache Real IP

Запросы на apache приходят от NGINX, и они воспринимаются первым как от IP-адреса 127.0.0.1. На практике, это может привести к проблемам, так как некоторым сайтам необходимы реальные адреса посетителей. Для решения проблемы будем использовать модуль remoteip.

Создаем конфигурационный файл со следующим содержимым:

vi /etc/apache2/mods-available/remoteip.conf

<IfModule remoteip_module>
  RemoteIPHeader X-Forwarded-For
  RemoteIPTrustedProxy 127.0.0.1/8
</IfModule>

Активируем модуль:

a2enmod remoteip

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

systemctl restart apache2

Для проверки настройки открываем браузер и вводим в адресную строку http://<IP-адрес сервера>, где откроется наша страница phpinfo. В разделе Apache Environment мы должны увидеть внешний адрес компьютера, с которого обращаемся к серверу в опции REMOTE_ADDR.

Общая настройка системы

Установка пакетов

1. Обновляем CentOS:

yum update

2. Устанавливаем репозиторий EPEL и пакет для загрузки:

yum install epel-release wget

Время

1. Устанавливаем часовой пояс:

timedatectl set-timezone Europe/Moscow

* данной командой мы установим часовой пояс по московскому времени.

2. Устанавливаем и запускаем службу для автоматической синхронизации времени:

yum install chrony

systemctl enable chronyd —now

Настройка безопасности

1. Отключаем SELinux:

sed -i «s/SELINUX=enforcing/SELINUX=disabled/» /etc/selinux/config

setenforce 0

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

2. Открываем необходимые порты в брандмауэре:

firewall-cmd —permanent —add-port={80,443,8080}/tcp

firewall-cmd —permanent —add-port={20,21,60000-65535}/tcp

firewall-cmd —reload

* 80, 443 и 8080 порты для веб-сервера; 20, 21 порты нужны для работы FTP; 60000-65535 также необходимы для работы FTP (динамические порты для пассивного режима); последняя команда перезапускает firewalld, чтобы применить новые правила. Подробнее про настройку firewalld.

Настройка Phpmyadmin Nginx

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

Тут /var/www/html/phpmyadmin — это папка с вашим проектом. Затем перезапустите php-fpm:

В основной конфигурационный файл nginx.conf, в секцию http добавьте такую команду, это включит поддержку перехода по символическим ссылкам:

И еще, если у вас ISPManager поищите строчку disable_symlinks if_not_owner в настройке сайта и удалите ее иначе тоже ничего не заработает. Перезапустите nginx:

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

Но для большей надежности можно использовать аутентификацию Nginx. Сначала создадим зашифрованный пароль:

Полученное значение нужно скопировать. Дальше создайте файл /etc/nginx/passwords и поместите в него имя пользователя и пароль через двоеточие, например:

Теперь добавьте такой location в файл настройки вашего сайта, адрес pppma, в случае, если вы меняли название ссылки:

Теперь при запросе этого адреса будет спрашиваться пароль.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: