[NEWBIE] PHP, MySQL, Apache, c'est quoi tout ça ?

Salut les pros !

Dans le cadre de mon boulot, je dois gérer un serveur qui héberge le logiciel de notes de mon établissement (je suis prof, au fait. bah oui par les temps qui courent, on doit faire un peu tout dans nos bahuts. Mais bref).
Comme c’est pas du tout ma formation initiale, et que je ne m’étais jamais intéressé au sujet, je fais ça un peu à l’arrache, fatalement, en appliquant des “recettes” que j’ai lues ou qu’on m’a dites.
Hier, nouvelle étape de franchie : pour tester sans risque les modifs que je suis amené à faire sur notre site (enfin, sur notre logiciel de note… En fait je ne sais pas ce que c’est. Si c’est un site ou un logiciel), j’ai installé notre logiciel de note en local sur mon ordi perso. Et c’est là que les questions commencent : même si j’ai réussi (au bout d’une heure quand même), j’ai strictement rien compris à ce que j’ai fait.

Donc.

  1. J’ai installé Xampp sur mon ordi : si j’ai tout compris, il regroupe les logiciels nécessaires pour “faire croire” que mon ordi est un serveur. Right ?
  2. Je ne comprends pas ce que c’est exactement MySQL et PHP. PHP, c’est un langage de programmation d’après ce que j’avais pigé. Sauf que Xampp fait tourner un “php”. Je comprends pas. C’est quoi ce truc ? Normalement un langage de programmation, ça n’a pas besoin de logiciels… Et MySQL, c’est un “logiciel de base de donnée”. En gros, c’est comme Acces ou j’ai tout faux ?
    2’) pareil pour Apache. Je comprends pas ce que c’est, quelle est la différence avec MySQL ou Xampp.
  3. Quand je fais tourner Xampp sur ma machine et que je travaille sur notre site / logiciel, est-ce qu’il y a un risques d’attaques extérieures sur ma machine ? Même si je travaille en local, est-ce que “Internet” voit ma machine comme étant un serveur ? Est-elle accessible ?
  4. Si c’est oui à la 3), qu’est-ce qu’il faut que je fasse pour protéger mon ordi dans ce cas là ? J’ai regardé les configs de Xampp, et j’ai rien capté. J’ai juste réussi à mettre un mot de passe sur “la base MySQL” (<- cette phrase ne veut probablement rien dire j’imagine).

J’ai bien essayé de suivre des tutoriaux et des Readme, mais là encore, je ne fais qu’appliquer des trucs sans comprendre exactement ce que je fais (quand je tripatouille EasyPHP, enfin, le truc de Xampp qui fait tourner PHP (PHP version 5.3.1) je fais quoi en fait ?).

Merci pour toutes les réponses ou précisions que vous pourrez me donner afin de comprendre un peu mieux ce que je fais (et dans quoi je m’embarque aussi, parce qu’évidemment, tout ça c’est bénévole. Donc si je vois que ça demande trop d’investissement, hein, faudra aviser, j’ai autre chose à faire aussi).

PS : je suis tellement largué que je ne sais même pas si c’est le bon forum pour poster ça.

My 2 cents, mais je vais suivre de près ce topic car j’ai souvent eu le même genre de questions à diverses reprises :slight_smile: (on les voit les gros n00bs de la zone là).

Pour ce que j’en sais, php est bien le langage qui permet de créer des pages dynamiques qui vont chercher leurs infos dans une base de données SQL, après les MySQL, apache et autres sont des logiciels qui permettent de gérer la dite base de donnée, voire de l’émuler localement pour tester les choses comme tu le fais, mais normalement ça se déploie sur un serveur je crois. Quand tu l’utilises en local, tu ne cours, à ma connaissance, aucun risque car les paramétrages font que tu n’es visible que par ta propre machine.

  1. Oui, en gros. Sauf que XAMPP ne “fait pas croire” à ton ordinateur qu’il est un serveur, il devient un serveur.
    2 et 3) PHP c’est à la fois un logiciel qui va te générer des pages web et à la fois un langage de programmation qui permet justement de contrôler le logiciel PHP (“toi, tu vas me générer ce titre avec le nom du jour d’aujourd’hui, et dans le paragraphe suivant tu me mets une image de chat”).
    Idem pour MySQL: c’est un logiciel de base de donnée et aussi un langage qui donne l’ordre à MySQL de ranger les données d’une façon voulue.
    XAMMP, c’est en fait une compilation de logiciel qui permet d’installer un serveur sans se prendre la tête. Il comprends entre autre PHP, MySQL et Apache.
    Apache c’est le “vrai” serveur web. C’est lui qui va envoyer des pages web à ton browser.
  2. En principe non… je crois ! (ou alors de manière compliquée ? … je laisse les vrai sysadmin répondre)

