Exécutez un serveur Web à partir de n'importe quel répertoire

9

J'écris un petit site Web, mais je ne veux PAS comprendre comment installer et configurer la pile LAMP complète pour tester le site Web à partir de mon ~/homerépertoire. Ce sera complètement perturbateur et inutile.

Tout ce que je veux, c'est d'avoir un répertoire, par exemple ~/home/Documents/Websiteet d'exécuter un petit serveur Web à partir de ce dossier comme dossier "home" du site Web.

Je sais que Jekyll peut faire quelque chose de similaire, mais cela ne semble fonctionner qu'avec les sites basés sur Ruby / Jekyll qu'il construit et configure.

N'y a-t-il pas un petit programme de serveur Web que je peux facilement installer puis exécuter très simplement?

Par exemple, si j'avais juste besoin d'exécuter quelque chose comme par exemple à simple-server serve ~/home/Documents/Websitepartir d'une ligne de commande, puis de naviguer vers par exemple localhost:4000ou quoi que ce soit pour tester le site, ce serait parfait.

Si cela est déjà possible dans Ubuntu et que je ne sais tout simplement pas comment, veuillez me le faire savoir.

etsnyman
la source
Quels types de fichiers avez-vous php pythonou simples html?
Dan
@ dan08 Pour le moment, tout simplement htmlet css. Je pourrais vouloir ajouter NodeJSà l'avenir, mais alors j'aurai une configuration différente.
etsnyman
Vous pouvez donc simplement les ouvrir dans votre navigateur Web, aucun serveur requis.
Dan
Pouvez-vous clarifier votre question? Il est vraiment beaucoup plus facile de servir des documents depuis / var / www / html que depuis votre répertoire personnel. Dans tous les cas, vous installez Apache avec mysql, php ou tout ce dont vous pourriez avoir besoin. Pour utiliser / va / www / html, copiez simplement les fichiers. Il est plus difficile de configurer Apache pour qu'il serve les fichiers de votre répertoire personnel, car vous devez soit activer les répertoires personnels, soit modifier les fichiers de configuration d'Apache. Dans les deux endroits, vous devez toujours avoir les répertoires / fichiers disponibles pour www-data. Je ne comprends pas ce que vous trouvez si difficile.
Panther
@ dan08 Il existe des limitations paralysantes au service à partir d'une file://adresse plutôt que d'une http://adresse. Certains liens et petits extraits Javascript ne fonctionnent tout simplement pas.
etsnyman

Réponses:

10

Si vous avez installé php, vous pouvez utiliser le serveur intégré php pour exécuter les fichiers html / css et / ou php:

cd /path/to/your/app
php -S localhost:8000

En sortie, vous obtiendrez:

Listening on localhost:8000
Document root is /path/to/your/app
tempête
la source
12

La façon la plus simple que je connaisse est:

cd /path/to/web-data
python3 -m http.server

La sortie de la commande vous indiquera sur quel port elle écoute (la valeur par défaut est 8000, je pense). Exécutez python3 -m http.server --helppour voir quelles options sont disponibles.

Pour plus d'informations:

  1. Documentation Python sur http.server
  2. Serveur HTTP simple (cela mentionne également la python2syntaxe)
muru
la source
Génie! Merci, @muru! Pour une raison quelconque, mon port 8000 est en cours d'utilisation (je ne peux pas comprendre pourquoi) mais je viens de courir python3 -m http.server 4000puis de naviguer localhost:4000dans Firefox et BAM! - mon site est prêt à être testé! Je vous remercie!
etsnyman
2

Ce que vous voulez s'appelle un serveur Web statique . Il existe de nombreuses façons d'y parvenir.

Il s'agit de serveurs Web statiques répertoriés

Une façon simple: enregistrer le script ci-dessous sous static_server.js

   var http = require("http"),
     url = require("url"),
     path = require("path"),
     fs = require("fs")
     port = process.argv[2] || 8888;

 http.createServer(function(request, response) {

   var uri = url.parse(request.url).pathname
     , filename = path.join(process.cwd(), uri);

   path.exists(filename, function(exists) {
     if(!exists) {
       response.writeHead(404, {"Content-Type": "text/plain"});
       response.write("404 Not Found\n");
       response.end();
       return;
     }

     if (fs.statSync(filename).isDirectory()) filename += '/index.html';

     fs.readFile(filename, "binary", function(err, file) {
       if(err) {        
         response.writeHead(500, {"Content-Type": "text/plain"});
         response.write(err + "\n");
         response.end();
         return;
       }

       response.writeHead(200);
       response.write(file, "binary");
       response.end();
     });
   });
 }).listen(parseInt(port, 10));

 console.log("Static file server running at\n  => http://localhost:" + port + "/\nCTRL + C to shutdown");

mettez votre index.htmldans le même répertoire et exécutez

 node static_server.js
kenn
la source
+1 pour la liste des serveurs statiques. Je dois dire que l'indentation de ce code semble très étrange.
muru
0

Installez local-web-server , il installe la wscommande que vous pouvez exécuter pour servir n'importe quel répertoire en tant que site statique.

Ce clip illustre l'hébergement statique ainsi que quelques formats de sortie de journal - devet stats.

Sortie de journal statique statique

Lloyd
la source