Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:web_c7:apache_4 [07.08.2017 20:22. ] – [www.conf (Pools)] djangocentos:web_c7:apache_4 [22.07.2019 14:57. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== 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.
Zeile 16: Zeile 16:
  
 ===== 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 
  
Zeile 1391: Zeile 1391:
    # systemctl restart httpd.service    # systemctl restart httpd.service
  
 +Den erfolgreichen Neustart des Webservers können wir nun auch abfragen.
 +   # systemctl status httpd.service 
  
 +<html><pre class="code">
 +<font style="color: rgb(29, 180, 29)"><b>●</b></font> httpd.service - The Apache HTTP Server
 +   Loaded: loaded (/etc/systemd/system/httpd.service; enabled; vendor preset: disabled)
 +   Active: <font style="color: rgb(29, 180, 29)"><b>active (running) since</b></font> Mon 2017-08-07 22:21:37 CEST; 2min 41s ago
 +     Docs: man:httpd(8)
 +           man:apachectl(8)
 +  Process: 9894 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
 +  Process: 12446 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS)
 + Main PID: 9898 (httpd)
 +   Status: "Total requests: 39; Current requests/sec: 0.2; Current traffic: 614 B/sec"
 +   CGroup: /system.slice/httpd.service
 +           ├─9898 /usr/sbin/httpd -DFOREGROUND
 +           ├─9899 /usr/sbin/httpd -DFOREGROUND
 +           ├─9900 /usr/sbin/httpd -DFOREGROUND
 +           ├─9901 /usr/sbin/httpd -DFOREGROUND
 +           ├─9904 /usr/sbin/httpd -DFOREGROUND
 +           └─9985 /usr/sbin/httpd -DFOREGROUND
  
-Anschließend starten wir den +Aug 07 22:21:37 vml000107.dmz.nausch.org systemd[1]: Starting The Apache HTTP Server... 
 +Aug 07 22:21:37 vml000107.dmz.nausch.org systemd[1]: Started The Apache HTTP Server.</font></pre> 
 +</html>
  
 +Anschließend starten wir den **PHP-FPM**-Daemon einmal durch.
 +   # systemctl restart php-fpm.service
  
 +Auch hier können wir den erfolgreichen Restart abfragen.
  
  
