mod_fcgid: ошибка чтения данных с сервера FastCGI
Это мой первый пост здесь, хотя я часто ищу и нахожу ответы здесь. На этот раз я потратил пару дней на поиск различных сайтов, но, к сожалению, ни один из ответов в других темах не помог в моем случае.
Я управляю несколькими LAMP-серверами, на каждом из которых размещается от 10 до 15 виртуальных хостов. Каждый сервер имеет панель управления для администратора и клиента для управления сайтами. Последние несколько лет это хорошо работает на Centos 6 с mod_php.
Сейчас я обновляю панель управления для запуска на Centos 7 с PHP, установленным как mod_fcgid.
Каждый виртуальный хост имеет свой собственный файл Apache Conf, как показано ниже:
<VirtualHost 136.243.195.117:80>
DocumentRoot "/home/c7demose/public_html"
ServerName c7.demoserver.co.za
ServerAlias www.c7.demoserver.co.za mail.c7.demoserver.co.za ftp.c7.demoserver.co.za
<IfModule mod_fcgid.c>
SuexecUserGroup c7demose c7demose
<Directory /home/c7demose/public_html>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/php-fcgi-scripts/c7.demoserver.co.za/php-fcgi-starter .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
</VirtualHost>
Там нет проблем с этим, и каждый сайт работает, как ожидалось. В прошлом это работало так, что панель управления прослушивает другой порт, а ее файл конфигурации vhost прослушивает любой IP-адрес и не имеет переменной ServerName, поэтому не имеет значения, какое доменное имя использует пользователь, будет перенаправлять на панель управления, если они используют правильный порт.
Другими словами, пользователь с доменом user_one.com может перейти на user_one.com:10025, а второй пользователь - на свой user_two.com:10025, и оба получить доступ к панели управления:
<VirtualHost *:10025>
DocumentRoot "/var/www/html/webcp"
<IfModule mod_fcgid.c>
SuexecUserGroup apache apache
<Directory /var/www/html/webcp>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/php-fcgi-scripts/localhost/php-fcgi-starter .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
</VirtualHost>
Это хорошо работало в старой настройке с использованием mod_php. С mod_fcgid Не работает при попытке получить доступ к панели управления с этим типом ситуации "поймать все".
Браузер отображает 500, внутренняя ошибка, а журналы ошибок httpd показывают следующее:
[Mon Mar 14 00:06:03.684684 2016] [authz_core:debug] [pid 2585] mod_authz_core.c(809): [client 165.255.92.82:40036] AH01626: authorization result of Require all granted: granted
[Mon Mar 14 00:06:03.684725 2016] [authz_core:debug] [pid 2585] mod_authz_core.c(809): [client 165.255.92.82:40036] AH01626: authorization result of <RequireAny>: granted
[Mon Mar 14 00:06:03.783142 2016] [authz_core:debug] [pid 2585] mod_authz_core.c(809): [client 165.255.92.82:40036] AH01626: authorization result of Require all granted: granted
[Mon Mar 14 00:06:03.783178 2016] [authz_core:debug] [pid 2585] mod_authz_core.c(809): [client 165.255.92.82:40036] AH01626: authorization result of <RequireAny>: granted
[Mon Mar 14 00:06:03.785111 2016] [fcgid:info] [pid 2581] mod_fcgid: server c7.demoserver.co.za:/var/www/php-fcgi-scripts/localhost/php-fcgi-starter(11458) started
[Mon Mar 14 00:06:03.790277 2016] [fcgid:warn] [pid 2585] (104)Connection reset by peer: [client 165.255.92.82:40036] mod_fcgid: error reading data from FastCGI server
[Mon Mar 14 00:06:03.790305 2016] [core:error] [pid 2585] [client 165.255.92.82:40036] End of script output before headers: index.php
[Mon Mar 14 00:06:09.790430 2016] [fcgid:info] [pid 2581] mod_fcgid: process /var/www/php-fcgi-scripts/localhost/php-fcgi-starter(11458) exit(communication error), terminated by calling exit(), return code: 107
В идеале я хотел бы, чтобы все это работало с fast_cgi, но если есть способ, с помощью которого я могу заставить виртуальные хосты продолжать работать с fcgi и просто панель управления на порту 10025 для запуска с использованием mod_php, то это было бы приемлемым промежуточным временем. Решение, я просто не знаю, как или даже если это возможно.
Заранее спасибо!
Джон