Настройка web сервера в centos 7

Установка и настройка FTP-сервера

В качестве FTP-сервера будем использовать ProFTPd, так как он позволяет авторизовываться под uid системных учетных записей. Для его установки вводим следующую команду:

yum install proftpd proftpd-utils

Создаем каталог для хранения настроек:

mkdir /etc/proftpd.d

Создаем виртуального пользователя:

ftpasswd —passwd —file=/etc/proftpd.d/ftpd.passwd —name=ftpwww —uid=48 —gid=48 —home=/var/www —shell=/sbin/nologin

* где /etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи; ftpwww — имя пользователя (логин); uid и gid — идентификаторы пользователя и группы системной учетной записи (apache); /var/www — домашний каталог пользователя; /sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.

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

vi /etc/proftpd.conf

И редактируем следующее (комментируем):

#AuthOrder …

В конце файла добавим следующее:

UseIPv6 off
IdentLookups off
PassivePorts 40900 40999
RequireValidShell off
AuthUserFile /etc/proftpd.d/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c

* где 40900 — 40999 — диапазон динамических портов для пассивного режима.

Разрешаем автозапуск FTP-серверу и запускаем его:

systemctl enable proftpd

systemctl start proftpd

Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.

Это базовая и самая простая настройка ProFTPd, но если необходимо настроить TLS или хранить виртуальных пользователей в базе MySQL, читайте подробнее инструкцию по настройке ProFTPd на CentOS 7.

Что нового в PHP 7

Новая версия PHP получила множество нововведений, но что самое главное для новых пользователей — очень сильную оптимизацию. Разработчики переработали кодовую базу и добавили новые алгоритмы, что дало прирост производительности в два раза, также уменьшено потребление памяти вполовину. Кроме того, были добавлены некоторые новые возможности:

  • Импорт пространств имен группами;
  • Добавлена возможность присвоить значение по умолчанию если переменная пустая;
  • В классах можно указывать ожидаемые типы данных для методов;
  • Добавлены анонимные классы;
  • Добавлена возможность создавать Escape последовательности для unicode;
  • Улучшены генераторы;

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

Из языка полностью удалены такие расширения:

  • interbase;
  • mssql;
  • oci8;
  • pdo_dblib;
  • pdo_oci;
  • sybase_ct;

Расширение ereg считается устаревшим, а imap и mcrypt пока поддерживаются, но, видимо, ненадолго. Также были убраны устаревшие теги: <%, <%=, <script language=»php»> больше они не работают. Классы и интерфейсы больше нельзя именовать именами типов данных. Также изменен синтаксис работы с возвращаемыми методами данными. В основном это все, если ваш проект не содержит всех этих проблем, то вы можете спокойно переходить на PHP 7. Такие популярные CMS, как WordPress, Zend, Yii, Symfony и множество других уже давно поддерживают PHP 7. А теперь рассмотрим как установить PHP 7 CentOS 7.

Установка phpmyadmin

Кратко расскажу про установку phpmyadmin в контексте данной статьи. Подробно не буду останавливаться на этом, так как статья и так получается очень объемная, а я еще не все рассказал. Вопрос настройки phpmyadmin я очень подробно рассмотрел отдельно. За подробностями можно сходить туда.

Устанавливаем phpmyadmin через yum. Если ранее все сделали правильно, то конфликтов с зависимостями быть не должно.

# yum install phpmyadmin

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

# rm -df /web/sites/p1m2a.zeroxzed.ru/www
# ln -s /usr/share/phpMyAdmin /web/sites/p1m2a.zeroxzed.ru/www

Выставляем правильные права на директорию с php сессиями. Без этого работать phpmyadmin не будет.

# chown nginx:nginx /var/lib/php/session/

Можно заходить и проверять работу phpmyadmin. Ее установка закончена.

Настройка виртуального домена

Настройка виртуального домена зависит от веб-сервера, который мы используем. Разберем примеры для NGINX и Apache.

NGINX

На отдельном домене

Создаем конфигурационный файл для виртуального домена:

vi /etc/nginx/conf.d/phpMyAdmin.conf

