Führen Sie einen Webserver von einem beliebigen Verzeichnis aus

9

Ich schreibe eine kleine Website, möchte aber NICHT herausfinden, wie der vollständige LAMP-Stack installiert und konfiguriert wird, um die Website aus meinem ~/homeVerzeichnis zu testen . Das wird völlig störend und unnötig sein.

Ich möchte nur ein Verzeichnis haben, z. B. ~/home/Documents/Websiteeinen kleinen Webserver von diesem Ordner aus als "Home" -Ordner der Website ausführen.

Ich weiß, dass Jekyll etwas Ähnliches tun kann, aber es scheint nur mit Ruby / Jekyll-basierten Sites zu funktionieren, die es erstellt und konfiguriert.

Gibt es nicht ein kleines Webserver-Programm, das ich einfach installieren und dann ganz einfach ausführen kann?

Wenn ich zum Beispiel nur etwas wie z. B. simple-server serve ~/home/Documents/Websiteüber eine Befehlszeile ausführen und dann zu zB localhost:4000oder was auch immer navigieren müsste, um die Site zu testen, wäre das perfekt.

Wenn dies in Ubuntu bereits möglich ist und ich einfach nicht weiß wie, lass es mich wissen.

Etsnyman
quelle
Welche Arten von Dateien haben Sie php pythonoder einfach html?
Dan
@ dan08 Im Moment einfach htmlund css. Ich möchte vielleicht NodeJSin Zukunft hinzufügen , aber dann werde ich ein anderes Setup haben.
Etsnyman
Sie können diese also einfach in Ihrem Webbrowser öffnen, ohne dass ein Server erforderlich ist.
Dan
Können Sie Ihre Frage klären? Es ist wirklich viel einfacher, Dokumente aus / var / www / html bereitzustellen, als aus Ihrem Home-Verzeichnis. So oder so installieren Sie Apache zusammen mit MySQL, PHP oder was auch immer Sie sonst noch brauchen. Um / va / www / html zu verwenden, kopieren Sie einfach die Dateien. Es ist mehr Arbeit, Apache so zu konfigurieren, dass Dateien aus Ihrem Home-Verzeichnis bereitgestellt werden, da Sie entweder Home-Verzeichnisse aktivieren oder Apache-Konfigurationsdateien bearbeiten müssen. An beiden Standorten müssen noch die Verzeichnisse / Dateien für www-data verfügbar sein. Ich verstehe nicht, was du so schwierig findest.
Panther
@ dan08 Es gibt lähmende Einschränkungen beim Servieren von einer file://Adresse anstatt von einer http://Adresse. Einige Links und kleine Javascript-Schnipsel funktionieren einfach nicht.
Etsnyman

Antworten:

10

Wenn Sie PHP installiert haben, können Sie den integrierten PHP-Server verwenden, um HTML / CSS- und / oder PHP-Dateien auszuführen:

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

Als Ausgabe erhalten Sie:

Listening on localhost:8000
Document root is /path/to/your/app
Sturm
quelle
12

Der einfachste Weg, den ich kenne, ist:

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

Die Ausgabe des Befehls zeigt an, welchen Port er abhört (Standard ist 8000, glaube ich). Führen Sie aus, um python3 -m http.server --helpzu sehen, welche Optionen verfügbar sind.

Für mehr Informationen:

  1. Python-Dokumentation zu http.server
  2. Einfacher HTTP-Server (hier wird auch die python2Syntax erwähnt)
muru
quelle
Genius! Danke, @muru! Aus irgendeinem Grund wird mein Port 8000 verwendet (ich kann nicht herausfinden warum), aber ich bin gerade gelaufen python3 -m http.server 4000und habe dann localhost:4000in Firefox und BAM navigiert ! - Meine Website kann getestet werden! Danke!
Etsnyman
2

Was Sie wollen, heißt statischer Webserver . Es gibt viele Möglichkeiten, dies zu erreichen.

Es sind statische Webserver aufgelistet

Ein einfacher Weg: Speichern Sie das folgende Skript als 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");

Legen Sie Ihre index.htmlin das gleiche Verzeichnis und führen Sie

 node static_server.js
kenn
quelle
+1 für die Liste der statischen Server. Ich muss sagen, die Einrückung dieses Codes sieht sehr seltsam aus.
Muru
0

Wenn Sie den lokalen Webserver installieren, wird der wsBefehl installiert, den Sie ausführen können, um ein beliebiges Verzeichnis als statische Site bereitzustellen.

Dieser Clip zeigt statisches Hosting sowie einige Protokollausgabeformate - devund stats.

Statische statische Protokollausgabe

Lloyd
quelle