Como configuro permissões para o apache executar programas fastCGI?

0

Estou tentando fazer com que o Apache2.4 execute programas fastcgi compilados em um sistema baseado no Ubuntu 14.04. Estou usando mod_fastcgi e estou recebendo os erros

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'

meu bloco de configuração do apache parece

<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>

se ajudar o código do 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-data possui e possui direitos exec para o programa, e possui permissões de gravação para o diretório fcgi para o arquivo sock. Esta é minha primeira vez configurando qualquer coisa para rodar como fastcgi além de perl para sempre e parece que eu não tenho o google-fu para encontrar informações efetivas sobre este assunto.

Se alguém puder apontar o que estou fazendo errado ou o que eu perdi, faça isso.

    
por cargo 15.06.2015 / 00:06

1 resposta

1

Então, depois de alguns rostos palmarem o trecho de código, eu estava usando seg com falha em getenv("SERVER_HOSTNAME") see

  "Request number %d running on host <i>%s</i>\n",
  ++count, getenv("SERVER_HOSTNAME"));

então eu substituí isso com (também consertei o html)

   "Request number %d running on host <i>host</i></body></html>\n",
    ++count);

e na configuração do apache, simplifiquei para

<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi
  FastCgiServer /var/www/fcgi/fhello.fcgi
  ScriptAlias /fhello.fcgi "/var/www/fcgi/fhello.fcgi"
</IfModule>

permitindo que o servidor gerencie a conexão. Eu ainda não descobri o problema de permissões que eu estava obtendo, mas tudo está funcionando como eu quero agora.

    
por cargo 15.06.2015 / 04:18