Le fichier http.server de Python (ou SimpleHTTPServer pour Python 2) est un excellent moyen de servir le contenu du répertoire en cours à partir de la ligne de commande:
python -m http.server
Cependant, en ce qui concerne les serveurs Web, c'est très lent ...
Il se comporte comme s'il s'agissait d'un seul thread et provoquait parfois des erreurs de délai d'attente lors du chargement de modules JavaScript AMD à l'aide de RequireJS. Le chargement d’une page simple sans images peut prendre entre cinq et dix secondes.
Qu'est-ce qu'une alternative plus rapide et tout aussi pratique?
http-server for node.js est très pratique et beaucoup plus rapide que SimpleHTTPServer de Python. Cela est principalement dû au fait qu’il utilise asynchrone IO pour le traitement simultané des demandes, au lieu de les sérialiser.
Installez node.js si vous ne l'avez pas déjà fait. Utilisez ensuite le gestionnaire de package de noeud (npm
) pour installer le package, à l'aide de l'option -g
pour effectuer une installation globale. Si vous utilisez Windows, vous aurez besoin d'une invite avec des autorisations d'administrateur. Sous Linux/OSX, vous souhaiterez Sudo
la commande:
npm install http-server -g
Cela téléchargera toutes les dépendances requises et installera http-server
.
Maintenant, depuis n'importe quel répertoire, vous pouvez taper:
http-server [path] [options]
Le chemin est optionnel, par défaut à ./public
s'il existe, sinon ./
.
Les options sont [par défaut]:
-p
Le numéro de port à écouter sur [8080]-a
L'adresse de l'hôte à associer à [localhost]-i
Afficher les pages d'index du répertoire [True]-s
ou --silent
Le mode silencieux ne se connecte pas à la console-h
ou --help
Affiche un message d'aide et quitteDonc, pour servir le répertoire actuel sur le port 8000, tapez:
http-server -p 8000
Je recommande: Twisted ( http://twistedmatrix.com )
un moteur de réseau piloté par les événements écrit en Python et sous licence open source MIT.
Il est multi-plateforme et préinstallé sur OS X depuis la version 10.5. Entre autres choses, vous pouvez démarrer un serveur Web simple dans le répertoire actuel avec:
twistd -no web --path=.
Explication des options (voir twistd --help
pour plus d'informations):
-n, --nodaemon don't daemonize, don't use default umask of 0077
-o, --no_save do not save state on shutdown
"web" est une commande qui exécute un serveur Web simple au-dessus du moteur asynchrone Twisted. Il accepte également les options de ligne de commande (après la commande "web" - voir twistd web --help
pour plus d'informations):
--path= <path> is either a specific file or a directory to be
set as the root of the web server. Use this if you
have a directory full of HTML, cgi, php3, epy, or rpy
files or any other files that you want to be served up
raw.
Il y a aussi beaucoup d'autres commandes telles que:
conch A Conch SSH service.
dns A domain name server.
ftp An FTP server.
inetd An inetd(8) replacement.
mail An email service
... etc
Ubuntu
Sudo apt-get install python-twisted-web (or python-twisted for the full engine)
Mac OS-X (préinstallé depuis 10.5 ou disponible sous MacPorts)
Sudo port install py-twisted
Les fenêtres
installer available for download at http://twistedmatrix.com/
Twisted peut également utiliser des certificats de sécurité pour chiffrer la connexion. Utilisez ceci avec vos options --path
et --port
existantes (pour HTTP simple).
twistd -no web -c cert.pem -k privkey.pem --https=4433
go 1.0 inclut un serveur http & util pour servir des fichiers avec quelques lignes de code.
package main
import (
"fmt"; "log"; "net/http"
)
func main() {
fmt.Println("Serving files in the current directory on port 8080")
http.Handle("/", http.FileServer(http.Dir(".")))
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
Exécutez cette source en utilisant go run myserver.go
ou pour créer un exécutable go build myserver.go
Essayez webfs , c’est minuscule et ne dépend pas de l’installation d’une plate-forme comme node.js ou python.
Si vous utilisez Mercurial, vous pouvez utiliser le serveur HTTP intégré. Dans le dossier que vous souhaitez servir:
hg serve
De les docs :
export the repository via HTTP
Start a local HTTP repository browser and pull server.
By default, the server logs accesses to stdout and errors to
stderr. Use the "-A" and "-E" options to log to files.
options:
-A --accesslog name of access log file to write to
-d --daemon run server in background
--daemon-pipefds used internally by daemon mode
-E --errorlog name of error log file to write to
-p --port port to listen on (default: 8000)
-a --address address to listen on (default: all interfaces)
--prefix prefix path to serve from (default: server root)
-n --name name to show in web pages (default: working dir)
--webdir-conf name of the webdir config file (serve more than one repo)
--pid-file name of file to write process ID to
--stdio for remote clients
-t --templates web templates to use
--style template style to use
-6 --ipv6 use IPv6 in addition to IPv4
--certificate SSL certificate file
use "hg -v help serve" to show global options
En voici un autre. C'est une extension Chrome
Une fois installé, vous pouvez l'exécuter en créant un nouvel onglet dans Chrome et en cliquant sur le bouton apps situé en haut à gauche.
Il a une interface graphique simple. Cliquez sur Choisir un dossier, puis sur le lien http://127.0.0.1:8887
.
Pensez également à devd , un petit serveur Web écrit en écriture. Des binaires pour de nombreuses plates-formes sont disponibles ici .
devd -ol path/to/files/to/serve
C'est petit, rapide et fournit des fonctionnalités optionnelles intéressantes comme le rechargement en direct lorsque vos fichiers changent.
J'ai trouvé python -m http.server
peu fiable - certaines réponses prendraient des secondes.
Maintenant, j'utilise un serveur appelé Ran https://github.com/m3ng9i/ran
Ran: un simple serveur web statique écrit en Go
essayez la polpetta ...
npm installer -g polpetta
ensuite vous pouvez
polpetta ~/dossier
et vous êtes prêt à partir :-)
J'aime live-server . Il est rapide et dispose d’une fonction de recharge en direct Nice, très pratique lors du développement.
L'utilisation est très simple:
cd ~/Sites/
live-server
Par défaut, il crée un serveur avec l’IP 127.0.0.1 et le port 8080.
Si le port 8080 n'est pas libre, il utilise un autre port:
Si vous avez besoin de voir le serveur Web sur d'autres machines de votre réseau local, vous pouvez vérifier quelle est votre adresse IP et utiliser:
live-server --Host=192.168.1.121
Et voici un script qui saisit automatiquement l'adresse IP de l'interface par défaut. Cela ne fonctionne que sur macOS.
Si vous le mettez dans .bash_profile
, la commande live-server
lancera automatiquement le serveur avec l'adresse IP correcte.
# **
# Get IP address of default interface
# *
function getIPofDefaultInterface()
{
local __resultvar=$1
# Get default route interface
if=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$if" ]; then
# Get IP of the default route interface
local __IP=$( ipconfig getifaddr $if )
eval $__resultvar="'$__IP'"
else
# Echo "No default route found"
eval $__resultvar="'0.0.0.0'"
fi
}
alias getIP='getIPofDefaultInterface IP; echo $IP'
# **
# live-server
# https://www.npmjs.com/package/live-server
# *
alias live-server='getIPofDefaultInterface IP && live-server --Host=$IP'
Utiliser Servez comme serveur
http://localhost:8080
ou choisissez "Lancer le navigateur"Remarque: j'ai jeté cela au clair parce que Web Server pour Chrome est en train de disparaître car Chrome supprime la prise en charge des applications et parce que je soutiens les étudiants en art qui n'ont aucune expérience de la ligne de commande.