GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Richten Sie Apache 2.4 und Php FPM mit mod proxy fcgi auf Ubuntu 13.10 ein

mod_proxy_fcgi

Das Modul mod_proxy_fcgi ist neu und ermöglicht es Apache, sich mit einem externen Fastcgi-Prozessmanager wie php fpm zu verbinden/Anforderungen an ihn weiterzuleiten. Dies ermöglicht eine vollständige Trennung zwischen der Ausführung von PHP-Skripten und Apache.

Früher mussten wir Module wie mod_fcgid und mod_fastcgi verwenden, die alle einige Einschränkungen hatten. Mod_fcgid zum Beispiel hat die Prozessverwaltungsfähigkeit von php-cgi nicht richtig genutzt, während mod_fastcgi ein Modul eines Drittanbieters ist.

Mit der Ankunft von mod_proxy_fcgi Apache bekommt endlich die Fähigkeit, ordentlich mit externen fastcgi-Prozessmanagern zu kommunizieren, was ihn bei der Aufgabe effizienter macht.

Das Delegieren von PHP-Anfragen an externe FPM-Server reduziert die Belastung von Webservern wie Apache erheblich, was zu einer effizienten Nutzung der Maschinenressourcen und einer schnelleren Verarbeitung führt.

request page.php --> Apache --> Php FPM-Dienst --> Php-Prozess führt page.php aus

Zusammen mit all dem kann PHP fpm Opcode-Caching-Engines wie APC auf sehr stabile Weise ausführen.

In diesem Beitrag besteht unsere Aufgabe also darin, Apache + php-fpm mithilfe des mod_proxy_fcgi-Konnektors einzurichten.

1. Apache installieren und konfigurieren

Ubuntu 13.10 wird bereits mit Apache 2.4 ausgeliefert, sodass sich alle Installationsdateien im Repository selbst befinden.

Apache installieren, falls noch nicht geschehen

$ sudo apt-get install apache2

Aktivieren Sie mod_proxy_fcgi

$ sudo a2enmod proxy_fcgiAbhängigkeits-Proxy für proxy_fcgi berücksichtigen:Modul proxy_fcgi aktivieren. Modul proxy_fcgi aktivieren. Um die neue Konfiguration zu aktivieren, müssen Sie Folgendes ausführen:service apache2 restart

Starten Sie Apache neu

$ sudo service apache2 neustarten

Virtuelle Hosts konfigurieren

Die nächste Aufgabe besteht darin, einen vhost so zu konfigurieren, dass er den mod fcgi-Proxy verwendet, um mit fpm zu kommunizieren. Die vhost-Konfigurationsdateien werden an folgendem Ort gespeichert

/etc/apache2/sites-available

Gehen Sie dort hinein und erstellen Sie Ihre neue vhost-Konfigurationsdatei, indem Sie die Datei 000-default.conf kopieren, die mit Apache geliefert wird.

$ cd /etc/apache2/sites-available$ sudo cp 000-default.conf mysite.conf$ sudo nano mysite.conf

Jetzt ist es an der Zeit, den virtuellen Host zu konfigurieren. So habe ich die Datei konfiguriert

..... ServerName fpm.localhost ServerAdmin [email protected] DocumentRoot /var/www/mysite..... ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR} /access.log kombiniert..... #Include conf-available/serve-cgi-bin.conf ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/ var/www/mysite/$1  Order allow,deny Allow from all AllowOverride FileInfo All # Neue Direktive in Apache 2.4.3 erforderlich:Alle gewährten  

Die wichtigen Dinge, die zu beachten sind, sind :

1. Servername - Dies ist die Domain oder die Subdomain Ihres vhost. In diesem Beispiel habe ich fpm.localhost verwendet, sodass bei Verwendung dieser Subdomain auf localhost php fpm verwendet wird.

2. Dokumentenstamm - Dies ist das Stammverzeichnis dieses vhost, von dem aus die Webdateien bereitgestellt werden sollen.

