262 подписчика

Запуск 2-х версий php-fpm на Apache под CentOS

296 прочитали

В этой инструкции мы установим 2 версии #php-fpm на веб сервере #apache под управлением операционной систему #centos 7

В этой инструкции мы установим 2 версии #php-fpm на веб сервере #apache под управлением операционной систему #centos 7  Предварительная подготовка В предыдущей статье мы уже создавали виртуальную...

Предварительная подготовка

В предыдущей статье мы уже создавали виртуальную машины с Ubuntu в яндекс облаке. Нам нужно сделать тоже самое, только вместо Ubuntu мы выберем CentOS.

В этой инструкции мы установим 2 версии #php-fpm на веб сервере #apache под управлением операционной систему #centos 7  Предварительная подготовка В предыдущей статье мы уже создавали виртуальную...-2

В CentOS по умолчанию работает SELinux, который будет нам блокировать порты. А так как SELinux не тема нашего How-to, то мы его отключим.

sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sudo reboot

Настройка php-fpm

Для начала добавим репозитории из которых будем устанавливать php-fpm.

sudo yum -y install scl-utils
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

Можем посмотреть список доступных версий php.

[nikolai@centos ~]$ sudo yum list php7[0-9].x86_64
Available Packages
php70.x86_64
php71.x86_64
php72.x86_64
php73.x86_64
php74.x86_64

Установим php 7.0 и 7.3 версии.

sudo yum -y install php70 php70-php-fpm php73 php73-php-fpm

По умолчанию для php-fpm используется 9000 порт и одновременно на одном порту поднять 2 версии на получится. Поэтому поменяем для php-fpm 7.0 на 9001.

sudo sed -i 's/^listen =.*/listen = 127.0.0.1:9001/' /etc/opt/remi/php70/php-fpm.d/www.conf

А для php-fpm 7.3 на 9003

sudo sed -i 's/^listen =.*/listen = 127.0.0.1:9003/' /etc/opt/remi/php73/php-fpm.d/www.conf

Проверим изменения.

[nikolai@centos ~]$ grep 'listen =' /etc/opt/remi/php*/php-fpm.d/www.conf /etc/opt/remi/php70/php-fpm.d/www.conf:listen = 127.0.0.1:9001
/etc/opt/remi/php73/php-fpm.d/www.conf:listen = 127.0.0.1:9003

В дальнейшем мы будем использовать стартовую страниц на html, поэтому разрешим её открытие в php-fpm.

sudo sed -i 's/.*security.limit_extensions =.*/security.limit_extensions = .php .php3 .php4 .php5 .php7 .html/' /etc/opt/remi/php*/php-fpm.d/www.conf

Проверим изменения.

[nikolai@centos ~]$ grep 'security.limit_extensions =' /etc/opt/remi/php*/php-fpm.d/www.conf
/etc/opt/remi/php70/php-fpm.d/www.conf:security.limit_extensions = .php .php3 .php4 .php5 .php7 .html
/etc/opt/remi/php73/php-fpm.d/www.conf:security.limit_extensions = .php .php3 .php4 .php5 .php7 .html

Поставим в автозагрузку и запустим php-fpm.

sudo systemctl enable php70-php-fpm
sudo systemctl restart php70-php-fpm
sudo systemctl enable php73-php-fpm
sudo systemctl restart php73-php-fpm

Проверим работу php-fpm на наших портах.

[nikolai@centos ~]$ sudo netstat -anp | grep 900.

tcp 0 0 127.0.0.1:9001 0.0.0.0:* LISTEN 1694/php-fpm: maste
tcp 0 0 127.0.0.1:9003 0.0.0.0:* LISTEN 1739/php-fpm: maste

Настройки Apache

Установим web сервер Apache.

sudo yum install httpd -y

В CentOS по умолчанию нет привычных папок sudo mkdir sites-available и sites-enabled. Создадим их.

sudo mkdir /etc/httpd/sites-{available,enabled}

Обязательно нужно включить в конфигурацию файлы из папки sites-enabled.

sudo bash -c 'echo "IncludeOptional sites-enabled/*.conf" >> /etc/httpd/conf/httpd.conf'

Посмотрим в https://console.cloud.yandex.ru/ какой у нас Публичный IPv4.

В этой инструкции мы установим 2 версии #php-fpm на веб сервере #apache под управлением операционной систему #centos 7  Предварительная подготовка В предыдущей статье мы уже создавали виртуальную...-3

Добавим нам первый VirtualHost в Apache.

sudo bash -c 'cat > /etc/httpd/sites-available/www.51.250.107.122.nip.io.conf <<EOF
<VirtualHost *:80>
    ServerName www.51.250.107.122.nip.io
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/www.51.250.107.122.nip.io
    ErrorLog /var/www/www.51.250.107.122.nip.io/logs/error.log
    CustomLog /var/www/www.51.250.107.122.nip.io/logs/access.log combined
</VirtualHost>
EOF'

Создадим для него папки.

sudo mkdir -p /var/www/www.51.250.107.122.nip.io/logs/

И сам сайт.

sudo bash -c 'echo "My site!" > /var/www/www.51.250.107.122.nip.io/index.html'

