Множественная версия PHP с Apache на CentOS 7 - PullRequest
0 голосов
/ 24 апреля 2018

Может ли кто-нибудь здесь проинструктировать меня, как установить и настроить Multi PhP с одним экземпляром apache на CentOS 7, и как правильно его протестировать ..

Ответы [ 5 ]

0 голосов
/ 30 июля 2019

отвечает на runwuf

Здравствуйте, есть одна проблема с вашим подходом относительно SELinux

, либо вы отключаете SELinux (если вас не интересует безопасность), либо вы управляете политикой порта SELinux

Если вы не обрабатываете SELinux, php56-php-fpm не запустится, если SELinux установлен в режим «Enforcing»

Выполните следующие команды, чтобы SELinux разрешил порты

  semanage port -a -t http_port_t -p tcp 9072
  semanage port -a -t http_port_t -p tcp 9056

и, наконец, попробуйте запустить модули fpm

0 голосов
/ 03 февраля 2019

Мне пришлось добавить следующее в мой php.conf внутри оператора directory, чтобы API-интерфейс сервера Apache изменился на FPM / FastCGI вместо CGI / FastCGI - ваше решение было почти идеальным!Теперь, если бы я мог просто выяснить, как заставить его использовать сокет вместо TCP, я был бы одним счастливым кодером.

# mod_proxy_fcgi options
<IfModule mod_proxy_fcgi.c>
    <FilesMatch \.php$>
       SetHandler "proxy:fcgi://127.0.0.1:9072"
    </FilesMatch>
</IfModule>
0 голосов
/ 28 апреля 2018

установите все необходимые репозитории и пакеты

большое благодаря https://rpms.remirepo.net/wizard/

следующие команды предполагают, что вы уже sudo su - или вам придется добавить sudo к каждой из команд:

yum install httpd -y
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils -y
yum install php56 -y
yum install php72 -y
yum install php56-php-fpm -y
yum install php72-php-fpm -y

остановка обоих серверов fpm

systemctl stop php56-php-fpm
systemctl stop php72-php-fpm

по умолчанию он прослушивает 127.0.0.1 порт 9000, заставляет их прослушивать разные порты

sed -i 's/:9000/:9056/' /etc/opt/remi/php56/php-fpm.d/www.conf
sed -i 's/:9000/:9072/' /etc/opt/remi/php72/php-fpm.d/www.conf

теперь дваразные версии fpm могут быть запущены на разных портах

systemctl start php72-php-fpm
systemctl start php56-php-fpm
сделать скрипт-обертку для вызова php56-cgi и php72-cgi
cat > /var/www/cgi-bin/php56.fcgi << EOF
#!/bin/bash
exec /bin/php56-cgi
EOF

cat > /var/www/cgi-bin/php72.fcgi << EOF
#!/bin/bash
exec /bin/php72-cgi
EOF

сделать их исполняемыми apache

sudo chmod 755 /var/www/cgi-bin/php56.fcgi
sudo chmod 755 /var/www/cgi-bin/php72.fcgi

создать phpКонфигурация для Apache.по умолчанию он запускает обработчик php56-fcgi

cat > /etc/httpd/conf.d/php.conf << EOF
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
AddHandler php56-fcgi .php
Action php56-fcgi /cgi-bin/php56.fcgi
Action php72-fcgi /cgi-bin/php72.fcgi

<Directory /var/www/html/php56>
    DirectoryIndex index.php
    AllowOverride all
    Require all granted
</Directory>
<Directory /var/www/html/php72>
    DirectoryIndex index.php
    AllowOverride all
    Require all granted
</Directory>
EOF

, создайте тестовые страницы, создайте .htaccess для использования php72-fcgi

mkdir -p /var/www/html/php56
mkdir -p /var/www/html/php72
echo "<?php phpinfo(); ?>" > /var/www/html/php56/index.php
echo "<?php phpinfo(); ?>" > /var/www/html/php72/index.php
echo "AddHandler php72-fcgi .php" > /var/www/html/php72/.htaccess

Теперь вы сможете протестировать его

(http://127.0.0.1/php56)
(http://127.0.0.1/php72)

Если вы хотите запустить этот экземпляр автоматически после перезагрузки сервера

sudo systemctl enable httpd
sudo systemctl enable php56-php-fpm
sudo systemctl enable php72-php-fpm
0 голосов
/ 04 мая 2018

Как объяснил @runwuf, это возможно при использовании коллекций программного обеспечения, доступных в репозитории centos-scl или в репозитории remi .

Но использование SetHandler для fastcgi-прокси кажется лучшим и более современным способом благодаря httpd 2.4:

SetHandler "proxy:fcgi://127.0.0.1:9000"

Это объясняется в некоторых сообщениях в блоге:

0 голосов
/ 24 апреля 2018

Похоже, то, что вы пытаетесь сделать, похоже на это:

running-two-php-version-on-the-same-server

Лично я не хотел бы пробовать две версии php на одном и том же экземпляре apache ... Я бы установил другую версию php с помощью tarball и запустил их на отдельном экземпляре apache, который также установлен tarball, и указывал каждый httpd.conf на разныеверсия php.

...