GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer Suphp avec Apache sur Ubuntu / Linux

Suphp

Suphp php handler est un module apache (mod_suphp) qui exécute des scripts php avec la propriété et la permission d'un utilisateur spécifique.

Ceci est considéré comme une amélioration de la sécurité puisque le système peut garder une trace du script php de l'utilisateur en cours d'exécution (et causant des problèmes le cas échéant).

Dans les environnements d'hébergement partagé, suphp est très populaire car il est très facile à installer et à configurer.

Suphp exécute php en tant que cgi. Il a donc besoin du package php5-cgi pour être installé. À cause de cela, suphp est beaucoup plus lent que mod_php.

Mais Suphp ajoute la sécurité d'identifier l'utilisateur qui a exécuté le script. Donc, si vous avez besoin d'exécuter php en tant que cgi, alors suphp est le moyen préféré. Cependant, il existe des alternatives bien meilleures et plus rapides comme fastcgi, fpm, etc., qui offrent des performances supérieures à celles de cgi.

Suphp se compose de deux composants :

1. mod_suphp - un module Apache qui remplace mod_php
2. suphp - un binaire setuid qui remplace le suexec d'Apache, il exécute php avec les privilèges utilisateur spécifiques.

1. Installez suphp sur Ubuntu

1. Installez d'abord le module apache pour suphp, package libapache2-mod-suphp

$ sudo apt-get install libapache2-mod-suphp

2. Ensuite, désactivez le mod php, qui est le gestionnaire php par défaut sur Ubuntu

$ sudo a2dismod php5Module php5 désactivé. Exécutez '/etc/init.d/apache2 restart' pour activer la nouvelle configuration !

3. Maintenant, redémarrez Apache

$ sudo /etc/init.d/apache2 restart * Redémarrage du serveur Web apache2 apache2 :Impossible de déterminer de manière fiable le nom de domaine complet du serveur, en utilisant 127.0.1.1 pour ServerName ... en attente apache2 :Impossible de déterminer de manière fiable le nom de domaine complet du serveur nom de domaine complet, en utilisant 127.0.1.1 pour ServerName [ OK ]

Cela devrait installer et activer suphp. Le fichier de configuration du mod php se trouve ici

$ cat /etc/apache2/mods-enabled/suphp.loadLoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so

La configuration de suphp pour apache est ici

$ cat /etc/apache2/mods-enabled/suphp.conf AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml suPHP_AddHandler application/x-httpd-suphp  suPHP_Engine sur  # Par défaut, désactivez suPHP pour les applications Web empaquetées debian car les fichiers # appartiennent à root et ne peuvent pas être exécutés par suPHP à cause de min_uid.  suPHP_Engine off # # Utiliser un fichier de configuration php spécifique (un répertoire qui contient un fichier php.ini)# suPHP_ConfigPath /etc/php4/cgi/suphp/# ​​# Dit à mod_suphp de NE PAS gérer requêtes avec le type .# suPHP_RemoveHandler 

La configuration ci-dessus fait de suphp le gestionnaire des fichiers php.

2. Définissez l'ID utilisateur et l'ID de groupe pour chaque hôte virtuel

Pour que suphp exécute les scripts php avec un ID utilisateur/ID de groupe spécifique, nous devons configurer la configuration de chaque hôte virtuel dans le fichier de configuration apache.

Le fichier de configuration apache sur ubuntu se trouve à

/etc/apache2/sites-available/default

Modifiez l'hôte virtuel concerné et ajoutez les paramètres du groupe d'utilisateurs suphp comme indiqué ci-dessous. La directive suPHP_UserGroup indique à apache d'utiliser l'ID utilisateur/ID de groupe pour l'hôte virtuel spécifique.

 ServerName some-site.com ServerAlias ​​www.some-site.com DocumentRoot /home/mike/public_html  suPHP_UserGroup mike mike  

Si vous ne souhaitez pas modifier le fichier de configuration apache principal, créez un nouveau fichier dans le même répertoire

/etc/apache2/sites-available/

Et ajoutez le bloc virtualhost dans ce fichier. Appliquez ensuite les paramètres à l'aide de la commande a2ensite.

$ sudo a2ensite file_name

3. Configurer les autorisations

Suphp donne également "500 Internal Server Error" si un fichier php est accessible en écriture par groupe. Le journal des erreurs aura une entrée comme celle-ci

SoftException dans Application.cpp:564 :le répertoire "/var/www" est accessible en écriture par groupe, référent :http://localhost/index.php

Pour résoudre ce problème, vérifiez les autorisations et assurez-vous que ce groupe ou d'autres personnes n'ont aucune autorisation sur un fichier php en attente de lecture.


Ubuntu
  1. Comment installer PHP sur Ubuntu Linux

  2. Comment installer PHP sur Ubuntu 18.04

  3. Comment installer WordPress avec Apache sur Ubuntu 18.04

  4. Comment installer PHP 8.0 sur Ubuntu 20.04 / Ubuntu 18.04

  5. Comment installer PHP-FPM avec Apache sur Ubuntu 20.04

Comment installer phpBB avec Apache sur Ubuntu 20.04

Comment installer la pile Linux, Apache, MySQL, PHP (LAMP) sur Ubuntu 16.04 / Ubuntu 14.04

Comment installer Linux, Apache, MariaDB, PHP (pile LAMP) sur Ubuntu 18.04

Comment installer plusieurs versions de PHP avec Apache sur Ubuntu 18.04 et 16.04

Comment installer Apache Nifi dans Ubuntu Linux

Comment installer le framework PHP Laravel avec Nginx sur Ubuntu Linux