server {
        listen       80;
        server_name  phpmyadmin.dmosk.local;
        set $root_path /usr/share/phpMyAdmin;
        location / {
                root $root_path;
                index index.php;
        }
        location ~ \.php$ {
                #fastcgi_pass 127.0.0.1:9000;
                fastcgi_pass unix:/run/php-fpm/www.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
                include fastcgi_params;
                fastcgi_param DOCUMENT_ROOT $root_path;
                fastcgi_read_timeout 300;
        }
}

* где:

listen — порт, на котором слушает nginx для данного домена.
server_name — домен для которого применяются настройки server. В данном примере phpmyadmin.dmosk.local.
root_path — переменная, в которую мы заносим наш путь до phpMyAdmin.
location / — настройки для запросов к серверу. В конкретном случае, мы используем root_path в качестве корневой директории для скриптов сайта; опция index нужна для поиска скрипта по умолчанию, если нет явного обращения клиентом.
location ~ \.php$ — параметры для обработки скриптов php. В нашем случае, мы обрабатываем скрипты с помощью php-fpm

Стоить обратить внимание, что последний может слушать на порту (по умолчанию, 9000) или через сокет-файл. В примере выше используется последний вариант, а способ с портом закомментирован.

fastcgi_pass — данный параметр важен и зависит от настройки php-fpm

Если последний слушает на порту, мы задаем первый вариант (который закомментирован), иначе — указываем путь до сокетного файла.

Проверяем корректность настройки nginx:

nginx -t

… и если ошибок нет, перезапускаем сервис:

systemctl restart nginx

С помощью location /phpmyadmin

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

vi /etc/nginx/conf.d/default.conf

* в вашей ситуации, файл с доменом по умолчанию может быть другим. 

Добавляем location ^~ /phpmyadmin со следующими настройками:

server {
        listen       80 default_server;
        …
        location /phpmyadmin {
            root /usr/share/;
            index index.php;
            location ~ ^/phpmyadmin/(.+\.php)$ {
                root /usr/share/;
                #fastcgi_pass 127.0.0.1:9000;
                fastcgi_pass unix:/run/php-fpm/www.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
                fastcgi_read_timeout 300;
            }
            location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                root /usr/share/;
            }      
        }
}

* где:

root — каталог, в котором находится каталог с phpmyadmin с порталом.
location ~ \.php$ — параметры для обработки скриптов php. В нашем случае, мы обрабатываем скрипты с помощью php-fpm

Стоить обратить внимание, что последний может слушать на порту (по умолчанию, 9000) или через сокет-файл. В примере выше используется последний вариант, а способ с портом закомментирован.
fastcgi_pass — данный параметр важен и зависит от настройки php-fpm

Если последний слушает на порту, мы задаем первый вариант (который закомментирован), иначе — указываем путь до сокетного файла.

Проверяем корректность настройки nginx:

nginx -t

… и если ошибок нет, перезапускаем сервис:

systemctl restart nginx

Apache

Создаем конфигурационный файл для виртуального домена:

vi /etc/httpd/conf.d/phpMyAdmin.conf

<VirtualHost *:80>
    Define root_domain phpmyadmin.dmosk.local
    Define root_path /usr/share/phpMyAdmin
    ServerName ${root_domain}
    ServerAlias www.${root_domain}
    DocumentRoot ${root_path}
    <Directory /usr/share/phpMyAdmin>
        AllowOverride All
        Options Indexes ExecCGI FollowSymLinks
        Require all granted
    </Directory>
</VirtualHost>

Проверяем корректность настройки apache:

apachectl configtest

… и если ошибок нет, перезапускаем сервис:

systemctl restart httpd

Установка PHP CentOS 7

Мы будем использовать репозиторий Remi для установки PHP. Но перед тем как мы сможем его подключить, нам понадобиться дополнительно репозиторий EPEL:

Дальше устанавливаем сам репозиторий Remi:

После установки смотрим доступные репозитории Remi:

Как видите, есть несколько версий php, сейчас мы можем активировать php 7.1, для этого откройте соответствующий файл, найдите секцию , в ней найдите enabled и поменяйте значение с 0 на 1:

Теперь самое интересное — установка php 7.1 centos 7. Если у вас уже установлена старая версия php, то вам не нужно ничего удалять, вы можете просто обновить систему и получите то, что нужно:

Если же никакая версия php не установлена, просто установите нужные пакеты:

После завершения работы команды вы получите готовую и работающую версию php, и вы можете использовать ее для своего веб-сервера Apache или Nginx. Если вы используете Apache, то даже ничего перенастраивать не придется. Если вы используете подключение по сетевому сокету в Nginx, то вам нужно будет только перезапустить php-fpm:

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

