Comment utiliser Python comme langage serveur d'un point de vue PHP


11

Je ne connais que la programmation côté serveur avec PHP. Pour moi, j'écris quelque chose index.phpet j'appelle http://localhost/index.phpet je vois les résultats du script PHP. J'utilise CakePHP et je comprends qu'il y a quelque chose que vous pouvez faire avec la réécriture d'URL, mais dans mon esprit, il y a cette relation un à un entre les URL et les fichiers PHP sur le serveur.

Maintenant, je fais beaucoup avec Python, mais juste des utilitaires de ligne de commande. J'aimerais utiliser Python au lieu de PHP pour mon prochain projet. Jusqu'à présent, on m'a dit mod_python, que je dois utiliser un framework comme Pylons ou Twisted ou même Django pour obtenir n'importe quelle sortie. D'autres ont dit que je n'avais qu'un en print()-tête HTTP et que le script sortirait comme si j'étais utilisé avec PHP.

Je voudrais écrire quelque chose qui ne prend essentiellement qu'une liste de répertoires et la rend jolie, afin que je puisse accéder à un tas de fichiers PDF à partir d'un navigateur mobile. Je sais comment faire cela avec PHP, je sais comment créer un script Python qui générerait le HTML. Je ne sais tout simplement pas comment exécuter ce script lorsque j'ouvre http://localhost/pdfcentral/.

Comment devrais-je configurer mon serveur? Il fonctionne sur Ubuntu 10.04.


Il existe de nombreuses variantes, mais la manière la plus simple serait de mettre le script Python dans votre cgi-binrépertoire afin que le serveur sache l'exécuter, et éventuellement de rediriger un fichier PHP vers celui-ci si vous souhaitez utiliser un chemin différent. Concernant le script Python lui-même, vous pouvez suivre cette procédure: forrestbao.blogspot.com/2009/08/…
ionFish

Réponses:


9

mod_pythonn'est plus activement développé. Alors qu'Apache dit que cela ne signifie pas que le projet est mort -

Actuellement, mod_python n'est pas en cours de développement actif. Cela ne signifie pas qu'il est "mort" comme certains l'ont prétendu. Cela signifie que le code et le projet sont suffisamment matures quand très peu est nécessaire pour le maintenir.

Mais, il est suggéré d' utiliser à la place mod_wsgi . C'est si vous voulez tout construire à partir de zéro. Ce que je suggère, vous ne devriez pas, sauf si vous l'utilisez comme exercice d'apprentissage.

Il serait préférable d'utiliser un framework web pour faire le gros du travail - gérer le routage, les requêtes, etc.

Une liste complète des frameworks Web Python est disponible ici , mais en voici quelques-uns qui sont populaires -

  • Django - Il est considéré comme l'équivalent Python de Ruby on Rails et est assez robuste, donc ne conviendrait pas à ce dont vous avez besoin.
  • Flacon - C'est un microframework. Autrement dit, il est petit, ne vous gêne pas et est idéal pour les petits projets qui ne nécessitent pas beaucoup de piles incluses.
  • Pyramide - Il est construit par le même groupe de personnes qui ont construit des pylônes, ce qui n'est pas disparu. Il se situe quelque part entre Flask et Django - peut être utilisé en remplacement de l'un ou de l'autre.
  • Bouteille - Ceci est un autre microframework, et est encore plus minimal que Flask. Est un seul fichier et n'a pas de dépendances (si vous utilisez le moteur de modélisation intégré) autre que la bibliothèque standard, ce serait donc un bon choix pour ce que vous voulez.
  • Web.py - Une fois alimenté Reddit (qui a été réécrit avec de nouveaux outils après avoir été acquis).
  • webapp2 - C'est le cadre standard pour Google App Engine (bien que vous puissiez utiliser d'autres cadres là-bas).

Parmi ceux-ci, je recommanderais Flask, car je l'ai utilisé et je n'ai rien à redire. Il possède également de nombreuses extensions qui vous faciliteraient la vie si vous souhaitez plus de fonctionnalités sur votre site.

En outre, vous auriez besoin d'un moteur de modèle - pour assembler votre html. Jinja2 , construit par les mêmes gars qui fabriquent Flask, et est assez largement utilisé. Mais venant du phpdéveloppement web, vous pourriez trouver l'utilisation de Mako plus naturelle, ce qui est également très populaire.

Voici une FAQ plus complète sur le développement Web Python - FAQ Python: Webdev .


1
J'ai un petit projet Flask en cours d'exécution avec FastCGI et lighttpd sur une machine de test, il devrait également fonctionner sur le serveur. Merci beaucoup!
Martin Ueding

1

J'ai trouvé la question un peu déroutante et si j'ai raison, je suppose que votre objectif principal est de servir des fichiers sur votre téléphone mobile en utilisant un joli style?

Si cela est vrai, vous ne devriez pas avoir à parcourir autant de boucles pour configurer quelque chose.

Apache2 vous permet de modifier le répertoire principal de liste des fichiers afin que vous puissiez le styler à peu près comme vous le souhaitez.

Il existe également de nombreux thèmes principaux disponibles en ligne, il suffit de rechercher Google pour la liste des répertoires Thème pour Apache2, ce qui le rend réactif ne serait pas trop difficile non plus.

Voici quelques informations sur la façon de changer l'apparence par défaut d'Apache

Et voici quelques modèles prêts à l'emploi, il y en a bien d'autres ....

Style de Repos

Récurseur

Indices


Cela semble assez bien résoudre le problème initial. J'ai pensé que je pourrais l'utiliser comme premier projet pour passer de PHP à Python. Si le projet Python stagne, je vais y jeter un œil. Merci!
Martin Ueding

Votre accueil;)
Simon Hayter
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.