Aller au contenu
Règlement du forum ×
IPTV et arnaques ×

Module pour Apache ou CGI ?


Messages recommandés

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)

Lien vers le commentaire
Partager sur d’autres 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 !

Lien vers le commentaire
Partager sur d’autres 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 :)

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres sites

  • Administrateurs
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 :)

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • Messages

    • السلام عليكم  هل من شرح لهذه الخاصية بارك الله فيكم
    • Salam @dzgeek123. Je compte bientôt prendre un ONT avec OMCI Manager, sûrement le LXT-010H-D (merci à @vezvez pour le conseil). Je m'intéresse aussi à un routeur qui gère bien le bufferbloat. Comme tu utilises un VSOL + GL.iNet Flint 2, j’imagine que tu l’as configuré avec SQM + CAKE ? Est-ce que tu pourrais faire ce test et partager ton résultat ? 👉 https://www.waveform.com/tools/bufferbloat Je suis surtout curieux de la latence en gaming, si tu as un retour d’expérience à ce niveau. Merci d’avance, ça m’aiderait beaucoup 
    • J'ai calculé le nb de guichets nécessaires pour la période estivale en Tunisie ; 5000 familles/j vont en tunisien. Si ça prend 10 min par famille d'échanger le bon contre des devises, il faudrait environ 90 guichets et les algériens sont connus mondialement pour être ultra efficace bien entendu   Même des randoms sur un forum peuvent estimer que ça pue et presque inapplicable 
    • Tu peux faire un bénéf si tu fais ça ; tu vas en Tunisie une seule journée, tu reviens en Algérie et tu revends ce que t'as. Après si le but est de faire baisser le cours de devise du taux non officiel, on devrait autoriser tous les algériens à acheter des devises s'ils le souhaitent, qu'ils partent ou non. c'est une mesure démago pour faire semblant de foutre quelque chose ; ils distribuent juste les dividendes du pétrole.  le vrai problème de ce truc, c'est plutôt l'application ; faut aller dans une banque classique donner des dinars en échange d'un bon, puis au niveau de l'aeroport etc... échanger le bon l'équivalent contre des devises. J'ai hâte de voir la gueule des bureaux à la frontière tunisienne quand y aura 200.000 algériens qui vont vouloir réclamer leur dû   on est bons pour 30 bonnes années de communisme hein, les boomix de l'indépendance ont une bonne espérance de vie machallah. Un libéral à la Milei ça arrivera certainement pas dans le Dzistan.
    • Je ne suis absolument pas contre des garde-fous, le soucis c'est les décisions qui n'ont ni tête ni queue comme celle interdisant aux citoyens de pouvoir faire le change si ils voyagent moins d'une semaine, ça n'a aucun sens! ça veux dire que si un algérien décide de prendre 6 jours de vacances en Espagne, il n'ouvre pas droit au change ? Pareil pour la décision de faire appel au pénal pour une histoire de change de moins de 750 euros.. c'est RIDICULE. A croire que c'est une subvention.. c'est DU CHANGE, on échange de l'argent contre de l'argent. J'aime reconnaitre les choses quand elles sont bien faites, mais la c'est juste ridicule. Il faut vraiment régler cette histoire de devises une bonne fois pour toute.
×
×
  • Créer...