LAMP服务器上的多个php-fpm版本

时间:2018-02-20 12:23:20

标签: php linux apache2 linuxmint

(随着教程,之后在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模块,我按照以下步骤操作:

  1. sudo apt-get install apache2 apache2-utils mysql-server phpmyadmin
  2. sudo a2dismod php7.2 (which was installed with phpmyadmin)
  3. sudo add-apt-repository ppa:ondrej/php
  4. sudo apt-get update && sudo apt-get upgrade
  5. sudo apt-get install libapache2-mod-fastcgi libapache2-mod-fcgid
  6. 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
  7. 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
  8. sudo a2enmod actions
  9. sudo a2enmod fastcgi
  10. sudo a2enmod fcgid
  11. sudo a2enmod rewrite
  12. sudo a2enmod suexec
  13. sudo a2enmod include(a2enmod&只是为了检查它们是否已启用)
  14. sudo service apache2 restart(重启服务器以便正确加载所有内容)
  15. /etc/apache2/sites-available中创建了2个文件,一个php56.conf,一个php70.conf
  16. /var/www/html中创建了2个directorys,一个PHP 5.6,一个PHP 7.0
  17. sudo a2dissite 000-default(禁用默认网站)
  18. sudo a2ensite php56 php70(启用PHP 5.6和PHP 7.0站点)
  19. sudo service apache2 restart
  20. /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>
    
  21. /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>
    
  22. 在PHP 5.6和&amp; PHP 7.0目录我创建了一个文件info.php

    <?php phpinfo() ?>
    
  23. sudo service apache2 restart(重新加载已更改的配置)

  24. 现在,LAMP服务器安装了php5.6-fpm&amp; php7.0-fpm但现在我的第一个问题出现了。

    当我在Web浏览器中打开PHP 7.0站点时,它向我显示正确的phpinfo(),它告诉我:

      

    PHP Version 7.0.27-1 + ubuntu16.04.1 + deb.sury.org + 1      服务器API FPM / FastCGI      加载配置文件/etc/php/7.0/fpm/php.ini ...

    但是当我在网络浏览器中打开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 Version 5.6.33-3 + ubuntu16.04.1 + deb.sury.org + 1   服务器API FPM / FastCGI   加载配置文件/etc/php/5.6/fpm/php.ini ...

    从那时起,我向Thomas Christlieb寻求帮助,并按照他的指示做了以下内容:

    1. a2dissite php56 php70(禁用两个站点配置文件)
    2. a2ensite 000-default(再次启用默认配置文件)
    3. 对&#39; /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>
      
    4. sudo service apache2 restart(重新加载新配置)

    5. 所以,但是现在当我打开这两个网站时,我得到完全相同的错误消息&#39;内部服务器错误&#39;,但这两个消息是不同的字体, 我想这可能意味着它应该像这样工作,因为否则他们应该完全相同,或者我错了?

      我搜索了很多,也在这里查了一下,但这个问题并没有真正存在,因为我在配置中不使用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-fpmphp7.0-fpmapache2的状态,它们都是3个有效(正在运行),所以我不能再帮助自己了,需要帮助。

1 个答案:

答案 0 :(得分:0)

所以不再需要答案,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

现在一切正常,但应该如此。

感谢。