web-dev-qa-db-fra.com

Comment configurer le serveur local HTTP le plus simple?

J'utilise le R Studio IDE pour faire beaucoup de choses, dont celle de servir les sites Web locaux en utilisant le package de blogdown qui est un fork de hugo . J'écris le code dans R Studio et affiche un aperçu du site à l'aide de la commande blogdown::serve_site(). C’est le moyen le plus simple que je connaisse de prévisualiser des sites HTML statiques. Utiliser hugo R Studio oblige mon navigateur à se rendre à l'emplacement 127.0.0.1:XXXX et mon site local est prévisualisé sous mes yeux.

Puis-je desservir des sites locaux de manière native avec Ubuntu 18.04? Comment? J'imagine que cela devrait être très simple. Recherche en ligne Je ne trouve pas de moyen simple de le faire cependant. Si j’ouvre simplement les fichiers HTML statiques directement dans mon navigateur, ils ne montrent rien. Tous les liens d'image sont immédiatement cassés. Le formatage des en-têtes, des hyperliens, etc. n’est pas le même que lorsque je sers la page localement avec hugo .

EDIT - Je n'ai pas vraiment défini mon terme 'simplicité' '. Il existe deux approches différentes (à ce jour) dans les réponses: l’une la plus simple pour l’utilisateur final et l’autre en ce qui concerne les opérations effectuées par mon ordinateur. J'aime les deux approches et je serai heureux de recevoir des réponses utilisant n'importe quelle approche pour les tester. Je vous remercie.

27
Jason Hunter

Ubuntu utilise python3 par défaut, et ils se sont donné beaucoup de mal pour rendre cela extrêmement facile pour nous: D

Pour démarrer le serveur http sur le port , tapez

python -m http.server port

Si vous voulez partager des fichiers et des répertoires, insérez-les dans le répertoire que vous souhaitez servir.

cd /my/html/files
python -m http.server 8080

Si vous souhaitez utiliser une adresse autre que la valeur par défaut 0.0.0.0, vous pouvez utiliser --bind.

Ex: python -m http.server 8080 --bind 127.0.0.1 les servira à l'adresse 127.0.0.1:8080 :)

Edit: Qu'il s'agisse ou non de grandes longueurs, je laisserai cela au lecteur

Aussi pour votre commodité, voici un lien vers la documentation https://docs.python.org/3/library/http.server.html

58
j-money

Ici est une liste de serveurs HTTP sur une ligne. Je suis sûr qu'il en existe un qui conviendra à vos objectifs/à votre outillage existant.

Ci-après, un sous-ensemble du lien, qui contient à mon avis les plus pratiques.

Python:

python -m http.server 8000

Rubis:

Ruby -run -ehttpd . -p8000

Nœud:

npm install -g http-server
http-server -p 8000

Php:

php -S 127.0.0.1:8000
31
Richard

Un moyen simple de configurer un site http statique consiste à utiliser darkhttpd

Il n'y a pas de paquet dans Ubuntu pour ça, mais le logiciel est juste un fichier source que vous pouvez télécharger avec un tarball sur le site ou avec git:

git clone https://unix4lyfe.org/git/darkhttpd
cd darkhttpd

Puis exécutez make et vous avez votre exécutable darkhttpd . (Placez-le dans /usr/local/bin pour le rendre disponible à chaque utilisateur)

Courir

./darkhttpd /path/to/wwwroot

ou

./darkhttpd --help

obtenir de l'aide sur la commande

On peut spécifier un répertoire ou un port à utiliser et de nombreuses autres options.

5
solsTiCe

Sudo apt install Apache2 installera le serveur Web Apache2. Par défaut, il donne accès à index.html dans le dossier /var/www/html; Remplacer ce fichier par tout ce que vous voulez héberger est la façon la plus simple de procéder. Vous pouvez alors accéder à http://127.0.0.1 sur votre ordinateur local ou à l'adresse IP de votre ordinateur sur votre réseau. et il servira les pages.

4
Minty

Si vous êtes un utilisateur de Google Chrome, rien de plus simple: utilisez Web Server for Chrome . Installez-le simplement, lancez-le, cliquez sur , puis choisissez Dossier pour sélectionner le répertoire contenant vos fichiers statiques.

2
Diego Bernal

Si vous ne voulez pas vous souvenir des arguments de la commande python, utilisez woof:

Description: share files through HTTP protocol
 Woof (Web Offer One File) is a tool to copy files among hosts. It can serve a
 specified file on HTTP, just for a given number of times, and then exits.

Features include:
 * it can share stuff "one shot" and exit just after he served that file.
 * it can share things among different operating system or different devices
   (e.g.: a smartphone), and allows one to upload files easily.
 * it can also show a simple html form in order to upload file (useful if the
   client hasn't a way to serve the file).

Vous pouvez l’installer sur Debian/Ubuntu avec

apt install woof

Et utiliser comme

woof kittens.png

Il imprimera une URL à mettre dans un navigateur à l'autre bout.

1
Edheldil

L'une des solutions les plus simples (et les plus limitées) consiste à utiliser netcatcomme décrit dans cet article :

while true; do { echo -e "HTTP/1.1 200 OK\r\n$(date)\r\n\r\n<h1>hello world from $(hostname) on $(date)</h1>" | nc -vl 8080; } done

Cet exemple sert sur le port 8080. Pour desservir les premiers 1024 ports, vous devrez utiliser Sudoname__. Vous pouvez également servir un fichier de cette manière simplement en utilisant cat filename.

Pour un exemple plus compliqué, consultez bashttpd .

Notez également les différences entre netcat-traditional et netcat-openbsd . Ubuntu fournit les deux versions.

0
CYB3R