Conseil: lit ce tutorial. Il est vraiment bien foutu pour les néophytes complets (en tout cas l’introduction)(seal of PP approval !)

Hello FMP,
Alors pour te repondre en essayant d etre concis,

  • Oui, mysql = access, c est la base de donnees qui contiendra toutes les informations, le langage pour interroger cette base de donnees est le SQL

  • php est bien un langage de programmation, il est interprete par un module d un logiciel, le fameux truc ‹ qui tourne ›

  • ce gros logiciel ici, c est apache, un serveur web qui fait plein de trucs, dont comprendre et interpreter le php pour generer en reponses aux requetes qu on lui envoie un flux HTML (langage de presentation/descriptionm nos pages web) => c est lui qui repond qu bout de la chaine quand tu demandes une URL

  • si je rajoute Perl qui est un autre langage de script, on retrouve les initiales de XAMPP (Apache-MySQL-PHP-Perl) aui est simplement une sorte de kit logiciel permettant de creer et monter un petit site web en entier.

  • bonus: avec xampp, tu as aussi easyphp, un petit site web en php qui te permet de manipuler ta base de donnees mysal directement depuis ton navigateur

desole pour les simplifications les puristes, j espere que ca t aidera un peu mieux a te reperer dans la jungle des tutoriels qui existent, PM si tu veux qu on continue tranquillement, le temps que je recupere un pc non qwerty avec un vrai ecran ^^

Petite précision :
PHP = Langage script interprété par le serveur. Comprendre: le code PHP qui est écrit dans les pages de ton site est exécuté par ton serveur et non pas par le navigateur de ton visiteur (à l’inverse du JavaScript par exemple). Comme le code est compris par le serveur, c’est pour ça qu’il faut lui installer PHP. Pour qu’il “apprenne” ce langage.

Ah ok, merci à tous !

Je viens de lire le début du tuto que PetitPrince a mis en lien, et avec ce que vous dites c’est déjà plus clair.
Ce que je n’avais pas pigé, c’est le coup de la génération de la page Web : pour moi, c’était toujours le navigateur qui la « générait », c’est pour ça que je ne captais pas l’utilité de tout le reste. En fait non, le navigateur ne fait que « lire » en fait, ce qu’on lui envoie. Le site est généré ailleurs.
Je ne captais pas non plus que le même nom était parfois utilisé pour le logiciel et pour le langage lui même (dans le cas de PHP par exemple).

Rah la vache, c’est tout con mais quand on sait pas… Surtout que j’ai commencé trop fort en fait : on m’a dit « tiens pour t’entrainer t’as qu’à installer Xampp », ce que j’ai fait, mais sans rien comprendre, difficile de paramétrer…

Enfin, déjà ça me rassure, quand je bosse en local, j’ai aucun risque alors ? Sur hein ?

PS : coucou Xentyr :slight_smile:

sinon, la vrai e question c’est,: quel est le foutu logiciel de note? c’est pronote?
parce que si c’est pronote et que tu es en collège/lycée, tu dois avoir un serveur kwartz qui traine dans un coin, et ton kwartz fait dejà tout ça ( apache mysql et php)
soit tu héberges le logiciel sur le kwatrz, soit tu monte un serveur windows et tu redirige ton ippubliquekwartz:leport qui va bien vers le serveurpronote:le port 80

j’en ai monté une pelleté de binome comme ça, je peux peut etre aidé

un exemple là’lien espace parent/prof

