我正在使用Puppetlabs / Apache来configurationApache。 在主傀儡文件中,我调用并configuration它:
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 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模板 ,它有一个为vhosts模板构buildFastCGI块的子模板_fastcgi.erb 。
当我试图用sudo a2enmod fastcgi alias来设置(哪个puppetlabs / apache :: mod :: fastcgi应该已经完成)时,我得到以下答案(在CLI上):
Module fastcgi already enabled Module alias already enabled
当我用sudo nano 15-default.conf检查/etc/apache2/sites-enabled内容时,我看到以下内容:
<VirtualHost *:80> # ... ## Script alias directives ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin" </VirtualHost>
然后使用sudo su切换到root / main用户,并检查fastcgi.conf文件中引用的目录: /var/lib/apache2/fastcgi 。 它只有一个内容:一个名为dynamic的空文件夹。 这可能是问题的根源:一个空的FastCGI库?
我无法真正了解如何启用和运行FastCGI,但仍然阅读该cli是我运行PHP的模式。
我只是检查,如果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)
如果我知道缺less的东西,我可以手动重写httpd.conf.erb模板,或者只是将那些缺less的部分引用,并使用默认的puppetlabs / apache模板 – 因为这是模块的一个选项 。 '/etc/apache2/mods-available'或'/etc/apache2/sites-available'目录也是如此
首先:如果你在shell上执行php -v,你将永远得到cli版本。 因为你在命令行界面…
你是如何安装你的php-fpm模块的? 你使用哪种模式? (tcp或sock?)你已经configuration了一个虚拟主机? =>不是默认的 – 请检查启用网站的目录,应该有一个文件与$ fqdn($ fqdn意味着您的完全合格的域名如example.com)
使用apache 2.4和mod_proxy_fcgi,您可以轻松地通过vhost config将.php请求传递给您的FPM池:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1
=>检查你的虚拟主机,如果有这样的指示