Включить FastCGI на Apache с помощью Puppetlabs/Apache

Включить FastCGI на Apache с помощью Puppetlabs/Apache

Я использую Puppetlabs/Apache для настройки Apache. В главном файле puppet я вызываю и настраиваю его:

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

Манифест apache::mod::fastcgiработает безупречно... с одним недостатком: PHP каким-то образом все еще работает в (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

Чтобы подтвердить это, я добавил phpinfo()вызов в файл phpinfo.phpи проверил php /path/to/phpinfo.php | less, и Service APIон по-прежнему находится в cli.

Когда я смотрю в /etc/apache2/mods-enabled, я вижу fastcgi.confи fastcgi.load. Я проверил содержимое sudo nano fastcgi.conf/load- которое исходит изfastcgi.conf.erbшаблон из модуля:

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

Примечание: естьvhosts.erbшаблона также, который имеетподшаблон_fastcgi.erbкоторый создает блок FastCGI для шаблона vhosts.

Когда я пытаюсь настроить его (что puppetlabs/apache::mod::fastcgi уже должен был сделать) с помощью sudo a2enmod fastcgi alias, я получаю следующий ответ (в CLI):

Module fastcgi already enabled
Module alias already enabled

И когда я проверяю /etc/apache2/sites-enabledсодержимое с помощью sudo nano 15-default.conf, я вижу следующее:

<VirtualHost *:80>
  # ...

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

Затем я переключился на rootпользователя /main с помощью sudo suи проверил каталог, на который ссылается файл fastcgi.conf: /var/lib/apache2/fastcgi. В нем только одно содержимое: пустая папка с именем dynamic. Может ли это быть источником проблемы: пустая библиотека FastCGI?

Я не совсем понимаю, как включить и запустить FastCGI, но все же читаю, что cliэто тот режим, в котором я запускаю PHP.

Редактировать 1

Я только что проверил, php-fpmработает ли:

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

Я также перезапускал php5-fpmслужбы apache2вручную, но результат тот же.

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

Если бы я знал, чего не хватает, я мог бы вручную переписать шаблон httpd.conf.erbили просто добавить те части, которых не хватает, и использовать шаблоны puppetlabs/apache по умолчанию, как показано ниже.это опция для модуля. То же самое касается'/etc/apache2/mods-available'или'/etc/apache2/sites-available'реж

решение1

Первое: если вы выполните php -v в оболочке, вы всегда получите версию cli. Потому что вы находитесь в интерфейсе командной строки...

как вы установили свой модуль php-fpm? какой режим вы использовали? (tcp или sock?) вы уже настроили vhost? => не тот, что по умолчанию - проверьте каталог sites-enabled, там должен быть файл с $fqdn ($fqdn означает ваше полное доменное имя, например example.com)

с помощью Apache 2.4 и mod_proxy_fcgi вы можете легко передавать запросы .php в ваш пул FPM через конфигурацию vhost:

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

=> проверьте ваш vhost, есть ли такая директива

Связанный контент