Включить FastCGI на Apache с Puppetlabs/Apache
Я использую Puppetlabs/Apache для настройки Apache. В основном файле кукол я вызываю и настраиваю его:
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
/ основной пользователь с 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? => не по умолчанию - проверьте каталог с поддержкой сайтов, там должен быть файл с $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, если есть такая директива