Non on a Gepi, et il est installé sur la DMZ avec Xampp (enfin, je crois que c’est xampp, je n’en suis pas sur). C’est pour ça que pour tester, je l’ai installé sur mon ordi aussi (avec Gepi également, et avec une des bases que j’avais sauvegardé).

Et euh j’ai jamais entendu parler d’un serveur “kwartz”…

Bon j’ai pas lu (ça commence bien comme réponse), mais en cas de pépin, il existe des gens / services dans ton académie pour t’aider. �?a peut s’appeler bep (prononcer baipe, je sais pas ce que signifie l’accronyme) ou service informatique de ton académie, et eux savent t’inquiete. :slight_smile:

Après clairement, si ça t’interesse c’est bien que tu ai l’occasion de t’y mettre.

Bon tout le monde a déjà répondu mais je vais essayer de faire un peu plus dense en terme d’explication

On va essayer de reprendre tout depuis le début et après répondre aux questions spécifique (qui ont deja ete repondu donc pour certaines, je vais pas m’etendre)

Sous windows (home), il n’existe pas de serveur HTTP par défaut (apparemment avec vista on peut mettre IIS) et les outils comme Xampp, Wamp permette de palier a ce probleme en fournissant un environnement complet qui ne se limite pas qu’au serveur http… mais qu’est ce qu’un serveur http?

En bien déjà, pour aller sur geekzone et poster dessus, tu contacte un serveur http. Ce serveur est un logiciel qui reste fonctionnel 24/24 et qui va remplir un service: dialoguer en utilisant le protocole HTTP. Ce protocole est très défini et obéit a pas mal de règles que tout le monde doit respecter. C’est d’ailleurs pour ca que:
_On a le choix du serveur HTTP: Apache, IIS, Netscape Server, etc.
_On a le choix du client HTTP (navigateur): IE, Chrome, Firefox, etc.

Comment ca marche? C’est assez simple: quand on tape « http://www.geekzone.fr/ », le navigateur va contacter le serveur geekzone.fr (je passe volontairement la resolution DNS pour rester dans HTTP) et va dire au serveur HTTP:
_coucou, je suis FMP_thE_mAd
_Salut FMP_thE_mAd, que puis je pour toi?
_Eh bien j’aimerais obtenir la page d’accueil
_La voici
_Cool, merci… Oh attends, dans la page d’accueil je vois des images, peux tu me les fournir?
_Bien sur, lesquelles souhaites tu?
_Eh bien GeekZone.JPG et PostDuVendredi.PNG
_Pas de problème, les voila
_Merci
_Mais je t’en prie, a bientot.

Alors ok, je vous l’accorde, c’est pas aussi glamour et sympathique mais on va faire comme si ça l’était. Notez un truc important: quand on récupère une page web, ca se fait toujours en deux temps: Récupération de la page HTML, analyse de la page par le navigateur, et récupération des images.
Eh mais c’est quoi le HTML? C’est un format de présentation de texte, basé sur des tags. En gros, HTTP fourni un fichier qui contient des mots cles, interprétable par le navigateur, qui va permettre une mise en page du texte. En gros, au début du web, la présentation ressemblait a ca, ie il n’y a presque pas de présentation (y en a un peu quand même) et maintenant on a des sites comme GZ qui contiennent beaucoup de présentation. Dans les deux cas, ca reste un fichier HTML qui sera interprete, et donc mis en page, par le navigateur.

Si on résume grossièrement, HTTP est un serveur de fichier de page HTML

Le probleme du HTML, c’est qu’il est pas dynamique: Le site va rester le même tant que le webmaster n’aura pas mis a jour les pages (cf le lien précédent). On a inventé, au debut, les CGI, qui permettaient de faire du web dynamique, au prix de trous de secu potentiels important. Du coup, d’autres gens ont créé le PHP. (et aussi ASP, ASP.Net, JSP, etc - le principe est toujours le meme)

Pour schématiser le PHP de base, on pourrait faire ca:
Entrée utilisateur → analyse par un programme PHP → produit une page HTML → transmise au navigateur → Interprétation du HTML → affichage dans le navigateur

