linux — несколько версий php-fpm на сервере LAMP

(С помощью учебника, а затем и с помощью Томаса Кристлиба)

Используемая сейчас конфигурация следующая:

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. создал 2 файла в /etc/apache2/sites-available, один php56.conf, один php70.conf
  16. создал 2 директории в /var/www/htmlодин 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 & Каталоги PHP 7.0 Я создал файл info.php

    <?php phpinfo() ?>
    
  23. sudo service apache2 restart (перезагрузить измененную конфигурацию)


Итак, теперь сервер LAMP установлен с 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 …


Но когда я открываю сайт PHP 5.6 в веб-браузере, он показывает мне то же самое phpinfo() выход.
Поэтому я попытался отключить сайт PHP 7.0, чтобы проверить, не повреждена ли моя конфигурация PHP 5.6.

sudo a2dissite php70
sudo service apache2 reload

Теперь, когда я открываю PHP 5.6 (то же самое для PHP 7.0), он показывает мне phpinfo для PHP версии 5.6 вот так:

Версия PHP 5.6.33-3 + ubuntu16.04.1 + deb.sury.org + 1
Серверный API FPM / FastCGI
Загруженный файл конфигурации /etc/php/5.6/fpm/php.ini …


После этого я попросил Томаса Кристлиба о помощи, и с его указаниями я сделал следующее:

  1. a2dissite php56 php70 (чтобы отключить оба файла конфигурации сайта)
  2. a2ensite 000-default (чтобы снова включить файл конфигурации по умолчанию)
  3. Сделаны следующие изменения в /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 (перезагрузить новую конфигурацию)

Но теперь, когда я открываю оба сайта, я получаю одно и то же сообщение об ошибке «Внутренняя ошибка сервера», но эти два сообщения имеют другой шрифт,
что, я полагаю, может означать, что это должно работать так, потому что в противном случае они должны быть точно такими же, или я ошибаюсь?

Я много гуглял, тоже смотрел здесь, но этой проблемы не было, потому что я не использую ни докер, ни 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 активны (работают), поэтому я больше не могу помочь себе и нуждаюсь в помощи.

0

Решение

Так что больше нет необходимости в ответе, Томас Кристлеб нашел проблему сейчас.

В моем 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

и теперь все работает просто отлично, как и должно.

Благодарю.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]