3. ProxyPassMatch - Dies ist die Anweisung, die anweist, alle Anforderungen für ".php"-Dateien an den fcgi-Server unter 127.0.0.1:9000 weiterzuleiten. Hier würde unser PHP-fpm-Prozessmanager laufen. Mehr dazu im nächsten Abschnitt.
Die fcgi-URL muss den genauen Pfad zum Document Root enthalten. Andernfalls würde es beim Anfordern von Dateien "Datei nicht gefunden" sagen.

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/mysite/$1

Der erste Parameter ist das zu vergleichende Muster. Daher werden alle URLs, die ein ".php" enthalten, gefolgt von einem optionalen Schrägstrich und allem anderen, abgeglichen und der abgeglichene Teil wird an den fcgi-Server weitergeleitet, der unter 127.0.0.1:9000 läuft.

4. Erfordern Sie alle gewährten - Nach der ProxyPassMatch-Zeile haben wir einen Abschnitt mit den Anweisungen Require und AllowOverride hinzugefügt. Es ist ab Apache 2.4 erforderlich

Speichern Sie die Datei und aktivieren Sie sie mit dem Befehl a2ensite, der den Aufwand erspart, den Symlink im Verzeichnis „sites-enabled“ zu erstellen.

$ sudo a2ensite mysiteEnabling site mysite.Um die neue Konfiguration zu aktivieren, müssen Sie Folgendes ausführen:service apache2 reload

Laden Sie jetzt die Apache-Konfiguration neu

$ sudo service apache2 reload * Neuladen des Webservers apache2

Damit ist die Apache-Konfiguration abgeschlossen. Die andere Hälfte der Aufgabe besteht darin, php fpm so zu konfigurieren, dass es endlich funktioniert.

2. Php-FPM (FastCGI Process Manager) einrichten

Als nächstes müssen Sie php fpm einrichten. Installieren Sie es über Synaptic, falls noch nicht geschehen.

$ sudo apt-get install php5-fpm

Die Konfigurationsdateien für fpm befinden sich unter

/etc/php5/fpm
/etc/php5/fpm$ lsconf.d php-fpm.conf php.ini pool.d

Das Verzeichnis pool.d enthält die Konfigurationsdatei für jeden fpm-Pool und php-fpm.conf ist die Hauptkonfigurationsdatei. Unsere einzige Arbeit besteht darin, einen fpm-Pool zu konfigurieren, der mit Apache oder dem spezifischen virtuellen Host verwendet werden soll.

Die Konfigurationsdatei für einen Pool ist ziemlich groß und es gibt viele Parameter, die konfiguriert werden können. Aber in diesem Beitrag werden wir nur über die wichtigen Felder sprechen, die gesetzt werden müssen, um fpm zum Laufen zu bringen

; Starten Sie einen neuen Pool namens „www“.; Die Variable $pool kann in jeder Direktive verwendet werden und wird durch die ersetzt; Poolname (hier 'www')[www]; Pro Pool-Präfix; Es gilt nur für die folgenden Richtlinien:; - 'langsames Protokoll'; - 'lauschen' (unixsocket); - 'chroot'; - 'chdir'; - 'php_values'; - 'php_admin_values'; Wenn nicht gesetzt, gilt stattdessen das globale Präfix (oder /usr).; Hinweis:Diese Direktive kann auch relativ zum globalen Präfix sein.; Standardwert:keiner; Präfix =/path/to/pools/$pool; Unix-Benutzer/Gruppe von Prozessen; Hinweis:Der Benutzer ist obligatorisch. Wenn die Gruppe nicht festgelegt ist, die Gruppe des Standardbenutzers; wird verwendet.user =enlightenedgroup =enlightened; Die Adresse, auf der FastCGI-Anfragen akzeptiert werden.; Gültige Syntaxen sind:; 'ip.add.re.ss:port' - um auf einem TCP-Socket auf eine bestimmte Adresse zu lauschen; ein bestimmter Port;; 'port' - um auf einem TCP-Socket auf alle Adressen auf a zu hören; spezifischer Hafen;; '/path/to/unix/socket' - um auf einem Unix-Socket zu lauschen.; Hinweis:Dieser Wert ist obligatorisch.listen =127.0.0.1:9000; listen(2) backlog setzen.; Standardwert:128 (-1 auf FreeBSD und OpenBSD);listen.backlog =128