Настройка папки для хранения сессий 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/

=== Проверяем наличие и если нет создаем папку ===
ls
= Вывод команды =
opcache  peclxml  session  wsdlcache
mkdir session

=== Назначаем нужны права ===
chown nginx:nginx session/

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

Настройка MySQL CentOS 7

По умолчанию MySQL будет слушать локальный хост 127.0.0.1. Если вы хотите, чтобы сервер был доступен из интернета, необходимо изменить несколько настроек в файле /etc/my.cnf. Однако, не рекомендуется делать сервер баз данных доступным через интернет. Чтобы указать внешний ip адрес, который нужно прослушивать используется строку bind_address:

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

Сначала нужно ввести пароль суперпользователя. По умолчанию система генерирует случайный пароль во время установки. Чтобы его посмотреть откройте еще один терминал и выполните:

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

Затем укажите что пароль менять не нужно. Отключите анонимных пользователей. Запретите удаленный вход от имени пользователя root:

Удалите тестовые таблицы:

И обновите таблицы привелегий:

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

Утилита, запросит пароль, введите пароль root, который задали на предыдущем этапе, дальше вы сможете выполнять команды mysql:

Давайте создадим пользователя dbuser для базы данных dbase, с паролем password. Вам нужно заменить эти значения на свои. Сначала создаем базу данных:

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

Переключите на новую базу данных:

Затем создайте таблицу:

Готово. Теперь вы знаете как выполняется установка MySQL CentOS 7. Давайте еще рассмотрим как сбросить пароль в MySQL.

4 Установка PHP

Версия PHP, которая поставляется с CentOS по умолчанию, довольно старая (PHP 5.4). Поэтому в этой главе я покажу вам некоторые варианты установки более новых версий PHP, таких как PHP 7.0 — 7.3, из репозитория Remi.

Добавьте репозиторий Remi CentOS.

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Установите yum-utils так, как нам нужна утилита yum-config-manager.

yum -y install yum-utils

и запустите yum update

yum update

Теперь вам нужно выбрать, какую версию PHP вы хотите использовать на сервере. Если вам нравится использовать PHP 5.4, перейдите к главе 4.1. Чтобы установить PHP 7.0, следуйте командам в главе 4.2, для PHP 7.1 — главе 4.3, для PHP 7.4 используйте главу 4.4, а для PHP 7.3 — вместо главы 4.5. Следуйте только одной из глав 4.x, а не всем, поскольку вы можете использовать только одну версию PHP одновременно с Apache mod_php.

Чтобы установить PHP 5.4, выполните эту команду:

yum -y install php

4.2 Установить PHP 7.0

Мы можем установить PHP 7.0 и модуль Apache PHP 7.0 следующим образом:

yum-config-manager --enable remi-php70
yum -y install php php-opcache

4.3 Установить PHP 7.1

Если вы хотите использовать PHP 7.1 вместо этого, используйте:

yum-config-manager --enable remi-php71
yum -y install php php-opcache

4.4 Установите PHP 7.2

Если вы хотите использовать PHP 7.2 вместо этого, используйте:

yum-config-manager --enable remi-php72
yum -y install php php-opcache

4.5 Установите PHP 7.3

Если вы хотите использовать PHP 7.3, используйте:

yum-config-manager --enable remi-php73
yum -y install php php-opcache

В этом примере и в загружаемой виртуальной машине я буду использовать PHP 7.3.

Мы должны перезапустить Apache, чтобы применить изменения:

systemctl restart httpd.service

2: Загрузка и установка MySQL

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

Чтобы установить данную СУБД, просто наберите:

После установки система MySQL не запускается автоматически. Запустите MySQL вручную:

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

Затем можно защитить установку, немного изменив некоторые опасные настройки по умолчанию. Для этого существует такой скрипт:

При этом будет предложено ответить на ряд вопросов:

Теперь система MySQL установлена и запущена. Убедитесь, что только что установленный пароль работает:

Введите пароль; после этого на экране появится командная строка MySQL.

Чтобы вернуться в командную строку оболочки, наберите:

Installation of phpMyAdmin on CentOS 7

Step 1: Install EPEL Repository

(If you’ve already installed EPEL, you can skip this step.)

