Jump to content

Recommended Posts

Bonjour,

 

Après quelques années de plusieurs essais et bêtatest que ce soit sur mon serveur à la maison ou sur un serveur dédié, je n'arrive toujours pas à comprendre c'est quoi la différence entre installer un programme en tant que module pour Apache ou l'installer en CGI.

 

C'est quoi la différence par exemple d'installer PHP5 en CGI avec php5-cgi en comparaison avec libapache2-mod-php5 ?

 

Pareil pour les autres scripts et modules (SuPHP etc ...), je n'arrive pas à comprendre ce truc et comme je ne me suis pas trop cassé la tête à comprendre le CGI que je rechigne, je ne sais pour quelle raison (alors qu'il est peut être celui qu'il me faut), il me reste toujours ce point d'interrogation.

 

Si quelqu'un a la gentillesse de m'expliquer c'est quoi la différence et l'impacte sur le fonctionnement d'un serveur dans sa globalité, ça m'aidera à beaucoup avancer :)

 

Merci d'avance.

(Est ce que j'en ai marre de creuser ? Non :D, je ne lâche pas l'affaire :D)

Link to post
Share on other sites

Bon... en gros... c'est 2 philosophies... 2 manière de fonctionner :

 

1/ Le CGI :

Le CGI signifie Common Gateway Interface ce qui est en soit déjà parlant, c'est une interface pour les serveurs HTTP. En simple, une interface indique comment envoyer des données à un programme et comment lire les réponses (données de sortie) de celui-ci.

 

Donc, les programmes contenus dans le répertoire CGI sont indépendant du serveur HTTP, ils sont exécutés par l'interpréteur du langage dans lequel il sont codés (php, python, perl, script bash/csh...).

 

Quand l'utilisateur envoie une requête qui fait appel à un programme CGI, apache exécute le programme CGI en lui fournissant les différentes variables (celle d'un formulaire par exemple) et il va récupérer les données en sortie du programme exécuté... il ne va donc pas se charger à proprement dit de l'exécution du code du programme CGI (il laisse faire l'interpréteur du langage concerné).

 

A chaque fois qu'un visiteur fait une requête sur un programme CGI, apache exécute le programme... donc plus y'a de demande plus y'a de programmes en exécution simultanément ce qui bouffe rapidement les ressources systèmes. La solution à cela est d'utiliser les modules d'apache ou d'utiliser FastGCI qui est une amélioration de l'interface CGI.

 

Par contre, niveau sécurité, il semblerait que le CGI offrirait une meilleure protection (paramétrage plus fin) que les modules.

 

2/ Les modules :

Les modules s'est en quelque sorte une intégration directe d'un interpréteur (par exemple l'interpréteur de PHP) au serveur apache, cela implique donc un changement plus profond.

En gagne en ressource, par contre, cela implique que les programmes exécutés par un module, le sont avec les droits d'apache ce qui peut être dangereux.

 

Voilà pour les explications !

Link to post
Share on other sites

Merci pour ces explications HAVOC :) ça m'a toujours paru du chinois en parlant de CGI mais là je comprends mieux grâce à tes explications.

 

Au fait, ce qui m'a poussé à poser cette question est le fait que j'utilise Nginx avec PHP5 qui roule en FastGCI vu qu'il n'y a pas de module PHP5 pour NGINX, donc je me suis dis et si je testais Apache2 avec PHP5 en CGI c'est faisable.

 

Alors je me suis lancé en installant le module libapache2-mod-fcgid pour Apache ainsi que php5-cgi et ça marche. Mais je ne sais pas si c'est la meilleure façon de procéder.

 

Bref ! Il est vrai qu'avec PHP5 en CGI, j'arrive à mieux configurer certaines choses que je ne pouvais pas faire avec PHP en module pour Apache.

 

Autre chose, j'ai voulu installé la fameux suPHP et c'est là que je me suis rendu compte que j'ai passé 1 mois pour découvrir qu'il fonctionne avec PHP en CGI et non pas en tant que module pour Apache.

 

Voilà grossomodo l'histoire :)

 

Donc si j'ai bien compris, en résumé, si l'on installe PHP en module avec Apache, ceci voudras dire que PHP démarrera avec Apache automatiquement mais si PHP est installé en CGI, il fonctionnera "on va dire" indépendamment d'Apache ?

 

Merci encore man, j'aurais certainement d'autres questions ;)