Erstellen Sie eine neue Konfigurationsdatei, indem Sie die Datei www.conf kopieren. Und bearbeiten Sie die Felder wie unten beschrieben.

1. Die erste Option ist der Name des Pools. Wir haben es hier 'www' genannt. Benennen Sie es nach Belieben oder nach dem Domänennamen, mit dem es verwendet werden soll. „Ihre Seite“ zum Beispiel. Auf diese Weise wäre es einfacher, sich daran zu erinnern.

2. Richten Sie den Benutzer und die Gruppe ein, mit denen dieser Pool ausgeführt wird. Wenn Sie mehrere Sites/Domänen/virtuelle Hosts auf einem Server einrichten, möchten Sie immer separate Benutzerkonten und einen entsprechenden Pool für jeden von ihnen einrichten. Dies ist eine wesentliche Sicherheitsmaßnahme, damit jeder Pool nur die Rechte seines eigenen Benutzers hat.

3. Richten Sie die Abhörbuchse ein. Dies ist der Socket, auf dem der Master-fpm-Prozess auf eingehende Anfragen lauschen soll. Dies kann ein Unix-Socket oder ein TCP-Socket sein. Allerdings unterstützt mod_proxy_fcgi noch keine Unix-Sockets, also beschränken wir uns auf TCP-Sockets.
Hier ist die Portnummer 9000 auf localhost.

Starten Sie nun fpm neu

$ sudo service php5-fpm neustarten

Jetzt sollte der neue fpm-Pool greifen. Sie können den neuen Pool-Prozess zum Beispiel in htop sehen.

3. Testen Sie die Einrichtung

Jetzt, da sowohl Apache als auch PHP fpm konfiguriert und eingerichtet sind, ist es an der Zeit zu testen. Gehen Sie in das Stammverzeichnis des Dokuments und erstellen Sie eine PHP-Datei, die einen Aufruf der phpinfo()-Funktion enthält, und öffnen Sie sie in Ihrem Browser.
Die "Server-API" sollte als "FPM/FastCGI" gemeldet werden.

Nachdem Apache und PHP eingerichtet sind, möchten Sie vielleicht andere Dinge wie APC, Mariadb-Datenbank, phpmyadmin usw. installieren. Bewegen Sie sich auf dieser Site um, um Anleitungen dazu zu finden.

Ressourcen

Sehen Sie sich die folgenden Links an, um mehr zu erfahren
https://wiki.apache.org/httpd/PHP-FPM


Ubuntu
  1. So aktivieren und deaktivieren Sie das PHP-Curl-Modul mit Apache unter Ubuntu Linux

  2. So richten Sie Opencart mit LAMP (PHP, Apache, Mariadb) unter Ubuntu 20.04 ein

  3. Installieren und konfigurieren Sie Apache und PHP mit cgi auf Ubuntu oder Debian

  4. Richten Sie Apache und Php mit mod_fcgid auf Ubuntu/Debian ein

  5. Installieren und konfigurieren Sie Apache und PHP mit mod fastcgi auf Ubuntu/Debian

So richten Sie einen Apache Tomcat-Cluster mit 3 Knoten unter Ubuntu ein

Ansible Playbook zum Installieren und Einrichten von Apache unter Ubuntu

So richten Sie WordPress auf Ubuntu Server mit Apache ein

So installieren und konfigurieren Sie Apache Spark unter Ubuntu 21.04

So installieren Sie Lighttpd mit PHP und MariaDB unter Ubuntu 15.04

So installieren und konfigurieren Sie Apache Spark unter Ubuntu/Debian