Einstieg - So wird das Leben leichter

  • Webspace - Erste Schritte um mit dem Webspace zu arbeiten
  • Datenbank - Erste Schritte um mit der Datenbank zu arbeiten.
  • Protokolle - Eine Sammlung der im Internet am häufigsten verwendeten Protokolle und ihre Funktion.

Inhalt

Aktiv/Passiv - Failovercluster

Hardware-Support

Sicherheit

Apache2

Apache2 mit PHP5 als fcgid

Im Folgenden wird die Installation von Apache mit PHP5 und fcgid beschrieben.

In einem Standard-Setup laufen alle PHP-Prozesse unter dem Systembenutzer www-data, da diese von Apache2 gestartet werden und www-data der Benutzer ist unter dem Apache2 standardmäßig ausgeführt wird.

Von PHP erstellte Dateien ( z.B. Config-Files) werden darum auch unter dem User www-data abgelegt und können nicht mehr direkt von einem anderen Systembenutzer verändert werden. Außerdem ist es mit diesem einfachen Setup möglich auf alle Dateien die unter dem User www-data abgelegt sind über PHP zuzugreifen. Somit laufen die Seiten nicht getrennt, was je nach Nutzung Sicherheitsrisiken birgt. Gerade bei Shared-Hosting sollten PHP-Prozesse daher unter dem Benutzerkonto des Besitzers der Seite laufen. Dies erleichtert auch das Logging.

Benötigte Pakete installieren:

apt-get install apache2 php5 apache2-suexec libapache2-mod-fcgid php5-cgi

Module aktivieren:

a2dismod php5
a2enmod rewrite suexec include fcgid

Danach wird die Datei /etc/php5/cgi/php.ini angepasst.

cgi.fix_pathinfo=1

Außerdem muss noch das Modul fcgid in /etc/apache2/mods-avaiable/fcgid.conf konfiguriert werden. In der Direktive wurde folgendes hinzugefügt:

PHP_Fix_Pathinfo_Enable 1
FcgidMaxRequestLen 31457280 // legt maximale Datenmenge für den Upload fest.

In der Datei /etc/apache/apache2.conf sollte noch zumindest der Servername gesetzt werden. Servername beispiel.linetz.de

Im Folgenden ist ein Beispiel eines einfachen HTTP-vHosts gegeben. Anzupassen sind die Parameter SuexecUserGroup, bei dem der Systembenutzer angegeben wird unter dem der PHP-Prozess gestartet wird.

<VirtualHost *:80>
   ServerName dev.beispiel.de
   # Bestimmung der Rechte
   SuexecUserGroup $USERNAME $GROUPNAME
   # Handler festlegen
   AddHandler fcgid-script .php
   DocumentRoot /var/www/dev.beispiel.de/web_doc
   DirectoryIndex index.php3 index.htm index.html index.php
   <Directory "/">
      Options FollowSymLinks
      AllowOverride None
   </Directory>
   <Directory "/var/www/dev.beispiel.de/web_doc">
      AllowOverride ALL
      Options Indexes MultiViews FollowSymLinks +ExecCGI
      FCGIWrapper /var/www/dev.beispiel.de/conf/php-starter .php
      Order allow,deny
      Allow from all
   </Directory>
   ErrorLog /var/www/dev.beispiel.de/logs/error.log
   CustomLog /var/www/dev.beispiel.de/logs/access.log combined
   LogLevel warn
   
</VirtualHost>

Die Verzeichnisstruktur des vHosts sieht in diesem Beispiel wie folgt aus:

  • var
    • www
      • dev.beispiel.de
        • conf
        • logs
        • tmp
        • web_doc

Im conf-Verzeichnis ist die für den vHost gültige php.ini abzulegen. Des Weiteren wird in diesen Ordner das PHP-Wrapperscript unter dem Namen php-starter abgelegt. Dies sieht wie folgt aus:

#php-starter.sh
#!/bin/sh
PHPRC=/var/www/dev.beispiel.de/conf
export PHPRC
export TMPDIR=/var/www/dev.beispiel.de/tmp
exec /usr/bin/php5-cgi

Zuletzt sollte der Apache2-Benutzer noch in die Gruppen der Systembenutzer unter denen die PHP-Prozesse laufen.

adduser www-data $USERNAME

Weiterführendes

Zum Seitenanfang.

 

Copyright © 2018 Linetz – Hosting und IT-Dienstleistungen Hendrik Borgmeyer.