[英]Multiple php-fpm versions on LAMP Server
(在本教程中,然后在Thomas Christlieb的帮助下)
现在使用的配置如下:
System runs on an "old" HP EliteBook,
which should run as test server before going live + backup server
SystemOS : Linux Mint 18.3 (based on Ubuntu 16.04)
Access to Site via Windows PC in same Network
要安装LAMP Server + fpm模块,我遵循以下步骤:
sudo apt-get install apache2 apache2-utils mysql-server phpmyadmin
sudo a2dismod php7.2 (which was installed with phpmyadmin)
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install libapache2-mod-fastcgi libapache2-mod-fcgid
sudo apt-get install php5.6-fpm php5.6 php5.6-mcrypt php5.6-mbstring php5.6-mysql php5.6-zip php5.6-gd php5.6-xml
sudo apt-get install php7.0-fpm php7.0 php7.0-mcrypt php7.0-mbstring php7.0-mysql php7.0-zip php7.0-gd php7.0-xml
sudo a2enmod actions
sudo a2enmod fastcgi
sudo a2enmod fcgid
sudo a2enmod rewrite
sudo a2enmod suexec
sudo a2enmod include
(a2enmod仅用于检查它们是否已启用) sudo service apache2 restart
(重新启动服务器,以便将所有内容正确加载) /etc/apache2/sites-available
创建了2个文件,一个php56.conf
,一个php70.conf
/var/www/html
创建了2个目录,一个PHP 5.6,一个PHP 7.0 sudo a2dissite 000-default
(禁用默认站点) sudo a2ensite php56 php70
(启用PHP 5.6和PHP 7.0站点) sudo service apache2 restart
/etc/apache2/sites-available/php56.conf:
<IfModule mod_fastcgi.c> AddHandler php56-fcgi-www .php Action php56-fcgi-www /php56-fcgi-www Alias /php56-fcgi-www /usr/lib/cgi-bin/php56-fcgi-www FastCgiExternalServer /usr/lib/cgi-bin/php56-fcgi-www -socket /run/php/php5.6-fpm.sock -pass-header Authorization <Directory "usr/lib/cgi-bin"> Require all granted </Directory> </IfModule> <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName php56 DocumentRoot /var/www/html/php56 <Directory "/var/www/html/php56"> Options Indexes FollowSymLinks MultiViews AllowOverride All SetHandler php56-fcgi-www </Directory> ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log combined </VirtualHost>
/etc/apache2/sites-available/php70.conf:
<IfModule mod_fastcgi.c> AddHandler php70-fcgi-www .php Action php70-fcgi-www /php70-fcgi-www Alias /php70-fcgi-www /usr/lib/cgi-bin/php70-fcgi-www FastCgiExternalServer /usr/lib/cgi-bin/php70-fcgi-www -socket /run/php/php7.0-fpm.sock -pass-header Authorization <Directory "usr/lib/cgi-bin"> Require all granted </Directory> </IfModule> <VirtualHost *:80> ServerAdmin webmaster@localhost ServerName php70 DocumentRoot /var/www/html/php70 <Directory "/var/www/html/php70"> Options Indexes FollowSymLinks MultiViews AllowOverride All SetHandler php70-fcgi-www </Directory> ErrorLog $(APACHE_LOG_DIR)/error.log CustomLog $(APACHE_LOG_DIR)/access.log combined </VirtualHost>
在PHP 5.6和PHP 7.0目录中,我都创建了一个文件info.php
<?php phpinfo() ?>
sudo service apache2 restart
(重新加载更改的配置)
因此,现在LAMP Server已安装了php5.6-fpm
和php7.0-fpm
但现在出现了我的第一个问题。
当我在网络浏览器中打开PHP 7.0网站时,它向我显示了正确的phpinfo()
,它告诉我:
PHP版本7.0.27-1 + ubuntu16.04.1 + deb.sury.org + 1服务器API FPM / FastCGI加载的配置文件/etc/php/7.0/fpm/php.ini ...
但是,当我在Web浏览器中打开PHP 5.6网站时,它向我显示了完全相同的phpinfo()
输出。 因此,我尝试禁用PHP 7.0站点以检查我的PHP 5.6配置是否损坏。
sudo a2dissite php70
sudo service apache2 reload
现在,当我打开PHP 5.6(与PHP 7.0相同)时,它向我显示了PHP版本5.6的phpinfo
,如下所示:
PHP版本5.6.33-3 + ubuntu16.04.1 + deb.sury.org + 1服务器API FPM / FastCGI加载的配置文件/etc/php/5.6/fpm/php.ini ...
从那以后,我向托马斯·克里斯特利布(Thomas Christlieb)寻求帮助,并在他的指示下做了以下几点:
a2dissite php56 php70
(同时禁用两个站点配置文件) a2ensite 000-default
(再次启用默认配置文件) 对'/etc/apache2/sites-available/000-default.conf'进行了以下修改
<IfModule mod_fastcgi.c> AddHandler php56-fcgi-www .php Action php56-fcgi-www /php56-fcgi-www Alias /php56-fcgi-www /usr/lib/cgi-bin/php56-fcgi-www FastCgiExternalServer /usr/lib/cgi-bin/php56-fcgi-www -socket /run/php5.6-fpm.sock -pass-header Authorization <Directory "/usr/lib/cgi-bin"> Require all granted </Directory> AddHandler php70-fcgi-www .php Action php70-fcgi-www /php70-fcgi-www Alias /php70-fcgi-www /usr/lib/cgi-bin/php70-fcgi-www FastCgiExternalServer /usr/lib/cgi-bin/php70-fcgi-www -socket /run/php7.0-fpm.sock -pass-header Authorization <Directory "/usr/lib/cgi-bin"> Require all granted </Directory> </IfModule> <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/html/php70"> Options Indexes FollowSymLinks MultiViews AllowOverride All SetHandler php70-fcgi-www </Directory> <Directory "/var/www/html/php56"> Options Indexes FollowSymLinks MultiViews AllowOverride All SetHandler php56-fcgi-www </Directory> </VirtualHost>
sudo service apache2 restart
(重新加载新配置)
因此,但是现在当我打开两个站点时,都收到完全相同的错误消息“内部服务器错误”,但是这两条消息的字体不同,我想这可能意味着它应该像这样工作,因为否则它们应该完全一样一样,还是我错了?
我在附近搜索了很多东西,也在这里查找,但是这个问题实际上并没有出现,因为我在配置中没有使用docker或Nginx。 也许有人已经遇到了这样的问题,可以告诉我如何解决我所缺少的最后一步。
Access.log信息
...
100.100.100.11 - - [20/Feb/2018:08:26:14 +0100] "GET /php56/info.php HTTP/1.1" 500 805 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"
100.100.100.11 - - [20/Feb/2018:08:37:35 +0100] "GET /php56/info.php HTTP/1.1" 500 805 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0"
...
Error.log信息
...
[Tue Feb 20 09:30:08.166199 2018] [fastcgi:error] [pid 27475] (2)No such file or directory: [client 100.100.100.11:52772] FastCGI: failed to connect to server "/usr/lib/cgi-bin/php56-fcgi-www": connect() failed
[Tue Feb 20 09:30:08.166574 2018] [fastcgi:error] [pid 27475] [client 100.100.100.11:52772] FastCGI: incomplete headers (0 bytes) received from server "/usr/lib/cgi-bin/php56-fcgi-www"
...
这是我现在在浏览Error.log
注意到的,但我不知道为什么会这样。 我检查了php5.6-fpm
, php7.0-fpm
, apache2
,它们都处于活动状态3(正在运行),所以我php7.0-fpm
帮助自己,需要帮助。
因此,Thomas Christlieb不再需要答案,现在发现了问题。
在我的000-default.conf中,FastCgiExternalServer的内部路径错误。
他将/run/php5.6-fpm.sock更改为/run/php/php5.6-fpm.sock
和/run/php7.0-fpm.sock到/run/php/php7.0-fpm.sock
现在一切正常。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.