CentOS 7 does not have access to phpMyAdmin in its default software repository. You’ll need to get access to the EPEL repository – the Extra Packages for Enterprise Linux.

Type the following at the command prompt, then hit enter:

Once that operation finishes, it’s a good idea to refresh and update the EPEL repository:

Step 2: Install Apache Web Server

PhpMyAdmin requires an active and running Apache web server. To install Apache on CentOS use the command:

Verify the status of Apache by running with the command:

You can also enter your server’s IP address in a browser and a testing screen should display:

Step 3: Installing phpMyAdmin on CentOS 7

To install PHPMyAdmin on CentOS, enter the command:

Once the system executes the command, PHPMyAdmin is installed and ready to launch.

Step 4: Configuring and Securing phpMyAdmin

Your new software installation includes a default Apache configuration file. You’ll want to make some changes to that configuration to prevent unauthorized access. Here are two common ways of restricting access to unauthorized users.

Restrict IP Addresses

This method can be used to grant remote access to a single workstation. By default, phpMyAdmin is configured so that the server it’s installed on has access. This change lets you allow or restrict access to specific IP addresses of different or additional computers.

The file is located at . Type the following at your command prompt:

Inside the file, you should see four (4) lines that refer to “Require IP” or “Allow IP.”  By default, they should be set to , which is the IP address referring to the system you are working on. To allow other systems to access this phpMyAdmin application, add (or change) these numbers to the IP address of the computer you want to grant access to.

Once you’ve made the changes, save the file.

Change Alias

Open phpMyAdmin.conf using a text editor:

Near the top, you should see two lines:

“Alias” is how the internet will see your phpMyAdmin configuration. Since the default configuration is an easy target for bots and hackers, consider changing the alias setting. Just put a ‘#’ sign before the existing entries so the program sees them as comments, rather than instructions. Then add your own line:

Now, when you go to your login screen, you’ll have to type (or whatever you choose) to gain access.

Once you’re finished making changes, save the file.

Step 6: Verify phpMyAdmin is Working

To check if phpMyAdmin is working correctly, enter your servers IP and /phpmyadmin in a web browser. For example:

You should see the PhpMyAdmin login screen.

Note: Fill in the location of your own public server information in place of “IP_OR_DOMAIN.” You’ll need to collect this information from your particular server configuration. It’ll usually be your domain name or the IP address of your server.

Conclusion

PhpMyAdmin is a widely-used application for managing databases. If followed closely, you should fine this guide on how to Install PhpMyAdmin on CentOS 7 very useful.

Настройка SELinux

В Centos 7 много сделано для повышения безопасности, однако это иногда добавляет головной боли. В частности, в Centos 7 по умолчанию включен SELinux. Скорее всего сервер будет работать как-то не так и в файле /var/log/nginx/error.log выдавать ошибку:

2015/10/20 14:44:16  11593#0: *20 connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream, client: X.X.X.X, server: msadmin.ru, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "msadmin.ru"

Для простоты SELinux можно просто отключить. Для этого находим файл /etc/sysconfig/selinux, исправляем в нем соответствующую строчку на SELINUX=disabled и перезагружаемся.

Но поступать таким варварским способом я считаю неправильно. Лучше не нарушать безопасность и использовать политики SELinux для nginx:

yum install policycoreutils-python
cat /var/log/audit/audit.log|grep nginx | grep denied | tail -n 1 |audit2allow -M mynginx
semodule -i mynginx.pp

Важно: В любой непонятной ситуации, когда все должно работать, но не работает попробуйте отключить SELinux, возможно проблема в нем

Установка NGINX

Устанавливаем NGINX:

dnf install nginx

Внесем небольшую корректировку в файл nginx.conf:

vi /etc/nginx/nginx.conf

В секцию http добавим строку:

http {
    …
    server_names_hash_bucket_size 64;
    ….
}

* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.

Разрешаем автозапуск сервиса и запустим его:

systemctl enable nginx

systemctl start nginx

Проверим, что веб-сервер работает. Для этого открываем браузер на другом компьютере, который находится в одной сети и вводим в адресной строке IP-адрес сервера. В итоге мы должны увидеть заголовок «Welcome to nginx!»:

* обратите внимание, что данное приветствие может иметь и другой вид

Настройка 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, в случае, если вы меняли название ссылки:

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

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