Quand on demande une page PHP (genre sur GZ), il se produit tout ca avant l’affichage. Sauf que la source de données « utilisateur » est pas super pratique ni super grande, on a besoin d’un source plus rapide et qui permet de stocker plus de choses: la base de données.
Ca donne:
Entrée utilisateur et/ou Base de données → analyse par un programme PHP → produit une page HTML → transmise au navigateur → Interprétation du HTML → affichage dans le navigateur

C’est exactement le fonctionnement de GZ. Quand je clique sur un lien vers un post, il n’y a pas d’entrée utilisateur, juste une lecteur de la base de données. Par contre, quand je vais valider mon message, il y aura entrée utilisateur ET utilisation de la base de données pour le stocker

Ce qui nous amène a la base de données: MySQL. Dans les outils de type Xampp/Wamp, il y a la base de données MySQL parce qu’elle est libre et gratuite. Ca fonctionne effectivement comme un fichier access mais, désolé pour access, de manière largement plus efficace que ce dernier.
Une base de données sert dans un premier temps a stocker les données. On peut utiliser un exemple classique de type excel (qui n’est pas formellement une base de donnees, on va voir pourquoi)
Voici un exemple classique de tableau excel
Nom, prenom, rue, code postal, ville, pays.
FMP, thE_mAd, geekzone, 18000, nowhere, france
Cafeine, The boss, geekmaster, 93000, Asniere, france
Faskil, The DJ, MusicMaster, 93000, Asniere, France
Lone, Wolf, labas, 49000, angers, france

Bon je sais plus ou vivent faskil & cafeine, je sais juste que c’est dans ce coin la et, pour l’exemple, ils vivent dans la meme ville.

Qu’est ce qu’on a ici: DU GACHIS D’ESPACE!! En effet, on va avoir 2 fois « asnieres » et QUATRE fois « france ». HONTE! Donc on economise l’espace avec une base de donnees:
On va faire 2 tables (bon on peut faire mieux mais c’est l’exemple :P), ce qui peut etre vu comme deux feuilles excel, mais avec une subtilité.
Userid, Nom, Prenom, rue, villeID
1,FMP, thE_mAd, geekzone, 1
2,Cafeine, The boss, geekmaster, 2
3,Faskil, The DJ, MusicMaster, 2
4,Lone, Wolf, labas, 3

Villeid, code postal, ville, pays
1,18000, nowhere, france
2, 93000, Asniere, france
3, 49000, angers, france

On vient d’économiser plein d’espace en utilisant 2 fois l’identifiant « 2 » de la ville. Et d’ailleurs, on pourrait faire mieux en faisant une 3eme table « Pays ». On parle ici de lien entre la table « user » et la table « ville » et, grâce a des fonctions SQL, on peut afficher un tableau similaire a la première feuille excel: en effet, pour l’utilisateur final, savoir que la personne est en ville 2 est pas super parlant.

Au final, apache, php mysql, c’est tout ca: un système complet qui permet de créer très facilement un environnement serveur web standard.
D’ailleurs, a quoi correspondent les initiales:
LAMP: Quand on est sous linux, on utilise cet acronyme: Linux Apache Mysql PHP
WAMP: Pour reprendre le meme concept que LAMP mais sous windows: Windows Apache Mysql PHP
Pour Xampp, je sais plus a correspond le X :slight_smile:

Est ce que c’est plus clair comme ca?

Comme disait petitprince, ca en devient un.

En fait, y a des abus de langage partout. PHP est bien un langage de programmation. Dans Xampp, tu as un Interpreteur PHP, un logiciel qui comprends le langage PHP et qui est capable de l’exécuter pour obtenir, a la fin, du HTML. Sinon, les langages de programmations ONT BESOIN d’au moins un logiciel:
_Soit un interpréteur, c’est le cas de PHP. L’interpréteur va lire chaque ligne du code et les exécuter, une par une, jusqu’à la fin du fichier PHP. C’est en général pas très rapide.
_Soit un compilateur, qui va transformer le langage en un executable. Typiquement, un programme n’est pas utilisable directement. Le compilateur transforme le code du programmeur en quelque chose d’utilisable directement par le processeur (CPU). Il y a longtemps, on fabriquait les logiciels directement en « langage processeur », mais avec la multiplication des processeurs de differente famille, il est desormais plus simple d’utiliser un langage « haut niveau » qui sera compilable sur plusieurs plateforme.
Pour la diff entre apache, php et mysql, cf plus haut et me dire si c’etait clair.

