Comment configurer suPHP sur un serveur ISPConfig basé sur Debian Sarge
Version 1.3
Auteur :
Avec ce guide, j'explique comment configurer suPHP sur un serveur ISPConfig basé sur Debian avec php4. Il est principalement basé sur le guide de Falko https://www.howtoforge.com/apache2_suphp_php4_php5. Dans les forums sur Howtoforge, de nombreuses informations sur la "configuration de suphp" peuvent être trouvées.
Cependant, ces informations sont réparties sur tous les forums, il n'est donc pas très clair comment configurer suphp sur un serveur ISPConfig. C'est la raison pour laquelle j'ai écrit ce guide. Lorsque vous avez configuré suPHP sur votre serveur ISPConfig, vous pouvez exécuter les scripts PHP sous l'utilisateur administrateur du site Web au lieu de www-data.
Important :J'ai testé ce tutoriel sur un serveur Debian Sarge avec ISPConfig 2.2.11 et 4.3.10-19 pour Apache2, mais je ne garantis pas que cela fonctionnera pour vous !
Faites d'abord une copie de votre fichier /etc/apache2/vhosts/Vhosts_ispconfig.conf. Par exemple, copiez-le dans /etc/apache2/vhosts/Vhosts_ispconfig-backup.conf.
Sur un serveur ISPConfig par défaut, php4 s'exécute en tant que module. Désactivez-le avec la commande :
a2dismod php4
Supprimez maintenant toutes les entrées phpadmin dans le fichier Vhosts_ispconfig.conf d'origine. Redémarrez Apache :
/etc/init.d/apache2 redémarrage
Comme nous avons supprimé toutes les entrées de phpadmin, vous ne devriez pas avoir d'erreurs au redémarrage d'Apache2.
Installez suPHP en DSO, donc il faut installer apxs (sur Debian Sarge c'est apxs2) :
apt-get install apache2-prefork-dev
Installez PHP4-CGI :
apt-get install php4-cgi
cd /tmp
Installez suPHP, la version 0.6.2 est la dernière version stable à ce jour :
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
Remplacez les lignes 324/325 par ces deux lignes ci-dessous (si vous utilisez une version différente de suPHP, les numéros de ligne peuvent être différents) :
AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF | ACCESS_CONF, "Dit à mod_suphp de gérer ces types MIME"),
AP_INIT_ITERATE("suPHP_RemoveHandler", suphp_handle_cmd_remove_handler, NULL, RSRC_CONF | ACCESS_CONF, "Dit à mod_suphp de ne pas gérer ces types MIME"),
Ensuite, nous compilons et installons suPHP :
./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
faire
faire installer
Copiez le fichier suphp.conf :
cp /tmp/suphp-0.6.2/doc/suphp.conf-example /etc/suphp.conf
Changez le contenu de /etc/suphp.conf, en utilisant la commande :
vi /etc/suphp.conf
Cela devrait ressembler à ceci :
[global]
;Chemin d'accès au fichier journal
logfile=/var/log/suphp.log
;Loglevel
loglevel=info
;L'utilisateur Apache s'exécute en tant que
webserver_user=www-data
;Le chemin d'accès à tous les scripts doit se trouver dans
docroot=/
; Chemin vers chroot() avant d'exécuter le script
;chroot=/mychroot
; Options de sécurité
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Vérifier si le script se trouve dans DOCUMENT_ROOT
check_vhost_docroot =true
;Envoie des messages d'erreur mineurs au navigateur
errors_to_browser=false
;Variable d'environnement PATH
env_path=/bin:/usr/bin
;Umask à définir, à spécifier en notation octale
umask=0077
; UID minimal
min_uid=100
; GID minimum
min_gid=100
[handlers]
;Handler for php-scripts
x-httpd-php=php:/usr/bin/php4-cgi
;Gestionnaire pour les scripts CGI
x-suphp-cgi=execute:!self
Ajoutez la ligne suivante à /etc/apache2/httpd.conf, en utilisant la commande :
vi /etc/apache2/httpd.conf
LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so
Redémarrez Apache en utilisant la commande :
/etc/init.d/apache2 redémarrage
Editez /home/admispconfig/ispconfig/lib/config.inc.php trouvez la ligne :
$go_info["server"]["apache2_php"] ='both' ;
et changez en :
$go_info["server"]["apache2_php"] ='suphp' ;
Maintenant, dans ISPConfig, apportez une petite modification à l'un de vos sites Web, afin qu'ISPConfig écrive un nouveau fichier vhost. Par exemple, activez les scripts cgi pour l'un de vos sites Web ou autre.
Dans votre /etc/apache2/vhosts/Vhosts_ispconfig.conf, vous verrez qu'ISPConfig a réécrit le fichier, car les lignes ci-dessous sont ajoutées pour chaque site :
suPHP_Engine on
suPHP_UserGroup username groupname
AddHandler x-httpd-php .php .php3 .php4 .php5
suPHP_AddHandler x-httpd-php
Important :n'apportez aucune modification manuelle dans votre fichier /etc/apache2/vhosts/Vhosts_ispconfig.conf !
Lorsque vous établissez une connexion via FTP, vous verrez que vous pouvez définir n'importe quelle autorisation sur votre site :
Vous pouvez également exécuter les scripts php sous l'utilisateur administrateur du site Web au lieu de l'utilisateur système www-data. Cela donne plus de confort à l'utilisateur administrateur du site Web. suPHP est également très utile lorsque vous exécutez un CMS sur votre site Web comme Joomla. Avec suPHP activé, Joomla aura suffisamment d'autorisations pour fonctionner correctement, tandis que l'utilisateur administrateur du site Web aura le contrôle total ! Enfin, l'utilisation de suPHP est une solution plus sûre et plus professionnelle que l'utilisation de chmod 777 pour votre site !
Si vous ne souhaitez pas utiliser php4-cgi+suPHP pour un site Web particulier sur votre serveur ISPConfig, il existe une solution. Connectez-vous à votre serveur en tant que root et activez le module php4 pour Apache2 :
a2enmod php4Redémarrez Apache2 avec :
/etc/init.d/apache2 force-reloadDans ISPConfig, désactivez php et ajoutez ce qui suit dans le champ des directives Apache pour votre site :
AddType application/x-httpd-php .php .php3 .php4
php_admin_flag safe_mode OffMaintenant, votre ISPConfig avec Debian Sarge utilise PHP4-mod et PHP4-CGI+suPHP. Dans la plupart des cas, vous n'aurez besoin que de PHP4-CGI+suPHP. Cependant, si vous ne pouvez pas utiliser le mécanisme suphp pour certaines raisons, vous pouvez toujours utiliser php4 comme module pour ce site Web particulier.