Aktivieren Sie FastCGI auf Apache mit Puppetlabs/Apache

Aktivieren Sie FastCGI auf Apache mit Puppetlabs/Apache

Ich verwende Puppetlabs/Apache, um Apache zu konfigurieren. In der Hauptpuppet-Datei rufe ich es auf und konfiguriere es:

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

Das apache::mod::fastcgiManifest funktioniert reibungslos ... mit einem Nachteil: PHP läuft irgendwie immer noch im (cli)Modus:

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

Um das zu bestätigen, habe ich einen phpinfo()Aufruf zur phpinfo.phpDatei „a“ hinzugefügt und geprüft , php /path/to/phpinfo.php | lessund Service APIder Wert liegt immer noch bei cli.

Wenn ich hineinschaue /etc/apache2/mods-enabled, kann ich sehen fastcgi.confund fastcgi.load. Ich habe den Inhalt überprüft sudo nano fastcgi.conf/load- der aus demfastcgi.conf.erbVorlage aus dem Modul:

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

Hinweis: Es gibt einevhosts.erbVorlagesowie, die eineUntervorlage_fastcgi.erbdas den FastCGI-Block für die Vhosts-Vorlage erstellt.

Wenn ich versuche, es mit einzurichten (was puppetlabs/apache::mod::fastcgi bereits erledigt haben sollte) sudo a2enmod fastcgi alias, erhalte ich die folgende Antwort (auf der CLI):

Module fastcgi already enabled
Module alias already enabled

Und wenn ich /etc/apache2/sites-enabledden Inhalt mit überprüfe sudo nano 15-default.conf, sehe ich Folgendes:

<VirtualHost *:80>
  # ...

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

Ich wechselte dann mit zum root/main-Benutzer und überprüfte das Verzeichnis, auf das in der Datei sudo suverwiesen wird : . Es hat nur einen Inhalt: Einen leeren Ordner namens . Könnte dies die Ursache des Problems sein: Eine leere FastCGI-Bibliothek?fastcgi.conf/var/lib/apache2/fastcgidynamic

Ich verstehe nicht wirklich, wie FastCGI aktiviert und ausgeführt werden kann, aber wenn ich lese, cliist das trotzdem der Modus, in dem ich PHP ausführe.

Bearbeiten 1

Ich habe gerade geprüft, ob php-fpmes läuft:

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

Ich habe auch neu gestartet php5-fpmund apache2die Dienste manuell, aber mit dem gleichen Ergebnis

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

Wenn ich wüsste, was fehlt, könnte ich die httpd.conf.erbVorlage manuell neu schreiben oder einfach die fehlenden Teile einfügen und die Standardvorlagen von Puppetlabs/Apache verwenden - wieDies ist eine Option für das Modul. Das gleiche gilt für'/etc/apache2/mods-available'oder der'/etc/apache2/sites-available'dir

Antwort1

Erstens: Wenn Sie php -v auf der Shell ausführen, erhalten Sie immer die CLI-Version. Weil Sie sich auf der Befehlszeilenschnittstelle befinden ...

Wie haben Sie Ihr PHP-FPM-Modul installiert? Welchen Modus haben Sie verwendet? (TCP oder SOCK?) Haben Sie bereits einen virtuellen Host konfiguriert? => Nicht den Standard-Host. Überprüfen Sie bitte das Verzeichnis „Sites-Enabled“, dort sollte eine Datei mit $fqdn vorhanden sein ($fqdn steht für Ihren vollqualifizierten Domänennamen, z. B. example.com).

mit Apache 2.4 und mod_proxy_fcgi können Sie .php-Anfragen einfach über die vhost-Konfiguration an Ihren FPM-Pool weiterleiten:

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

=> überprüfen Sie Ihren virtuellen Host, ob eine solche Anweisung vorhanden ist

verwandte Informationen