Step 3: Configure SELinux and Firewall

SELinux stands for Security-Enhanced Linux. This is a kernel-level enhancement that improves security. Reconfigure this protocol for phpMyAdmin to work.

1. Start by installing the following software package:

Some versions of CentOS 8 may already have this package installed. In that case, the output indicates it has nothing to do and you can move on to the next step.

2. Next, enable access to the phpmyadmin directory with the following commands:

The first two commands may take a moment to complete. The third command recurses through the phpmyadmin directory to apply the changes.

Adjust the Firewall to Allow Traffic

1. Create a firewall rule to allow HTTP traffic with the command:

2. Make sure to reload the firewall after making these modifications:

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

Устанавливаем nginx

yum install nginx

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

location / {
            proxy_pass      http://127.0.0.1:8080/;
            proxy_redirect    off;
            proxy_set_header  Host $host;
            proxy_set_header  X-Real-IP $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 10m;
            proxy_connect_timeout 90;
        }

Запускаем nginx и настраиваем его автозапуск

systemctl start nginx
systemctl enable nginx

Теперь нам необходимо на файрволе открыть 80 порт (http), чтобы наш сервер стал доступен снаружи.

firewall-cmd --add-service=http --permanent

Ключ —permanent указывает на то, что порт открывается на постоянной основе и после перезагрузки останется открытым.

Перезагружаем сервер

reboot

Пробуем в браузере набрать IP адрес нашего сервера, мы должны увидеть страницу «nginx error!». Значит nginx установлен и работает!

Postfix

В CentOS postfix уже установлен и запущен. Нам необходимо сделать несколько простых настроек:

vi /etc/postfix/main.cf

myorigin = $mydomain
smtp_generic_maps = hash:/etc/postfix/generic_map

* где myhostname — имя узла для почтового сервера (его он будет использовать в представлениях другим почтовым серверам); mydomain — домен сервера; myorigin — имя домена, которое будет подставляться всем отправляемым сообщениям без явного указания оного; smtp_generic_maps указывает на карту с общими правилами пересылки.

Открываем карту пересылки:

vi /etc/postfix/generic_map

И добавляем:

@dmosk.local    [email protected]

* данной настройкой мы будем подставлять всем отправляемым письмам без поля FROM адрес [email protected].

Создаем карту:

postmap /etc/postfix/generic_map

Для применения настроек перезагружаем почтовый сервер:

systemctl restart postfix

3: Настройка MySQL

После завершения установки нужно запустить встроенный сценарий безопасности MySQL, который изменяет некоторые опции по умолчанию и блокирует удалённый root-логин. Чтобы запустить сценарий, введите:

Программа запросит root-пароль, который вы получили при установке.

Введите новый пароль из 12 символов и подтвердите его.

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

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

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

Step 4: Test phpMyAdmin

1. Open a web browser, and navigate to the following URL:

The browser should display the phpMyAdmin login page. However, if you attempt to log in, an error message may appear:

«The server requested an authentication method unknown to the client.»

This error occurs because MySQL 8.x upgraded the password authentication mechanism. PhpMyAdmin has not been updated yet to use this authentication method.

2. To bypass this measure, open the MySQL shell and alter the root user:

3. Replace with the actual password you set when securing the MySQL installation.

4. Refresh the web browser phpMyAdmin page, and log in with your MySQL username and password.

Установка PHP и PHP-FPM

Устанавливаем PHP и php-fpm следующей командой:

yum install php php-fpm

* В CentOS 7 будет установлена php версии 5.4. Если необходимо установить PHP 7, читайте статью Как установить PHP 7 на CentOS 7.

Запускаем php-fpm и разрешаем его автозапуск:

systemctl start php-fpm

systemctl enable php-fpm

Настройка связки NGINX + PHP

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

vi /etc/nginx/conf.d/default.conf

* в некоторых версиях nginx данного файла может не быть и настройка выполняется в файле /etc/nginx/nginx.conf.

В секции location редактируем параметр index на следующее значение:

    location / {
        index  index.php index.html index.htm;
    }

* добавляем index.php в начало списка. Если параметра index нет, создаем его.

А внутри секции server добавим следующее:

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

* где /usr/share/nginx/html — корневой путь хранения скриптов; unix:/run/php-fpm/www.sock — файл для взаимодействия с php-fpm.

