Ativar o FastCGI no Apache com o Puppetlabs / Apache

4

Estou usando o Puppetlabs / Apache para configurar o Apache. No arquivo principal do fantoche, eu chamo e configuro:

class { '::apache': }
class { '::apache::mod::fastcgi': }
apache::vhost { "${::fqdn} non-ssl":
    servername      => $::fqdn,
    port            => '2222',
    docroot         => "/var/www/${root}",
    priority        => 10,
}

O manifesto apache::mod::fastcgi funciona perfeitamente ... com uma desvantagem: o PHP de alguma forma ainda é executado no modo (cli) :

vagrant@wp:/etc/apache2/mods-enabled$ php -v
PHP 5.5.12-1+deb.sury.org~precise+1 (cli) (built: May  8 2014 21:04:38)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

Para confirmar isso, adicionei uma chamada phpinfo() ao arquivo a phpinfo.php e verifiquei php /path/to/phpinfo.php | less e Service API ainda está em cli .

Quando olho para /etc/apache2/mods-enabled , posso ver fastcgi.conf e fastcgi.load . Eu verifiquei o conteúdo sudo nano fastcgi.conf/load - que vem do fastcgi.conf.erb template do módulo :

# ===> fastcgi.conf
# The Fastcgi Apache module configuration file is being
# managed by Puppet and changes will be overwritten.
<IfModule mod_fastcgi.c>
  AddHandler fastcgi-script .fcgi
  FastCgiIpcDir "/var/lib/apache2/fastcgi"
</IfModule>

# ===> fastcgi.load
adModule fastcgi_module /usr/lib/apache2/modules/mod_fastcgi.so

Observação: há um vhosts.erb template também, que tem um submodelo _fastcgi.erb constrói o bloco FastCGI para o modelo vhosts.

Quando tento configurá-lo (o que puppetlabs / apache :: mod :: fastcgi já deveria ter feito) com sudo a2enmod fastcgi alias , recebo a seguinte resposta (no CLI):

Module fastcgi already enabled
Module alias already enabled

E quando eu verifico o conteúdo de /etc/apache2/sites-enabled com sudo nano 15-default.conf , vejo o seguinte:

<VirtualHost *:80>
  # ...

  ## Script alias directives
  ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin"
</VirtualHost>

Eu mudei para o usuário root / main com sudo su e verifiquei o diretório que é referenciado no arquivo fastcgi.conf : /var/lib/apache2/fastcgi . Só tem um conteúdo: uma pasta vazia chamada dynamic . Esta poderia ser a fonte do problema: Uma biblioteca FastCGI vazia?

Eu realmente não consigo entender como o FastCGI pode ser ativado e executado, mas ainda leio que cli é o modo em que estou executando o PHP.

Editar 1

Acabei de verificar se php-fpm está em execução:

vagrant@wp:/etc/apache2/conf.d$ ps -ef | grep php-fpm
root       935     1  0 15:58 ?        00:00:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data   982   935  0 15:58 ?        00:00:00 php-fpm: pool www
www-data   983   935  0 15:58 ?        00:00:00 php-fpm: pool www
vagrant   2760  2605  0 19:40 pts/2    00:00:00 grep --color=auto php-fpm

Eu também reiniciei php5-fpm e apache2 services manualmente, mas com o mesmo resultado

sudo service php5-fpm restart
sudo service apache2 restart
php -v
# still: (cli)

Se eu soubesse o que está faltando, eu poderia reescrever manualmente o modelo httpd.conf.erb ou apenas extrair as partes que estão faltando e usar os modelos padrão do puppetlabs / apache - como esta é uma opção para o módulo . O mesmo vale para '/etc/apache2/mods-available' ou o '/etc/apache2/sites-available' dir

    
por kaiser 09.05.2014 / 17:06

1 resposta

1

Primeiro: se você executa php -v no shell, sempre terá a versão cli. Porque você está na interface de linha de comando ...

como você instalou seu módulo php-fpm? qual modo você usou? (tcp ou meia?) você já configurou um vhost? = > não o padrão - por favor, verifique o diretório habilitado para sites, deve haver um arquivo com $ fqdn ($ fqdn significa seu nome de domínio totalmente qualificado, como example.com)

com o apache 2.4 e o mod_proxy_fcgi você pode facilmente passar solicitações .php para o seu pool FPM sobre a configuração do vhost:

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1

= > verifique seu vhost se houver tal diretiva

    
por 03.06.2014 / 14:11