使用 Puppetlabs/Apache 在 Apache 上啟用 FastCGI

使用 Puppetlabs/Apache 在 Apache 上啟用 FastCGI

我正在使用 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()對 aphpinfo.php文件的調用並檢查php /path/to/phpinfo.php | lessService API仍然位於cli.

當我觀察時/etc/apache2/mods-enabled,我可以看到fastcgi.conffastcgi.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為 vhosts 模板建立 FastCGI 塊。

當我嘗試使用 進行設定(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-fpmapache2服務,但結果相同

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

首先:如果您在 shell 上執行 php -v,您將始終獲得 cli 版本。因為你在命令列介面上......

你是如何安裝 php-fpm 模組的?您使用的是哪一種模式? (tcp 還是 sock?)您已經配置了虛擬主機嗎? =>不是預設的 - 請檢查啟用網站的目錄,應該有一個帶有 $fqdn 的檔案($fqdn 表示您的完全限定域名,例如 example.com)

使用 apache 2.4 和 mod_proxy_fcgi,您可以透過 vhost 配置輕鬆地將 .php 請求傳遞到 FPM 池:

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

=> 檢查你的虛擬主機是否有這樣的指令

相關內容