En théorie, non. En pratique, ca dépend.
Liste des choses a vérifier:
_Est ce que tu es en reseau local? (dans cmd, tu tape ipconfig et tu regarde si tu as une adresse de type 10.X.X.X ou 172.16/32.X.X ou 192.168.X.X)
_Est ce que tu as un firewall (celui de windows suffit)
_Est ce que tu es en direct sur le net (cf ipconfig)

La phrase a tout a fait un sens, pas de soucis. L’accès a la base de données mysql se fait en montrant patte blanche.
La encore, je vais schématiser un peu:
Imaginons que la base de données autorise uniquement la connexion de FMP si celui ci se connecte via sa machine FMP. Si FMP se connecte sur la BDD avec sa machine, ca va marcher. Si moi LoneWolf je me connecte avec ma machine Lony, ca marchera pas. Donc je me dis « bah j’essaye avec le login FMP »: Donc je me connecte avec FMP de ma machine Lony: refuse! Pourquoi? Parce que l’authentification de mysql fonctionne avec un couple (pour faire savant on dit un tuple - je crois :P), l’utilisateur et sa machine. En mettant un mot de passe, tu as protege le compte utilisateur de la bdd sur ta configuration Xampp.
Sinon pour proteger ton ordi, ne soit pas en direct sur le net (si possible) et, dans tous les cas, utilise un firewall.

Hope this help.

PS: en relisant ca fait quand même super vulgarisation, j’espère que c’est quand meme clair ^_^;

LoneWolf
Vulgarisons (sans être vulgaire) le web

Loony> il y a très longtemps, quand j’étais sous windows et que j’avais un xp (peut-être un pro) … tu pouvais “ajouter des logiciels supplémentaires” (avec le CD) et parmi eux se trouvait IIS.

LoneWolf est passé par là .

Bon légèrement HS mais pas tant que ça :
Pour comprendre HTTP, et par là même le rôle d’Apache, je te conseille de regarder la conférence « HTTP pour les naïfs et les brutes » de Karl Dubost. C’est un poil long (45 min en tout), mais très bien vulgarisé. Il faut dire que le monsieur il s’y connait, il a travaillé au [acronym=‘World Wide Web Consortium’]W3C[/acronym].
En regardant ça tu en sauras plus sur le sujet que 90% des geeks de cette planète. Promis.

Message subliminal pour les autres : Paris Web c’est le meilleur évènement européen sur les technos d’internet, et en plus 90% des interventions sont en français. Ultime bonus, les conférences sont en accès libre sur Dailymotion.

Merci à tous encore une fois, et à LoneWolf pour l’effort de vulgarisation.

Donc, j’ai compris \o/
Et du coup je suis un peu à même de piger les problèmes s’il y en a (ce qui ne voudra pas dire que je saurai les résoudre ; mais au moins quand le technicien viendra, je comprendrais ce qu’il me dira et donc je pourrai éventuellement refaire les manip’).

[quote=Fser]A ce propos :
mais en cas de pépin, il existe des gens / services dans ton académie pour t’aider[/quote]

Haha. Exact. Ils sont 4. Pour tout le département (une grosse trentaine de collèges et 5-6 lycées)… Alors avant de les avoir, parfois il peut s’écouler des jours. Et quand on est en rush sur les fins de trimestre, ou autre, inutile de dire qu’il vaut mieux essayer d’en faire un max nous même sinon on ferme le bahut le temps de tout réparer…
Ca ne veut pas dire que je vais devenir programmeur, hein, c’est pas mon taf’ (et je suis pas payé pour. Enfin, si, j’ai royalement 1 heure sup’ / semaine pour gérer tout le réseau de mon établissement ; réparation des machines y compris). Mais bon comme ça m’intéresse quand même un peu, je me renseigne histoire de pouvoir dépanner (ce que j’ai fait toute la journée d’ailleurs… Mais bon).