ここにいる誰もが、CentOS 7で1つのApacheインスタンスを使用してMulti PhPをインストールおよび構成する方法と、それをテストする適切な方法を教えてくれますか?.
次のコマンドは、すでに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
systemctl stop php56-php-fpm
systemctl stop php72-php-fpm
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
systemctl start php72-php-fpm
systemctl start php56-php-fpm
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
Sudo chmod 755 /var/www/cgi-bin/php56.fcgi
Sudo chmod 755 /var/www/cgi-bin/php72.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
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
@runwufで説明されているように、これは centos-scl リポジトリまたは remi リポジトリで利用可能なソフトウェアコレクションを使用して可能です。
しかし、httpd 2.4のおかげで、SetHandlerをfastcgiプロキシに使用する方がより適切でモダンな方法に見えます。
SetHandler "proxy:fcgi://127.0.0.1:9000"
これはいくつかのブログ投稿で説明されています:
あなたがしようとしていることはこれに似ているようです:
running-two-php-versions-on-the-same-server
私は個人的には同じApacheインスタンスで2つのphpバージョンを試したくありません... tarballによって異なるバージョンのphpをインストールし、tarballによってもインストールされるApacheの別のインスタンスでそれらを実行し、各httpd.confを異なるものにポイントしますPHPのバージョン。
runwufに返信
こんにちは、SELinuxに関するアプローチに1つの問題があります
sELinuxを無効にする(セキュリティに関心がない場合)、またはSELinuxポートポリシーを管理する
SELinuxを処理しない場合、SELinuxが「強制」モードに設定されているとphp56-php-fpmが起動しません
次のコマンドを実行して、SELinuxにポートを許可させます。
semanage port -a -t http_port_t -p tcp 9072
semanage port -a -t http_port_t -p tcp 9056
そして最後にfpmモジュールを起動してみます
ApacheのサーバーAPIをCGI/FastCGIではなくFPM/FastCGIに変更するには、php.confの以下をディレクトリステートメント内に追加する必要がありましたが、ソリューションはほぼ完璧でした。 TCPの代わりにソケットを使用する方法を理解できれば、私は1つの幸せなコーダーになります。
# mod_proxy_fcgi options
<IfModule mod_proxy_fcgi.c>
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9072"
</FilesMatch>
</IfModule>