Я пытаюсь заставить Apache2.4 запускать скомпилированные fastcgi программы на Ubuntu система на основе 14.04. Я использую mod_fastcgi и получаю ошибки
FastCGI: can't start server "/var/www/fcgi/fhello.fcgi" (pid 29037), execle() failed: Permission denied
[Sun Jun 14 14:16:23.322632 2015] [:warn] [pid 29022] FastCGI: server "/var/www/fcgi/fhello.fcgi" (pid 29037) terminated by calling exit with status '255'
мой апачский блок конфигурации похож
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiWrapper /var/lib/apache2/fastcgi
FastCgiServer /var/www/fcgi/fhello.fcgi -socket /var/www/fcgi/fhello.sock -user www-data -group www-data
ScriptAlias /fhello "/var/www/fcgi/fhello.fcgi"
<Directory /var/www/fgci>
Require all granted
Options ExecCGI
</Directory>
</IfModule>
если помогает, что код fhello
#include "fcgi_stdio.h" /* fcgi library; put it first*/
#include <stdlib.h>
int count;
void initialize(void) {
count=0;
}
int main(void) {
/* Initialization. */
initialize();
/* Response loop. */
while (FCGI_Accept() >= 0) {
printf("Content-type: text/html\r\n"
"\r\n"
"<title>FastCGI Hello! (C, fcgi_stdio library)</title>"
"<h1>FastCGI Hello! (C, fcgi_stdio library)</h1>"
"Request number %d running on host <i>%s</i>\n",
++count, getenv("SERVER_HOSTNAME"));
}
return 0;
}
www-данные владеют и имеют исполнительные права на программу и имеют полномочия записи к fcgi dir для файла носка. Это - мой первый раз, настраивая что-либо для выполнения как fastcgi помимо жемчуга навсегда назад, и мне, кажется, недостает google-fu для нахождения эффективной информации об этом предмете.
Если кто-либо может указать на то, что я делаю неправильно или что я пропустил, сделайте так.
Таким образом, после некоторой поверхности, гладящей фрагмент кода, я использовал seg, давший сбой в getenv("SERVER_HOSTNAME")
, видят
"Request number %d running on host <i>%s</i>\n",
++count, getenv("SERVER_HOSTNAME"));
, таким образом, я заменил это (также зафиксировал HTML)
"Request number %d running on host <i>host</i></body></html>\n",
++count);
, и в апачской конфигурации я упростил его до
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCgiServer /var/www/fcgi/fhello.fcgi
ScriptAlias /fhello.fcgi "/var/www/fcgi/fhello.fcgi"
</IfModule>
разрешение серверу управлять подключением. Я все еще не выяснил проблему полномочий, которую я получал выше, но все работает, поскольку я хочу ее теперь.