-==== PHP Info bei Verwendung von mod_php ====+<html><pre class="code"> 
 +<font style="color: rgb(29, 180, 29)"><b>●</b></font> php-fpm.service - The PHP FastCGI Process Manager 
 +   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled) 
 +   Active: <font style="color: rgb(29, 180, 29)"><b>active (running) since</b></font> Mon 2017-08-07 22:28:33 CEST; 44s ago 
 + Main PID: 10260 (php-fpm) 
 +   Status: "Processes active: 1, idle: 15, Requests: 6, slow: 0, Traffic: 0.2req/sec" 
 +   CGroup: /system.slice/php-fpm.service 
 +           ├─10260 php-fpm: master process (/etc/php-fpm.conf) 
 +           ├─10261 php-fpm: pool fpm 
 +           ├─10262 php-fpm: pool fpm 
 +           ├─10263 php-fpm: pool fpm 
 +           ├─10264 php-fpm: pool fpm 
 +           ├─10265 php-fpm: pool fpm 
 +           ├─10266 php-fpm: pool nextcloud 
 +           ├─10267 php-fpm: pool nextcloud 
 +           ├─10268 php-fpm: pool nextcloud 
 +           ├─10269 php-fpm: pool nextcloud 
 +           ├─10270 php-fpm: pool nextcloud 
 +           ├─10271 php-fpm: pool www 
 +           ├─10272 php-fpm: pool www 
 +           ├─10273 php-fpm: pool www 
 +           ├─10274 php-fpm: pool www 
 +           ├─10275 php-fpm: pool www 
 +           ├─10276 php-fpm: pool nextcloud 
 +           └─10290 php-fpm: pool fpm
  
 +Aug 07 22:28:33 vml000107.dmz.nausch.org systemd[1]: Starting The PHP FastCGI Process Manager...
 +Aug 07 22:28:33 vml000107.dmz.nausch.org systemd[1]: Started The PHP FastCGI Process Manager.</font></pre>
 +</html>
 +
 +Alternativ dazu kann auch mit nachfolgendem Befehlsaufruf überprüft werden welche Prozesse mit den zugehörigen Pools gestartet wurden.
 +   # ps auxwwwf | grep php
 +<code>root     10331  0.0  0.0 112644   928 pts/0    S+   22:31   0:00                      \_ grep --color=auto php
 +root     10260  0.0  0.7 466980 30676 ?        Ss   22:28   0:00 php-fpm: master process (/etc/php-fpm.conf)
 +php-fpm  10261  0.2  0.7 559724 30696 ?        S    22:28   0:00  \_ php-fpm: pool fpm
 +php-fpm  10262  0.0  0.5 467528 20792 ?        S    22:28   0:00  \_ php-fpm: pool fpm
 +php-fpm  10263  0.0  0.4 467520 17476 ?        S    22:28   0:00  \_ php-fpm: pool fpm
 +php-fpm  10264  0.0  0.1 466860  6996 ?        S    22:28   0:00  \_ php-fpm: pool fpm
 +php-fpm  10265  0.0  0.1 466860  7000 ?        S    22:28   0:00  \_ php-fpm: pool fpm
 +apache   10266  0.5  0.7 471888 30596 ?        S    22:28   0:00  \_ php-fpm: pool nextcloud
 +apache   10267  0.4  0.6 471832 27628 ?        S    22:28   0:00  \_ php-fpm: pool nextcloud
 +apache   10268  0.3  0.7 473876 29936 ?        S    22:28   0:00  \_ php-fpm: pool nextcloud
 +apache   10269  0.3  0.5 469780 22724 ?        S    22:28   0:00  \_ php-fpm: pool nextcloud
 +apache   10270  0.1  0.6 471836 27720 ?        S    22:28   0:00  \_ php-fpm: pool nextcloud
 +apache   10271  0.0  0.1 466860  6996 ?        S    22:28   0:00  \_ php-fpm: pool www
 +apache   10272  0.0  0.1 466860  6996 ?        S    22:28   0:00  \_ php-fpm: pool www
 +apache   10273  0.0  0.1 466860  6996 ?        S    22:28   0:00  \_ php-fpm: pool www
 +apache   10274  0.0  0.1 466860  6996 ?        S    22:28   0:00  \_ php-fpm: pool www
 +apache   10275  0.0  0.1 466860  7000 ?        S    22:28   0:00  \_ php-fpm: pool www
 +apache   10276  0.3  0.6 471828 26136 ?        S    22:28   0:00  \_ php-fpm: pool nextcloud
 +php-fpm  10290  0.0  0.1 466860  7012 ?        S    22:29   0:00  \_ php-fpm: pool fpm</code>
 +
 +===== Überprüfung der verwendeten PHP-API =====
 +Zum Schluss wollen wir noch prüfen, ob auch wirklich die gewünschte PHP-API sich in Verwendung befindet. Hierzu legen wir eine einfache Textdatei im Document-ROOT unseres Webservers ab und rufen die zugehörige UIR über den Browser unserer Wahl auf.
 +
 +==== PHP Info bei Verwendung von mod_php ====
 +Das erste Beispiel zeigt die Verwendung des **//Apache 2.0 Handlers//** an, der bei Verwendung der originären PHP-Anbindung mit Hilfe von **mod_php** zur Anwendung kommt.
    # echo '<?php phpinfo(); ?>' > /srv/www/html/info.php    # echo '<?php phpinfo(); ?>' > /srv/www/html/info.php
  
Zeile 1408: Zeile 1487:
    # 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__. 
    # echo '<?php phpinfo(); ?>' > /srv/www/html/info.php    # echo '<?php phpinfo(); ?>' > /srv/www/html/info.php
  
Zeile 1415: Zeile 1496:
 {{ :centos:web_c7:info-php-fpm.png?nolink&800 |Bild: PHP Info unter Verwendung von php-fpm}} {{ :centos:web_c7:info-php-fpm.png?nolink&800 |Bild: PHP Info unter Verwendung von php-fpm}}
  
 +Da auch hier dies nur ein Demonstrationszweck war, entfernen wir auch hier wieder die zuvor angelegte Testdatei **info.php**.
    # 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]]**
 +
  
  • centos/web_c7/apache_4.1502137352.txt.gz
  • Zuletzt geändert: 07.08.2017 20:22.
  • von django