So richten Sie suPHP auf einem auf Debian Etch basierenden ISPConfig-Server ein
Version 1.1
Autor:
Im Allgemeinen ist dieses Howto dasselbe wie mein Howto „How To Set Up suPHP On A Debian Sarge Based ISPConfig Server“ unter https://www.howtoforge.com/suphp_debian_ispconfig, aber es enthält einige kleine, aber wichtige Änderungen für Debian Etch.
Wenn Sie suPHP auf Ihrem ISPConfig-Server eingerichtet haben, können Sie die PHP-Skripte unter dem Admin-Benutzer der Website anstelle von www-data ausführen.
Wichtig:Ich habe dieses Howto auf einem Debian Etch Server mit ISPConfig 2.2.11 und PHP Version 5.2.0-8 für Apache 2.2.3 getestet, aber ich gebe keine Garantie dafür, dass es bei Ihnen funktioniert!
Erstellen Sie zuerst eine Kopie Ihrer /etc/apache2/vhosts/Vhosts_ispconfig.conf. Kopieren Sie es beispielsweise nach /etc/apache2/vhosts/Vhosts_ispconfig-backup.conf.
Auf einem Standard-ISPConfig-Server läuft php5 als Modul. Deaktivieren Sie es mit dem Befehl:
a2dismod php5
Entfernen Sie nun alle phpadmin-Einträge in der ursprünglichen Vhosts_ispconfig.conf-Datei. Starten Sie Apache neu:
/etc/init.d/apache2 Neustart
Da wir alle phpadmin-Einträge entfernt haben, sollten Sie keine Fehler haben, wenn Apache2 neu gestartet wird.
Installieren Sie suPHP als DSO, daher müssen wir apxs installieren (auf Debian Etch ist es apxs2):
apt-get install apache2-prefork-dev
PHP5-CGI installieren:
apt-get install php5-cgi
cd /tmp
Installieren Sie suPHP, Version 0.6.2 ist derzeit die neueste stabile Version:
wget http://www.suphp.org/download/suphp-0.6.2.tar.gz
tar xvfz suphp-0.6.2.tar.gz
cd suphp-0.6.2
vi src/apache2/mod_suphp.c
Ersetzen Sie die Zeilen 324/325 durch die folgenden zwei Zeilen (wenn Sie eine andere Version von suPHP verwenden, können die Zeilennummern unterschiedlich sein):
AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF | ACCESS_CONF, "Teilt mod_suphp mit, diese MIME-Typen zu handhaben"),
AP_INIT_ITERATE("suPHP_RemoveHandler", suphp_handle_cmd_remove_handler, NULL, RSRC_CONF | ACCESS_CONF, "Teilt mod_suphp mit, diese MIME-Typen nicht zu behandeln"),
Dann kompilieren und installieren wir suPHP:
./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
make
make install
Kopieren Sie die Datei suphp.conf:
cp /tmp/suphp-0.6.2/doc/suphp.conf-example /etc/suphp.conf
Ändern Sie den Inhalt von /etc/suphp.conf mit dem folgenden Befehl:
vi /etc/suphp.conf
Es sollte so aussehen:
[global];Pfad zur Logdatei logfile=/var/log/suphp.log;Loglevel loglevel=info;Benutzer Apache läuft als webserver_user=www-data;Pfad alle Skripte müssen in docroot=/ sein;Pfad zu chroot() vor dem Ausführen des Skripts;chroot=/mychroot; Sicherheitsoptionen allow_file_group_writeable=true allow_file_others_writeable=false allow_directory_group_writeable=true allow_directory_others_writeable=false;Überprüfen, ob sich das Skript im DOCUMENT_ROOT befindet check_vhost_docroot=true;Kleinere Fehlermeldungen an den Browser senden errors_to_browser=false;PATH-Umgebungsvariable env_path=/bin:/usr/bin;Umask an set, in Oktalschreibweise angeben umask=0077; Minimale UID min_uid=100; Mindest-GID min_gid=100 [Handler];Handler für PHP-Skripte x-httpd-php=php:/usr/bin/php5-cgi;Handler für CGI-Skripte x-suphp-cgi=execute:!self
Fügen Sie die folgende Zeile zu /etc/apache2/httpd.conf hinzu, indem Sie den Befehl verwenden:
vi /etc/apache2/httpd.conf
LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so
Starten Sie Apache mit dem folgenden Befehl neu:
/etc/init.d/apache2 Neustart
Bearbeiten Sie /home/admispconfig/ispconfig/lib/config.inc.php und suchen Sie die Zeile:
$go_info["server"]["apache2_php"] ='beide';
und ändern Sie zu:
$go_info["server"]["apache2_php"] ='suphp';
Nehmen Sie nun in ISPConfig eine kleine Änderung an einem Ihrer Webs vor, damit ISPConfig eine neue vhost-Datei schreibt. Aktivieren Sie zum Beispiel CGI-Skripte für eine Ihrer Websites oder so.
In Ihrer /etc/apache2/vhosts/Vhosts_ispconfig.conf sehen Sie, dass ISPConfig die Datei neu geschrieben hat, da die folgenden Zeilen für jedes einzelne Web hinzugefügt werden:
suPHP_Engine on
suPHP_UserGroup Benutzername Gruppenname
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
Wichtig:Nehmen Sie keine manuellen Änderungen in Ihrer Datei /etc/apache2/vhosts/Vhosts_ispconfig.conf vor!
Wenn Sie eine Verbindung über FTP herstellen, sehen Sie, dass Sie innerhalb Ihres Webs beliebige Berechtigungen festlegen können:
Sie können die PHP-Skripte auch unter dem Admin-Benutzer der Website anstelle des Systembenutzers www-data ausführen. Dies gibt dem Admin-Benutzer der Website mehr Komfort. suPHP ist auch sehr nützlich, wenn Sie ein CMS wie Joomla in Ihrem Web betreiben. Wenn suPHP aktiviert ist, hat Joomla genügend Berechtigungen, um richtig zu funktionieren, während der Admin-Benutzer der Website die volle Kontrolle hat! Nicht zuletzt ist die Verwendung von suPHP sicherer und eine professionellere Lösung als die Verwendung von chmod 777 für Ihre Website!
Wenn Sie php5-cgi+suPHP nicht für eine bestimmte Website auf Ihrem ISPConfig-Server verwenden möchten, gibt es eine Lösung. Melden Sie sich als root auf Ihrem Server an und aktivieren Sie das php5-Modul für Apache2:
a2enmod php5Starten Sie Apache2 neu mit:
/etc/init.d/apache2 force-reloadDeaktivieren Sie in ISPConfig die PHP-Datei und fügen Sie Folgendes in das Apache-Anweisungsfeld für Ihre Website ein:
AddType application/x-httpd-php .php .php3 .php4 .php5
php_admin_flag safe_mode OffJetzt verwendet Ihre ISPConfig mit Debian Etch PHP5-mod und PHP5-CGI+suPHP. In den meisten Situationen benötigen Sie nur PHP5-CGI+suPHP. Wenn Sie den suphp-Mechanismus jedoch aus bestimmten Gründen nicht verwenden können, können Sie php5 trotzdem als Modul für diese bestimmte Website verwenden.