Pour ceux et celles qui veulent creuser encore plus loin avec moi, je tiens à partager avec vous ce lien et n'oubliez pas bien sur de cliquer sur les liens ressources en bas de la page que vous allez ouvrir :)

Link to post
Share on other sites
Donc si j'ai bien compris, en résumé, si l'on installe PHP en module avec Apache, ceci voudras dire que PHP démarrera avec Apache automatiquement mais si PHP est installé en CGI, il fonctionnera "on va dire" indépendamment d'Apache ?

 

Bah... en très imagé, on va dire que :

- Le module PHP c'est équivalent à apprendre à Apache à parler PHP par exemple.

- Le PHP via CGI, c'est Apache qui demande à PHP (l'interpréteur) d'exécuter un code PHP et de lui fournir le résultat par la suite. A chaque fois qu'il y a du code PHP, apache fait appelle à l'interpréteur PHP, l'interpréteur se charge donc en mémoire autant de fois qu'il y a de fichiers PHP à exécuter ce qui bouffe des ressources.

Link to post
Share on other sites
  • Administrators
Donc si j'ai bien compris, en résumé, si l'on installe PHP en module avec Apache, ceci voudras dire que PHP démarrera avec Apache automatiquement mais si PHP est installé en CGI, il fonctionnera "on va dire" indépendamment d'Apache ?

Enfait avec PHP traité en CGI, la requètte PHP ne s'exécute pas avec l'user "apache" comme sur les modules, il s'execute avec l'user du fichier php executé, ce qui assure donc une meilleur sécurité vu que cela protège les autre utilisateurs système (dans ce cas on à plus besoin de l'Open BaseDir pour protéger les autres utilisateurs).

 

Exemple :

Le fichier "page.php" est crée par l'user "bof".

Tu le lance dans ton navigateur, et la requette sur le système est lancé par l'user "bof" ce qui l'empechera donc de modifier tout autre fichier n'appartenant pas à l'utilisateur et au groupe "bof".

 

Seul soucis comme cité plus haut, quand PHP est lancé en CGI cela bouf beaucoup plus de ressources! ^^

 

J'espère ne pas avoir dit de connerie mais c'est ce que j'ai remarqué avec mes serveurs :)

Link to post
Share on other sites
Seul soucis comme cité plus haut, quand PHP est lancé en CGI cela bouf beaucoup plus de ressources! ^^

 

J'espère ne pas avoir dit de connerie mais c'est ce que j'ai remarqué avec mes serveurs :)

 

Effectivement cela consomme d'avantage de ressources, les modules sont chargé une bonne fois en mémoire alors que les CGI sont chargés en mémoire autant de fois qu'il y a d'exécutions.

 

Je te suggère d'installer FastCGI (appelé aussi FCGI) qui est une évolution du CGI.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • salam @zilul merci pour ta réponse, je comprend ce que tu veux dire, déja pour les loisirs cest énervant , alors pour le travail j'aurais envie de casser des bouches ... j'ai un amis qui travail dans ce domaine , il a give up pour l'adsl. ya pas moyen d'activer l'annexe M pour avoir un Upload decent ?
    • @yacine230 En meme temps, la dernière fois que j'ai essayé warzone mon upload été carrément saturé tellement le jeu en consommée, donc directement désinstallé.  Il faut savoir que tu peut pas pratiquer le multi à un très haut niveau en algerie la plus part du temps, a part si tu habite collé a une antenne 4G ou AT ta oublié en laissent ta ligne débridé en upload, et pas que les jeux meme le travaille a distance est vraiment pénible ( j'en fait l’expérience tous les jours ). Tu va juste perdre des cheveux en ragent à cause du ping et autre packet losses, donc vaut mieux jouer plus casual.
    • Bonjour, Je voudrai connaitre l'institution administrative à Alger ou on s'inscrit pour postuler à un emploi au sahara s'il vous plait ? Cordialement.
    • Ok merci pour la réponse , j'ai essayé de mon coté de me renseigner a l'actel , on m'a sorti juste leur bullshit du brief qu'ils reçoivent a savoir "monsieur le débit c'est jusqu'à 20 mega..." , je vais attendre encore pour voir si il est possible de passer direct a une installation fibre.  
    • En regardant pour te répondre, j'ai trouvé cette article: https://www.xp-pen.fr/forum-1296.html , ça a l'air intéressant.
×
×
  • Create New...