Открываем настройки php-fpm:

vi /etc/php-fpm.d/www.conf

Проверяем, что параметр listen настроен так:

listen = /run/php-fpm/www.sock

… иначе, меняем значение. После перезагружаем php-fpm:

systemctl restart php-fpm

* в данном примере мы указываем, что php-fpm будет использовать сокетный файл /run/php-fpm/www.sock для взаимодействия. Этот файл мы указали выше в настройке NGINX.

Проверяем правильность настроек nginx:

nginx -t

И перезагружаем его:

systemctl restart nginx

Создаем index.php в каталоге сайта по умолчанию со следующим содержимым:

vi /usr/share/nginx/html/index.php

<?php phpinfo(); ?>

Открываем в браузере IP-адрес нашего сервера. Теперь мы должны увидеть сводную информацию по PHP и его настройкам, например:

Настройка SELinux для web сервера apache

Раздел для тех, кто хочет настроить SELinux на своем web сервере. Сначала ставим пакет policycoreutils-python-utils если он еще не установлен. Он нам нужен для утилиты semanage.

# dnf install policycoreutils-python-utils

Теперь автоматически сформируем модуль для selinux на основе событий аудита, которые накопились, пока мы настраивали сайт. Посмотреть их можно командой.

# grep httpd /var/log/audit/audit.log | audit2why

Создаем модуль selinux.

# grep httpd /var/log/audit/audit.log | audit2allow -M my-httpd

Загружаем его.

# semodule -i my-httpd.pp

То же самое делаем для php.

# grep php /var/log/audit/audit.log | audit2allow -M my-php
# semodule -i my-php.pp

Добавим нашу директорию /web/sites в соответствующие таблицы selinux для контента и логов.

# semanage fcontext -a -t httpd_sys_content_t "/web/sites(/.*)?"
# semanage fcontext -a -t httpd_log_t "/web/sites(/.*)?/log(/.*)?"

И отдельно добавим каталог, куда web сервер сможет писать данные. Я покажу на примере правила для сайтов wordpress, где web сервер должен уметь писать в директорию wp-content для загрузки медиафайлов, установки тем и плагинов, а так же изменять файл wp-config.php.

# semanage fcontext -a -t httpd_sys_rw_content_t "/web/sites/\*/www/wp-content(/.\*)?"
# semanage fcontext -a -t httpd_sys_rw_content_t "/web/sites/\*/www/wp-config.php"

Обновляем атрибуты файлов новым контекстом SELinux.

# restorecon -Rv /web/sites

В завершении настройки selinux для apache, добавим еще один параметр, без которого httpd не сможет писать файлы в указанные каталоги.

# setsebool -P httpd_unified 1

Теперь активируем защиту selinux и проверяем, что она работает.

# setenforce 1
# getenforce
Enforcing

Режим работы Enforcing означает, что selinux работает. Убедиться, что модули загружены, можно командой.

# semodule -l | grep my-

В целом, по selinux все. Мы просто разрешили все, что веб сервер просил. По идее, надо вдумчиво во всех правилах разбираться и разрешать только то, что считаешь нужным. Я честно скажу, что selinux знаю не очень хорошо. Дальше загрузки готовых модулей и автоматического создания модулей с помощью audit2allow я не двигался. Руками модули никогда не писал. Если есть какой-то более осмысленный и правильный способ настройки selinux на кастомной конфигурации веб сервера, буду рад полезной информации.

Хорошая практическая статья по ручной настройке selinux для web сервера — https://habr.com/ru/post/322904/. Там же есть ссылки на другие статьи автора на тему selinux. Написано содержательно и наглядно, рекомендую для тех, кто будет знакомиться с технологией.

Загружаем нужную версию

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

* на момент обновления инструкции, последняя версия была 4.9.0.1. Для рабочих сред версии alpha лучше не устанавливать.

В консоли сервера, используя скопированную ссылку, скачиваем архив:

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip

* если система вернет ошибку, проверьте, что установлен пакет wget.
* мы можем также скачать архив на любой компьютер с Windows и перенести его на сервер Linux с помощью WinSCP.

Распаковываем скачанный архив:

unzip phpMyAdmin-*-all-languages.zip

* если система вернет ошибку «unzip: command not found» устанавливаем данное приложение командами apt-get install unzip или yum install unzip.

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

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