(С помощью учебника, а затем и с помощью Томаса Кристлиба)
Используемая сейчас конфигурация следующая:
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
, один php56.conf
, один php70.conf
/var/www/html
один PHP 5.6, один PHP 7.0sudo 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 установлен с 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 …
После этого я попросил Томаса Кристлиба о помощи, и с его указаниями я сделал следующее:
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
(перезагрузить новую конфигурацию)
Но теперь, когда я открываю оба сайта, я получаю одно и то же сообщение об ошибке «Внутренняя ошибка сервера», но эти два сообщения имеют другой шрифт,
что, я полагаю, может означать, что это должно работать так, потому что в противном случае они должны быть точно такими же, или я ошибаюсь?
Я много гуглял, тоже смотрел здесь, но этой проблемы не было, потому что я не использую ни докер, ни 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 активны (работают), поэтому я больше не могу помочь себе и нуждаюсь в помощи.
Так что больше нет необходимости в ответе, Томас Кристлеб нашел проблему сейчас.
В моем 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
и теперь все работает просто отлично, как и должно.
Благодарю.
Других решений пока нет …