Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision |
centos:web_c7:apache_4 [07.08.2017 20:53. ] – [PHP Info bei Verwendung von php-fpm] django | centos:web_c7:apache_4 [07.08.2017 20:59. ] – Alternativer FastCGI Process Manager für den Apache httpd unter CentOS 7.x #CentOS7 #PHP-FPM django |
---|
====== Alternativer FastCGI Process Manager für den Apache httpd unter CentOS 7.x ====== | ====== Alternativer FastCGI Process Manager für den Apache httpd unter CentOS 7.x ====== |
{{:centos:web_c7:phpfpmlogo.png?nolink&250 |Bild: PHP-FPM Logo }} Mit **[[https://php-fpm.org/|PHP-FPM]]** kann ein alternativer FastCGI Process Manager (FastCGI-Implementierung) beim Apache webserver verwendet werden, um z.B. die PHP-Verarbeitungs erheblich zu beschleunigen und somit die Antwortzeiten des Webservers signifikant zu verbessern. [[https://php-fpm.org/|PHP-FPM]] ist seit der PHP **Version 5.3.3** fest in PHP integriert. [[https://php-fpm.org/|PHP-FPM]] startet dazu mehrere PHP-Interpreter-Prozesse, die ständig im Hintergrund laufen um auf Anfragen zu warten. Eingehende Requests nimmt er vom Apache-Webserver [[http://httpd.apache.org|Apache HTTP Server]] entgegen und teilt dies dann den bereitstehenden Prozessen des PHP-Interpreter zu. | {{:centos:web_c7:phpfpmlogo.png?nolink&250 |Bild: PHP-FPM Logo }} Mit **[[https://php-fpm.org/|PHP-FPM]]** kann ein alternativer FastCGI Process Manager (FastCGI-Implementierung) beim Apache Webserver verwendet werden, um z.B. die PHP-Verarbeitungs erheblich zu beschleunigen und somit die Antwortzeiten des Webservers signifikant zu verbessern. [[https://php-fpm.org/|PHP-FPM]] ist seit der PHP **Version 5.3.3** fest in PHP integriert. [[https://php-fpm.org/|PHP-FPM]] startet dazu mehrere PHP-Interpreter-Prozesse, die ständig im Hintergrund laufen um auf Anfragen zu warten. Eingehende Requests nimmt er vom Apache-Webserver [[http://httpd.apache.org|Apache HTTP Server]] entgegen und teilt dies dann den bereitstehenden Prozessen des PHP-Interpreter zu. |
| |
Grundsätzlich gibt es **drei** Varianten, wie die Kommunikation zwischen dem WEB-Server [[http://httpd.apache.org|Apache HTTP Server]] und dem [[http://php.net/|PHP]] raalisiert werden kann: | Grundsätzlich gibt es **drei** Varianten, wie die Kommunikation zwischen dem WEB-Server [[http://httpd.apache.org|Apache HTTP Server]] und dem [[http://php.net/|PHP]] realisiert werden kann: |
* **[[https://wiki.apache.org/httpd/php|mod_php]]** Die wohl am meist verbreitete PHP Implementierung innerhalb des [[http://httpd.apache.org|Apache HTTP Servers]]. | * **[[https://wiki.apache.org/httpd/php|mod_php]]** Die wohl am meist verbreitete PHP Implementierung innerhalb des [[http://httpd.apache.org|Apache HTTP Servers]]. |
* **[[https://wiki.apache.org/httpd/php-fastcgi|mod_fcgid]]** Alternativ zur Nutzung des PHP-Moduls **mod_php** kann auch **//CGI/FastCGI//** vom [[http://httpd.apache.org|Apache HTTP Server]] an eigens gestartete externen Prozess delegiert werden. | * **[[https://wiki.apache.org/httpd/php-fastcgi|mod_fcgid]]** Alternativ zur Nutzung des PHP-Moduls **mod_php** kann auch **//CGI/FastCGI//** vom [[http://httpd.apache.org|Apache HTTP Server]] an eigens gestartete externen Prozess delegiert werden. |
* **[[https://wiki.apache.org/httpd/PHP-FPM|php-fpm]]** Bei der dritten Variante mit Verwendung von **FPM/FastCGI** übergibt der [[http://httpd.apache.org|Apache HTTP Server]] Anfragen an einen externen separat laufenden Dienstes/Daemon. Dadurch ergeben sich folgende (zusätzliche) Vorteile: | * **[[https://wiki.apache.org/httpd/PHP-FPM|php-fpm]]** Bei der dritten Variante mit Verwendung von **FPM/FastCGI** übergibt der [[http://httpd.apache.org|Apache HTTP Server]] Anfragen an einen externen separat laufenden Dienstes/Daemon. Dadurch ergeben sich folgende (zusätzliche) Vorteile: |
* Die PHP Prozesse **müssen __nicht__** mehr zwingend in der gleichen Umgebung wie der Webserver laufen; bzw. im einfachsten Fall wird der PHP-FPMD-Daemon mit anderen User- und Gruppenrechten betrieben als der WEB-Server selbst. | * Die PHP Prozesse **müssen __nicht__** mehr zwingend in der gleichen Umgebung wie der Webserver laufen; bzw. im einfachsten Fall wird der PHP-FPMD-Daemon mit anderen User- und Gruppenrechten betrieben als der WEB-Server selbst. |
* Die PHP-FPM Prozesse können unabhängig vom Webserver neu gestartet werden. Somit werden keinen ankommendne Clientprozesse des Apache-Webservers beim Neustart des PHP-FPM-Daemon getrennt und gehen somit __nicht__ verloren. | * Die PHP-FPM Prozesse können unabhängig vom Webserver neu gestartet werden. Somit werden keinen ankommende Clientprozesse des Apache-Webservers beim Neustart des PHP-FPM-Daemon getrennt und gehen somit __nicht__ verloren. |
* Durch geschickte Konfiguration des PHP-FPM-Daemon können getrennte und unterschiedliche Pools definiert werden. Bei der Konfiguration dieser Pools kann definiert werden, mit welchen User- und Gruppenrechten der bzw. die Prozesse laufen sollen und bei Bedarf können die PHP-FPM-Prozesse auch in eigenen **//chroot//-Umgebungen** laufen. Auch können unterschiedliche PHP-Einstellungen mit Hilfe von getrennten **php.ini** Dateien festgelegt werden. Angesprochen werden diese Pools entweder über einen **[[https://de.wikipedia.org/wiki/POSIX_local_inter-process_communication_socket|UNIX Domain Socket]]** bzw. über unterschiedliche **[[https://de.wikipedia.org/wiki/Port_(Protokoll)|Ports]]**. | * Durch geschickte Konfiguration des PHP-FPM-Daemon können getrennte und unterschiedliche Pools definiert werden. Bei der Konfiguration dieser Pools kann definiert werden, mit welchen User- und Gruppenrechten der bzw. die Prozesse laufen sollen und bei Bedarf können die PHP-FPM-Prozesse auch in eigenen **//chroot//-Umgebungen** laufen. Auch können unterschiedliche PHP-Einstellungen mit Hilfe von getrennten **php.ini** Dateien festgelegt werden. Angesprochen werden diese Pools entweder über einen **[[https://de.wikipedia.org/wiki/POSIX_local_inter-process_communication_socket|UNIX Domain Socket]]** bzw. über unterschiedliche **[[https://de.wikipedia.org/wiki/Port_(Protokoll)|Ports]]**. |
* Nicht mehr benötigte PHP-FPM-Prozesse können automatisiert beendet werden, wenn diese nicht mehr benötigt werden sollten. | * Nicht mehr benötigte PHP-FPM-Prozesse können automatisiert beendet werden, wenn diese nicht mehr benötigt werden sollten. |
| |
===== Installation ===== | ===== Installation ===== |
Die Installation des FastCGI Process Managers **[[https://php-fpm.org/|PHP-FPM]]** erfolgt mit Hilfe des Paketmanager Tools **YUM**. Verwendet man die Standard-PHP-Insallation unter **CentOS 7** ist das Paket **php-fpm** aus dem //**Base-Repository**// zu installieren. | Die Installation des FastCGI Process Managers **[[https://php-fpm.org/|PHP-FPM]]** erfolgt mit Hilfe des Paketmanager Tools **YUM**. Verwendet man die Standard-PHP-Installation unter **CentOS 7** ist das Paket **php-fpm** aus dem //**Base-Repository**// zu installieren. |
# yum install php-fpm -y | # yum install php-fpm -y |
| |
# rm /srv/www/html/info.php | # rm /srv/www/html/info.php |
| |
| Da die Datei **info.php** nur zu Demozwecken notwendig war, können wir dies nun auch wieder löschen. |
==== PHP Info bei Verwendung von php-fpm ==== | ==== PHP Info bei Verwendung von php-fpm ==== |
Das zweite Beispiel zeigt die erfolgreiche Verwendung des alternativen //**FastCGI Prozess Managers**//: __FPM/FastCGI__. | Das zweite Beispiel zeigt die erfolgreiche Verwendung des alternativen //**FastCGI Prozess Managers**//: __FPM/FastCGI__. |
# rm /srv/www/html/info.php | # rm /srv/www/html/info.php |
| |
| ====== Links ====== |
| * **[[centos:web_c7:start| ⇐ Zurück zu Kapitel "Webserverinstallation unter CentOS 7.x"]]** |
| * **[[wiki:start|Zurück zu Projekte und Themenkapitel]]** |
| * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]** |
| |
| ~~DISCUSSION~~ |
| ~~AUTOTWEET:~~ |