109 votes

Serveur Web HTTP simple

Je joue avec Moulin à vent (similaire à selenium) avec est amusant mais l'une des exigences est qu'il doit être exécuté sur http. Le projet sur lequel je travaille est une application web pour client lourd, tous nos tests unitaires sont simplement exécutés sur le système de fichiers local car il n'y a pas besoin de HTTP puisque tous les services de données sont simulés.

En gros, ce que je recherche, c'est un serveur http très léger qui ne sera utilisé que pour servir des fichiers statiques. Je veux pouvoir écrire un simple bash script, qui démarre le serveur web, puis exécute le test selenium, puis arrête le serveur web.

Quelque chose qui soit un fichier unique serait également bien. Je vois qu'il y a beaucoup d'options, mais je n'ai que l'embarras du choix, alors je cherche des recommandations.

Regards,

Chris

Edit : Idéalement, cette solution devrait être multiplateforme.

Edit : Désolé de m'étendre davantage, j'aimerais avoir un seul fichier que je pourrais déposer dans n'importe quel dossier, puis appeler $someApp start et il commence à servir ces fichiers sur l'un des ports localhost.

260voto

f3lix Points 13634

Il n'y a pas de moyen plus simple que...

Avec python 2.x vous pouvez utiliser l'option SimpleHTTPServer comme ceci

python -m SimpleHTTPServer [port]

Avec python 3.x utiliser :

python -m http.server [port]

Documentation source

Ceci va démarrer un serveur HTTP sur le port 8000 (si aucun port n'est spécifié) qui servira les fichiers et les répertoires qui sont dans le répertoire de travail actuel.

Avantages :

  • est livré avec python (>= 2.4), il n'est pas nécessaire d'installer quoi que ce soit.
  • aucune configuration nécessaire

Voir Recette 365606 : Comment servir des fichiers à partir d'un répertoire (et/ou tester des scripts CGI) y 18.20 SimpleHTTPServer -- Gestionnaire de requête HTTP simple pour plus d'informations

120voto

MarkW Points 1223

Si vous avez essayé ceci avec Python 3.x, vous avez probablement obtenu :

python.exe: No module named SimpleHTTPServer

Faites plutôt ça :

python -m http.server

Certains modules de la version 3.x ont été réorganisés et renommés, notamment http.server .

9voto

Eli Bendersky Points 82298

Si vous n'avez besoin que de quelque chose de simple avec un faible trafic, et que Python est votre langage de prédilection, pourquoi ne pas utiliser le serveur web intégré de la bibliothèque standard Python ? BaseHTTPServer . Pas de temps d'installation, rien à télécharger et entièrement personnalisable à partir de Python.

Voir aquí pour un exemple.

8voto

Triptych Points 70247

Je suis devenu un récent fan de cherrypy . Ce n'est pas un fichier unique, mais il est extrêmement simple de faire fonctionner une petite application web, et il suffit d'une très petite modification pour servir des fichiers statiques.

Voici le code complet pour faire fonctionner un serveur simple sur http://localhost:8080 :

import cherrypy

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

cherrypy.quickstart(HelloWorld())

5voto

Andy Hume Points 15186

Sur Unix :

Nginx - http://nginx.net/

Lighttpd - http://www.lighttpd.net/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X