Outils pour utilisateurs

Outils du site


programmation_serveur_php_python_nodejs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
programmation_serveur_php_python_nodejs [2019/11/28 12:40] josephprogrammation_serveur_php_python_nodejs [2019/11/29 17:45] joseph
Ligne 28: Ligne 28:
 Avantages : Avantages :
  
-* Il y a souvent rien à installer, car Apache et PHP sont installés par défaut sur les hébergements webs mutualisés. En gros, que se passe-t-il ? Lorsque Apache reçoit une requête pour `http://example.com/monsite/index.php`, il voit que c'est un .php et il passe la requête à PHP (via [mod_php](https://stackoverflow.com/questions/2712825/what-is-mod-php/2712839#2712839)) qui exécute le code et produit une chaîne de caractères (string) en sortie, et Apache livre cela au "client" dans son navigateur.+* Il y a souvent rien à installer, car Apache et PHP sont installés par défaut sur les hébergements webs mutualisés. En gros, que se passe-t-il ? Lorsque Apache reçoit une requête pour `http://example.com/monsite/index.php`, il voit que c'est un .php et il passe la requête en interne à PHP (via [mod_php](https://stackoverflow.com/questions/2712825/what-is-mod-php/2712839#2712839), donc sans avoir à démarrer un nouveau process) qui exécute le code et produit une chaîne de caractères (string) en sortie, et Apache livre cela au "client" dans son navigateur.
  
 * Cela est très rapide (à chaque requête, le process Apache qui s'occupe de cette requête [démarre un nouveau thread pour PHP](https://stackoverflow.com/questions/5171639/creation-of-new-process-for-each-request-of-web-page/5171656#5171656) et cela se fait très rapidement, lire aussi [cet article](https://abhinavsingh.com/how-does-php-echos-a-hello-world-behind-the-scene/) pour plus de détails) * Cela est très rapide (à chaque requête, le process Apache qui s'occupe de cette requête [démarre un nouveau thread pour PHP](https://stackoverflow.com/questions/5171639/creation-of-new-process-for-each-request-of-web-page/5171656#5171656) et cela se fait très rapidement, lire aussi [cet article](https://abhinavsingh.com/how-does-php-echos-a-hello-world-behind-the-scene/) pour plus de détails)
Ligne 112: Ligne 112:
     De même que pour le point précédent, il faut lancer le script `python` manuellement et s'assurer qu'il tourne continuellement.     De même que pour le point précédent, il faut lancer le script `python` manuellement et s'assurer qu'il tourne continuellement.
          
-* soit avec `mod_wsgi` (méthode souvent plébiscitée, voir [ici](https://bottlepy.org/docs/dev/deployment.html#apache-mod-wsgi) pour un exemple complet, mais que je ne recommanderai pas personnellement)+* soit avec `mod_wsgi` (méthode souvent plébiscitée, voir [ici](https://bottlepy.org/docs/dev/deployment.html#apache-mod-wsgi) pour un exemple complet, mais méthode que je ne recommanderai pas personnellement)
  
     Faire:     Faire:
Ligne 118: Ligne 118:
         apt-get install libapache2-mod-wsgi         apt-get install libapache2-mod-wsgi
                  
-    Renommer le fichier .py de l'exemple précédent en .wsgi,  remplacer la dernière ligne (`run(host='localhost', port=8080)`) par `application = bottle.default_app()`, puis mettre ça dans la config Apache :+    Puis remplacer la dernière ligne (`run(host='localhost', port=8080)`) par `application = bottle.default_app()`, puis mettre ça dans la config Apache :
          
         <VirtualHost *:80>         <VirtualHost *:80>
           ServerName example.com           ServerName example.com
-          WSGIScriptAlias / /var/www/test_wsgi/app.wsgi+          WSGIScriptAlias / /var/www/test_wsgi/app.py
           <Directory />           <Directory />
             AllowOverride All             AllowOverride All
Ligne 131: Ligne 131:
     L'avantage de cette méthode avec `mod_wsgi` est que **c'est Apache** qui va s'occuper tout seul de lancer le script Python et il n'y a **plus besoin** à la main de démarrer le script .py et de s'arranger pour qu'il tourne continuellement (donc plus besoin de `nohup` ou `screen` comme dans l'exemple précédent).     L'avantage de cette méthode avec `mod_wsgi` est que **c'est Apache** qui va s'occuper tout seul de lancer le script Python et il n'y a **plus besoin** à la main de démarrer le script .py et de s'arranger pour qu'il tourne continuellement (donc plus besoin de `nohup` ou `screen` comme dans l'exemple précédent).
          
-    Par contre, en testant `mod_wsgi` je suis tombé sur plein de problèmes: `import module` qui ne marche pas alors qu'il est [dans le même répertoire](https://stackoverflow.com/questions/59088010/wsgi-importerror-no-module-named-hello-module-in-the-same-directory-of-the-ma), des [Fatal Python error: PyEval_AcquireThread: NULL new thread state](https://stackoverflow.com/questions/18013356/fatal-python-error-pyeval-acquirethread) dans les logs Apache, etc.+    Par contre, en testant `mod_wsgi` je suis tombé sur plein de problèmes: `import module` qui ne marche pas alors qu'il est [dans le même répertoire](https://stackoverflow.com/questions/59088010/wsgi-importerror-no-module-named-hello-module-in-the-same-directory-of-the-ma), des [Fatal Python error: PyEval_AcquireThread: NULL new thread state](https://stackoverflow.com/questions/18013356/fatal-python-error-pyeval-acquirethread) dans les logs Apache, etc. Bref, pas top.
  
 # Javascript # Javascript
programmation_serveur_php_python_nodejs.txt · Dernière modification : 2020/05/19 08:29 de joseph