Outils pour utilisateurs

Outils du site


programmation_serveur_php_python_nodejs

Ceci est une ancienne révision du document !


Comment programmer un serveur web ?

  • Côté client (c'est à dire ce qui s'affiche dans le navigateur du visiteur d'un site), on fait du HTML (contenu) + CSS (mise en page) + Javascript (aspect dynamique des pages).

  • Mais comment programmer ce qu'il se passe côté serveur ? Exemple : lorsqu'on poste sur Faceb**k, Twitter, lorsqu'on uploade une photo en ligne, il faut bien que du code s'exécute sur un serveur distant pour enregistrer tout cela dans une base de données, etc.

C'est ce que nous allons voir ici.

PHP

PHP est le langage par excellence pour programmer côté serveur. Statistique 2018 :

According to W3Techs' data, PHP is used by 78.9% of all websites with a known server-side programming language.

Pour démarrer avec PHP, la méthode est assez simple :

  • Avoir un hébergement web (et un serveur web qui tourne dessus, comme par exemple Apache ou Nginx, mais c'est souvent le cas pré-installé)

  • Créer un fichier index.php à la racine de son site :

      <?php 
      echo "Hello world";
      ?>
        
  • C'est tout! Il suffit d'ouvrir https://example.com/monsite/index.php dans son navigateur et ce "code" est executé pour en faire une page web.

Avantages :

Python

Méthode simple (mais bizarrement assez peu connue)

Il y a une méthode toute simple pour faire de la programmation web en Python, avec une logique un peu similaire au PHP :

  1. Installer le module mod_python :

     apt-get install libapache2-mod-python
  2. Créer un fichier .htaccess à la racine du site, pour indiquer que les fichiers .py doivent être traités par Python, contenant ceci :

     AddHandler mod_python .py
     PythonHandler mod_python.publisher
  3. Créer un fichier test.py :

     def index(req):
         return("<html><body>Hello world</body></html>")
  4. Ouvrir https://www.example.com/test.py dans le navigateur, ça marche !

Avantages :

  • logique toute simple, identique à ce qu'on fait en PHP

  • pas de librairie / framework à utiliser

Inconvénients :

  • il doit y en avoir mais j'ai pas encore trouvé (j'éditerai ultérieurement)

La méthode classique

La méthode "classique" pour faire du web en Python est d'utiliser une logique assez différente des méthodes présentées précédemment.

Contrairement à avoir, comme précédemment, pour chaque requête, un module qui "passe le relais" entre Apache et PHP ou Apache et Python, il s'agit ici d'avoir un process Python qui tourne en permanence, et attend les requêtes au fur et à mesure dans une boucle infinie (Event loop).

Exemple:

from bottle import route, run, template

@route('/hello/<name>')
def hello(name):
    return template('<b>Bonjour {{name}}</b>!', name=name)
    
@route('/')
def index():
    return template('Bienvenue sur le site!')

run(host='localhost', port=8080)  # boucle infinie, qui attend des événements (des requêtes)

On utilise classiquement un framework pour ça :

  • bottle.py, c'est le plus simple que j'ai testé et il marche super bien. Avantage: c'est un micro-framework en 1 seul fichier .py.
  • Flask, grosso modo pareil, peut-être un peu plus complet
  • Django, réputé comme très complet, jamais testé

NodeJS

programmation_serveur_php_python_nodejs.1574890485.txt.gz · Dernière modification : 2019/11/27 21:34 de joseph