这里的任何人都可以指示我在CentOS 7上安装和配置一个apache实例的Multi PhP,以及测试它的正确方法..
答案 0 :(得分:14)
以下命令假设您已经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
使脚本包装器调用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
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
答案 1 :(得分:6)
正如@runwuf所解释的那样,可以使用centos-scl存储库或remi存储库中提供的软件集合。
但是使用SetHandler进行fastcgi代理看起来更好,更现代,这要归功于httpd 2.4:
SetHandler "proxy:fcgi://127.0.0.1:9000"
在一些博文中解释了这一点:
答案 2 :(得分:0)
看起来你要做的就是这样:
running-two-php-versions-on-the-same-server
我个人不想在同一个apache实例上尝试两个php版本...我会通过tarball安装不同版本的php并在单独的apache实例上运行它们也是由tarball安装并指向每个httpd.conf到不同版本的PHP。
答案 3 :(得分:0)
我必须将以下内容添加到我的php.conf目录语句内使Apache服务器API变化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>
答案 4 :(得分:0)
回复runwuf
你好, 关于SELinux的方法存在一个问题
要么禁用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模块
答案 5 :(得分:0)
我在这里徘徊,寻找解决方案。 CentOS现在有一个PHP Select,可让您在服务器上运行不同版本的PHP。
更多信息可以在这里找到:http://forum.centos-webpanel.com/php/php-selector/