Включим наш VirtualHost в активную конфигурацию Apache.

sudo ln -s /etc/httpd/sites-available/www.51.250.107.122.nip.io.conf /etc/httpd/sites-enabled/www.51.250.107.122.nip.io.conf

Проверим конфигурацию Apache на ошибки.

[nikolai@centos ~]$ apachectl configtest
Syntax OK

Добавим Apache в автозагрузки на запустим его.

sudo systemctl enable httpd
sudo systemctl restart httpd

Откроем наш сайт http://www.51.250.107.122.nip.io/.

В этой инструкции мы установим 2 версии #php-fpm на веб сервере #apache под управлением операционной систему #centos 7  Предварительная подготовка В предыдущей статье мы уже создавали виртуальную...-4

Создание сайта на php

Создадим папки для наших сайтов.

sudo mkdir -p /var/www/php7{0,3}.51.250.107.122.nip.io/logs/

Создадим сами сайты.

sudo bash -c 'echo "Сайт php 7.3" > /var/www/php73.51.250.107.122.nip.io/index.html'
sudo bash -c 'echo "Сайт php 7.0" > /var/www/php70.51.250.107.122.nip.io/index.html'
sudo bash -c 'cat > /var/www/php70.51.250.107.122.nip.io/info.php << EOF
<?php
phpinfo();
?>
EOF'
sudo bash -c 'cat > /var/www/php73.51.250.107.122.nip.io/info.php << EOF
<?php
phpinfo();
?>
EOF'

Добавим VirtualHost для php в Apache.

sudo bash -c 'cat > /etc/httpd/sites-available/php70.51.250.107.122.nip.io.conf <<EOF
<VirtualHost *:80>
    ServerName php70.51.250.107.122.nip.io
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/php70.51.250.107.122.nip.io
    SetHandler "proxy:fcgi://127.0.0.1:9001"
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    AddHandler php70-fcgi .php
    Action php70-fcgi /cgi-bin/php70.fcgi
    ErrorLog /var/www/php70.51.250.107.122.nip.io/logs/error.log
    CustomLog /var/www/php70.51.250.107.122.nip.io/logs/access.log combined
</VirtualHost>
EOF'
sudo bash -c 'cat > /etc/httpd/sites-available/php73.51.250.107.122.nip.io.conf <<EOF
<VirtualHost *:80>
    ServerName php73.51.250.107.122.nip.io
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/php73.51.250.107.122.nip.io
    SetHandler "proxy:fcgi://127.0.0.1:9003"
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    AddHandler php73-fcgi .php
    Action php73-fcgi /cgi-bin/php73.fcgi
    ErrorLog /var/www/php73.51.250.107.122.nip.io/logs/error.log
    CustomLog /var/www/php73.51.250.107.122.nip.io/logs/access.log combined
</VirtualHost>
EOF'

Обязательно удалим не нужную конфигурацию по php.

sudo rm -rf /etc/httpd/conf.d/php*-php.conf

Включим наши VirtualHost php в активную конфигурацию Apache.

sudo ln -s /etc/httpd/sites-available/php70.51.250.107.122.nip.io.conf /etc/httpd/sites-enabled/php70.51.250.107.122.nip.io.conf
sudo ln -s /etc/httpd/sites-available/php73.51.250.107.122.nip.io.conf /etc/httpd/sites-enabled/php73.51.250.107.122.nip.io.conf

Проверим конфигурацию Apache на ошибки.

[nikolai@centos ~]$ apachectl configtest
Syntax OK

Перезагрузим Apache.

sudo systemctl restart httpd

Проверяем наши сайты http://php70.51.250.107.122.nip.io/ и http://php73.51.250.107.122.nip.io.

В этой инструкции мы установим 2 версии #php-fpm на веб сервере #apache под управлением операционной систему #centos 7  Предварительная подготовка В предыдущей статье мы уже создавали виртуальную...-5
В этой инструкции мы установим 2 версии #php-fpm на веб сервере #apache под управлением операционной систему #centos 7  Предварительная подготовка В предыдущей статье мы уже создавали виртуальную...-6

А тепь проверим версии php этих сайтов http://php70.51.250.107.122.nip.io/info.php, http://php73.51.250.107.122.nip.io/info.php

В этой инструкции мы установим 2 версии #php-fpm на веб сервере #apache под управлением операционной систему #centos 7  Предварительная подготовка В предыдущей статье мы уже создавали виртуальную...-7
В этой инструкции мы установим 2 версии #php-fpm на веб сервере #apache под управлением операционной систему #centos 7  Предварительная подготовка В предыдущей статье мы уже создавали виртуальную...-8

Безопасность в Apache

Сразу поставим 2 полезных модуля для Apache.

sudo yum -y install mod_security mod_evasive

Проверим что они добавились. Если нет, то убедились вернитесь и ещё раз установити репозиторий epel.

[nikolai@centos ~]$ sudo httpd -M | grep -e security -e evasive
security2_module (shared)
evasive20_module (shared)

Как их настроить уже поговорим в следующей статье. Так что не забудьте подписаться.