Möglicherweise spielen Sie mit clientseitigem JavaScript und betreten plötzlich einen Bereich, der nicht mit einer lokalen Datei ausgeführt werden kann. Heutzutage ist HTTPS erforderlich, oder Sie möchten HTTP2 ausprobieren. Zur Zeit bin ich in Web Workers eingestiegen, aber es gibt auch andere Fälle wie WebRTC ... (Erinnern) ... (nicht gefunden).
In einem solchen Fall ist es schwierig, Apache und Nginx einzeln zu starten, daher werde ich ein kleines Suchergebnis hinterlassen.
[2018/4/18 postscript] In letzter Zeit steigt der Bedarf an HTTPS. Als Reaktion darauf hat die Anzahl der Methoden, die HTTPS unterstützen, zugenommen, sodass wir nicht alle abdecken können, aber wir haben so viel wie möglich hinzugefügt und geändert.
Python hat eine "-m" -Option hinzugefügt, um das Modul als Skript auszuführen (obwohl es auf Version 2.4 und höher beschränkt zu sein scheint). Verwenden Sie diese Option, um SimpleHTTPServer, eine der Standardbibliotheken, in einem Liner auszuführen. Ein Beispiel für den Start und ein Zugriffsprotokoll werden angezeigt. Die Standardportnummer ist 8000.
Beispiel für das Abhören von Port 8000
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
127.0.0.1 - - [09/Jan/2014 11:21:09] "GET / HTTP/1.1" 200 -
Es ist gut, dass das Zugriffsprotokoll ordnungsgemäß bleibt. Wenn Sie die Portnummer ändern möchten, geben Sie die Portnummer am Ende an.
Beispiel für das Abhören von Port 3000
$ python -m SimpleHTTPServer 3000
Serving HTTP on 0.0.0.0 port 3000 ...
Referenz: Einzeiler zum sofortigen Starten eines Webservers mit einem Befehl (Ruby oder Python)
Ich habe es nicht ausprobiert, aber es scheint wie folgt mit der Python 3.x-Serie zu funktionieren.
Beispiel für das Abhören von Port 8000
$ python -m http.server 8000
Referenz: Webserver mit einem Liner
Eine Bibliothek namens webrick ist standardmäßig an Ruby angehängt, sodass Sie damit einen Webserver einrichten können. Im folgenden Beispiel werden nur der Dokumentstamm und die Portnummer (8000) angegeben, es können jedoch auch andere Einstellungen vorgenommen werden. Die Standardportnummer ist 80. Bitte beachten Sie, dass wenn Sie die Portnummer nicht angeben, diese mit einem Fehler beendet wird, wenn Sie keine Administratorrechte haben.
Beispiel für das Abhören von Port 8000
$ ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 8000).start'
[2014-01-09 13:49:12] INFO WEBrick 1.3.1
[2014-01-09 13:49:12] INFO ruby 1.9.3 (2013-06-27) [x86_64-darwin12.4.0]
[2014-01-09 13:49:12] INFO WEBrick::HTTPServer#start: pid=9479 port=8000
localhost - - [09/Jan/2014:13:49:15 JST] "GET / HTTP/1.1" 200 2377
- -> /
Es ist gut, dass das Zugriffsprotokoll auch hier bleibt.
~~ * Um zu stoppen, verwenden Sie die Option -KILL für den Befehl kill. ~~ Als ich es früher versuchte, konnte ich es mit Strg + C stoppen.
Alter Weg zu stoppen (jetzt Strg+Stopps bei C)
$ ps aux | grep ruby
Suchen Sie nach der Webrick-Prozessnummer
$ kill -Prozessnummer töten
Referenz: Einzeiler zum sofortigen Starten eines Webservers mit einem Befehl (Ruby oder Python)
Als ich WEB Rick zum ersten Mal seit langer Zeit überprüfte, stellte ich fest, dass es HTTPS problemlos unterstützen kann. Im folgenden Beispiel wird das Zertifikat automatisch generiert und überwacht dann Port 8000. * Nur für HTTPS. Sie können keine Verbindung mit HTTP herstellen.
Beispiel für das Abhören per HTTPS an Port 8000
$ ruby -rwebrick -rwebrick/https -e 'WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 8000, :SSLEnable => true, :SSLCertName => [["CN", WEBrick::Utils::getservername]] ).start'
[2016-06-01 14:10:36] INFO WEBrick 1.3.1
[2016-06-01 14:10:36] INFO ruby 2.1.4 (2014-10-27) [x86_64-darwin14.0]
................................................................................................................++++++
....++++++
[2016-06-01 14:10:36] INFO
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: CN=sahara.local
Validity
Not Before: Jun 1 05:10:36 2016 GMT
Not After : Jun 1 05:10:36 2017 GMT
Subject: CN=sahara.local
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:b7:e4:37:9e:86:40:dd:cb:01:b2:a7:a8:53:db:
42:e8:81:0f:a9:23:63:d9:6c:6a:6a:13:0f:bc:66:
ed:ac:04:6c:93:1d:82:7b:22:6f:11:fc:cd:b7:ab:
a8:6b:fc:fc:60:e8:18:cc:52:95:b4:1a:aa:8c:1e:
01:cb:fa:14:0b:03:f0:3e:9e:d2:d4:5d:44:b2:83:
e4:de:49:5c:37:7d:1a:2b:97:a7:82:e9:d9:cb:c0:
fa:f5:5b:92:54:29:5c:e4:fe:c4:ed:a0:2f:3b:da:
83:09:e2:12:d8:01:84:9f:60:80:9c:5a:1b:12:70:
be:97:e1:3c:34:b6:fd:80:29
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Key Usage:
Key Encipherment
X509v3 Subject Key Identifier:
00:0C:DD:F6:BD:66:22:72:82:DA:82:20:9C:54:E6:12:64:5E:90:15
X509v3 Extended Key Usage:
TLS Web Server Authentication
Netscape Comment:
Generated by Ruby/OpenSSL
X509v3 Authority Key Identifier:
keyid:00:0C:DD:F6:BD:66:22:72:82:DA:82:20:9C:54:E6:12:64:5E:90:15
DirName:/CN=sahara.local
serial:01
Signature Algorithm: sha1WithRSAEncryption
5b:ae:8f:06:7f:07:a2:ff:25:f1:4e:b6:04:c7:9f:fb:e0:aa:
54:3d:b8:ab:54:a5:cf:e0:94:52:d1:e5:03:0e:8f:73:13:6f:
34:f4:e7:88:93:9e:69:df:43:c2:33:5d:cc:48:4b:2a:84:48:
a4:a2:7d:e8:e1:82:7e:3e:a4:23:34:c9:72:f3:5b:52:c7:41:
6a:99:29:16:70:ee:bf:bd:d5:38:92:9b:0a:0d:9a:70:6f:a8:
c3:18:60:df:73:45:41:29:3d:b3:6a:59:23:fe:1f:14:e0:cf:
a1:db:09:50:06:7c:a3:81:95:c0:78:29:3c:71:ce:ac:aa:20:
98:06
[2016-06-01 14:10:36] INFO WEBrick::HTTPServer#start: pid=7246 port=8000
localhost - - [01/Jun/2016:14:10:55 JST] "GET / HTTP/1.1" 200 4257
- -> /
Wenn ich versuche, eine Verbindung mit einem Webbrowser herzustellen, wird ein Hinweis wie "Diese Verbindung schützt nicht die Privatsphäre" (für Chrome) oder "Es ist keine sichere Verbindung" (für Firefox) angezeigt.
Im Fall von Chrome können Sie die Seite anzeigen, indem Sie auf "Auf localhost zugreifen (nicht sicher)" klicken, das angezeigt wird, wenn Sie auf "Erweitert" klicken.
Im Fall von Firefox ist dies etwas kompliziert. Sie können diese Site als Ausnahme behandeln, indem Sie auf "Ausnahme hinzufügen" klicken, wenn Sie auf "Fehlerinhalt" und dann im Dialogfeld auf "Sicherheitsausnahme genehmigen" klicken. Wenn der HTTPS-Server danach neu gestartet wird, wird das Zertifikat aktualisiert und die Verbindung abgelehnt (Fehlercode: SEC_ERROR_REUSED_ISSUER_AND_SERIAL). In diesem Fall müssen Sie das in Firefox registrierte Zertifikat löschen. Siehe Referenz 2 für Details.
~~ Die obige Methode erstellt automatisch ein Zertifikat, Sie können jedoch auch ein vorhandenes Zertifikat verwenden. Es wird zu lang sein, um als Einzeiler bezeichnet zu werden, daher werde ich es weglassen, aber Einzelheiten finden Sie in Referenz 1. ~~
Referenz 1 ist für jede Domain verschwunden und wurde bei der Suche nach Titel nicht gefunden. Daher werde ich eine Methode zur Verwendung eines vorhandenen Zertifikats hinzufügen.
Bereiten Sie zunächst den privaten Schlüssel und das Zertifikat vor. Wenn Sie bereits ein Zertifikat haben, überspringen Sie es bitte. Im folgenden Beispiel lautet der Ländername nur JP, und die folgenden Fragen werden nicht beantwortet.
Erstellen eines privaten Schlüssels und Zertifikats
$ openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout localhost.key -out localhost.crt
Generating a 2048 bit RSA private key
.............................................................+++
..............................................................................................................................................................+++
writing new private key to 'localhost.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
$ ls
localhost.crt localhost.key
Starten Sie einen Webserver, der HTTPS unterstützt, mit dem oben erstellten Zertifikat oder einem vorhandenen Zertifikat, das separat erstellt wurde. Als Einzeiler ist es etwas lang, machen Sie also keinen Fehler.
Beispiel für das Abhören per HTTPS an Port 8000
$ ruby -rwebrick -rwebrick/https -e 'WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 8000, :SSLEnable => true, :SSLPrivateKey => OpenSSL::PKey::RSA.new(File.open("localhost.key").read), SSLCertificate: OpenSSL::X509::Certificate.new(File.open("localhost.crt").read), :SSLCertName => [["CN", WEBrick::Utils::getservername]] ).start'
[2018-04-18 03:30:53] INFO WEBrick 1.3.1
[2018-04-18 03:30:53] INFO ruby 2.3.1 (2016-04-26) [x86_64-darwin14]
[2018-04-18 03:30:53] INFO
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
c7:92:94:c6:4b:1f:75:65
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=JP, ST=Some-State, O=Internet Widgits Pty Ltd
Validity
Not Before: Apr 17 18:23:43 2018 GMT
Not After : Apr 17 18:23:43 2019 GMT
Subject: C=JP, ST=Some-State, O=Internet Widgits Pty Ltd
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:c3:c7:93:ee:fb:00:4f:b1:b4:6a:8d:b8:13:7e:
b0:f9:7e:63:43:21:40:1c:c2:2e:ce:f4:fa:68:37:
03:8b:1b:e1:c3:de:3c:4e:23:d3:9b:b8:78:d3:47:
3c:78:1f:fb:97:43:d3:ec:6f:8d:56:ee:c1:5a:16:
a7:84:91:bf:c3:79:e2:d4:33:cd:f3:b5:7d:5b:55:
d2:ef:3f:f8:9d:fe:e1:28:04:24:2d:5a:ef:dd:cc:
10:ba:2e:d8:ed:65:61:5b:95:1a:11:5c:1a:c3:1d:
76:5f:b2:c8:05:66:88:e0:38:03:4b:fd:0a:51:2c:
9f:3e:ff:f0:40:66:02:ba:b5:14:d2:c9:09:3a:c0:
c3:40:6a:2f:6c:ed:6b:e1:72:f2:19:c2:41:7a:9c:
fb:83:81:ab:df:a1:3b:db:29:b1:4d:a6:89:43:28:
17:2a:ee:77:47:60:52:66:fa:08:e4:e5:ec:0e:cd:
33:1d:e9:86:81:c3:66:d3:40:63:62:f1:da:83:8a:
8a:e9:fd:c5:7b:11:13:d6:9a:74:ef:5b:aa:ac:19:
59:8d:a6:ae:22:95:c8:b5:5f:05:bd:09:5d:df:6c:
09:b0:9f:22:7f:81:ee:4f:42:5c:e9:4c:7e:0c:75:
1b:b3:14:4d:32:cf:86:28:0a:a5:d1:f5:64:b6:5f:
26:e1
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
A7:A1:32:FD:43:80:05:EC:F0:1B:41:0C:3B:0A:05:DE:46:F1:B5:32
X509v3 Authority Key Identifier:
keyid:A7:A1:32:FD:43:80:05:EC:F0:1B:41:0C:3B:0A:05:DE:46:F1:B5:32
DirName:/C=JP/ST=Some-State/O=Internet Widgits Pty Ltd
serial:C7:92:94:C6:4B:1F:75:65
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
2b:b0:86:47:9f:29:d0:2d:99:85:7f:52:fd:46:af:5a:ef:97:
de:98:da:ab:a6:97:4b:3a:16:06:52:ad:ec:9d:37:47:1d:af:
3d:59:11:43:ca:2e:24:77:88:d3:68:67:cb:53:72:d9:c2:d5:
a2:26:00:34:26:63:db:1b:86:63:4f:94:ac:20:ee:07:07:67:
ad:50:67:3a:fa:b8:0a:56:10:9f:e6:c2:80:df:6d:42:2e:cf:
91:ff:2e:de:02:5a:63:5c:45:0c:e7:8a:0c:a5:42:4d:09:1c:
1f:c1:28:6b:5e:2e:98:fd:65:d5:83:43:c4:2b:72:f4:61:ca:
d5:8a:65:4d:10:bd:6b:0a:ce:b5:ea:86:8e:cc:18:61:87:88:
b0:26:e0:42:22:75:e6:36:12:19:79:52:76:5c:94:f4:3b:7a:
1e:16:5d:ea:28:1b:a8:b3:f8:aa:49:05:c5:07:f8:5c:7f:99:
96:cf:f6:d5:71:8d:37:40:94:06:82:d0:d1:67:49:93:1c:29:
7f:85:18:12:83:4a:0c:95:08:8e:19:e6:07:4a:9e:a1:35:81:
a6:65:35:d9:ea:a0:cd:b8:6a:c8:f9:fe:0f:b5:1e:bd:df:48:
64:f1:bb:a4:b6:97:cc:75:fc:40:a5:4c:e9:6b:e4:9a:2f:a0:
36:d8:39:f8
[2018-04-18 03:30:53] INFO WEBrick::HTTPServer#start: pid=10166 port=8000
::1 - - [18/Apr/2018:03:30:55 JST] "GET / HTTP/1.1" 200 1996
- -> /
~~ Referenz 1: SSL mit WEBrick aktivieren ~~ Referenz 2: [Serverzertifikat mit derselben Seriennummer wie andere](https://support.mozilla.org/ja/kb/%E4%BB%96%E3%81%A8%E5%90%8C%E3 % 81% 98% E3% 82% B7% E3% 83% AA% E3% 82% A2% E3% 83% AB% E7% 95% AA% E5% 8F% B7% E3% 82% 92% E3% 82 % 82% E3% 81% A4% E3% 82% B5% E3% 83% BC% E3% 83% 90% E8% A8% BC% E6% 98% 8E% E6% 9B% B8
Ruby verfügt über ein Sinatra-Framework, mit dem auch ein Webserver in einem Liner eingerichtet werden kann. Ein Beispiel für den Start und ein Zugriffsprotokoll werden angezeigt. Die Standardportnummer ist 4567. Entsprechend dem Sinatra-Format werden komplizierte URLs verarbeitet. Im folgenden Beispiel wird index.html jedoch ignoriert und "Hello World" zurückgegeben.
Beispiel für das Abhören von Port 4567
$ ruby -rsinatra -e 'set :public_folder, "./", get("/"){"Hello world"}'
== Sinatra/1.4.2 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on localhost:4567, CTRL+C to stop
127.0.0.1 - - [09/Jan/2014 13:56:05] "GET / HTTP/1.1" 200 11 0.0025
Gehen Sie wie folgt vor, um die Portnummer anzugeben.
Beispiel für das Abhören von Port 8000
$ ruby -rsinatra -e 'set :port, 8000; set :public_folder, "./", get("/"){"Hello world"}'
Referenz: So starten Sie einen Webserver mit einem Liner
Beispiel für das Akzeptieren von anderen Hosts
ruby -rsinatra -e 'set :port, 8000; set :public_folder, "./"; set :environment, :producntion; get("/"){"Hello world"}'
Referenz: Sinatra ist standardmäßig nicht mehr von außen verbunden
Webserverfunktionen wurden seit PHP 5.4.0 integriert (Dank an Tadsan für die Bereitstellung von Informationen). Laut Dokumentation "Verwenden Sie es für Demos und Tests", aber es ist perfekt für diesen Beitrag. Im folgenden Beispiel wird die Verwendung von Port 8000 gestartet. Der Hostname und die Portnummer können nicht weggelassen werden.
Beispiel für das Akzeptieren nur von localhost
$ php -S localhost:8000
PHP 5.4.17 Development Server started at Thu Jan 9 17:35:44 2014
Listening on http://localhost:8000
Document root is /hoge
Press Ctrl-C to quit.
[Thu Jan 9 17:35:48 2014] ::1:59299 [404]: / - No such file or directory
Wie bei der Ruby (Sinatra) Edition können Sie nur von localhost aus eine Verbindung herstellen. Wenn Sie eine Verbindung von einem anderen Host herstellen möchten, geben Sie "0.0.0.0" als Hostnamen an und starten Sie ihn.
Beispiel für das Akzeptieren von anderen Hosts
$ php -S 0.0.0.0:8000
Referenz: Eingebauter Webserver
Bisher war es nicht aktiviert, aber Sie können mit Ruby problemlos einen Webserver einrichten ( Vielen Dank für Ihre Informationen, Herr Yoshi-Taka. Laut Dokumentation ist es Teil der un-Bibliothek, die ein alternatives Dienstprogramm zu Unix-Basisbefehlen darstellt, und es scheint, dass WEBRick tatsächlich startet. Im folgenden Beispiel wird das aktuelle Verzeichnis als Dokumentstamm festgelegt und die Verwendung des 8000-Versionsports gestartet. Das Zugriffsprotokoll entspricht dem Basis-WEBRick. Wenn die Portnummer weggelassen wird, wird versucht, an Port 80 zu starten. Im Vergleich zu Ruby (WEBRick Edition), das zuvor eingeführt wurde, bietet es die Vorteile von "kurzen Befehlen" und "kann mit Strg + C beendet werden".
Beispiel für das Warten in der 8000-Version
$ ruby -run -e httpd . -p 8000
[2014-03-01 11:03:36] INFO WEBrick 1.3.1
[2014-03-01 11:03:36] INFO ruby 2.0.0 (2013-06-27) [universal.x86_64-darwin13]
[2014-03-01 11:03:36] INFO WEBrick::HTTPServer#start: pid=825 port=8000
localhost - - [01/Mar/2014:11:03:49 JST] "GET /test.html HTTP/1.1" 200 94937
- -> /test.html
Referenz: library un --Ruby Referenz: httpd (Objekt) --APIdock
Im Python-Bereich reichen statische Webseiten nicht aus, und es scheint eine Bibliothek zu geben, die sogar CGI mit einem Liner ausführen kann (Dank an mash76 für die Bereitstellung von Informationen). Obwohl es sich um den Namen der Bibliothek handelt, lautet der Name auch Zubari CGI HTTP Server. Als ich es nachgeschlagen habe, hat es SimpleHTTPServer geerbt und CGI unterstützt. Bereiten Sie dann ein CGI-Skript als vorläufige Vorbereitung vor. Legen Sie das CGI-Skript in cgi-bin im aktuellen Verzeichnis ab. Im folgenden Beispiel wird Python verwendet, es kann jedoch auch in anderen Sprachen ausgeführt werden.
Vorbereitung für CGI
$ mkdir cgi-bin
$ cd cgi-bin
$ cat > index.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
String(hello world.)Anzeigen
'''
print "Content-Type: text/plain"
print
print "hello world."
^D (← Kontrolle+Drücken Sie D)
$ chmod 755 index.py
$ cd ..
$ tree
.
└── cgi-bin
└── index.py
Fangen wir an. Im folgenden Beispiel wird das aktuelle Verzeichnis als Dokumentstamm gestartet. Wenn die Portnummer weggelassen wird, wird Port 8000 verwendet. Sie können es mit Strg + C abschließen, aber seien Sie vorbereitet, da am Ende eine Fehlermeldung angezeigt wird.
Beispiel für das Abhören des Standardports (8000)
$ python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
127.0.0.1 - - [02/Dec/2015 12:53:38] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [02/Dec/2015 12:53:39] code 404, message File not found
127.0.0.1 - - [02/Dec/2015 12:53:39] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [02/Dec/2015 12:53:47] "GET /cgi-bin/index.py HTTP/1.1" 200 -
Gehen Sie wie folgt vor, um die Portnummer anzugeben.
Beispiel für das Abhören von Port 9000
$python -m CGIHTTPServer 9000
Ich habe Informationen erhalten, dass Perl auch einen einzeiligen Webserver hat (Dank an xtetuji für die Bereitstellung der Informationen). Persönlich habe ich Perl nicht sehr oft verwendet, daher möchte ich es anhand der Installationsmethode beschreiben.
cpan-Einstellungen und Plack-Installation
$ cpan
(Es ist ziemlich lang. Mir werden einige Fragen zum Installationsziel gestellt, geben Sie es also richtig ein. Ich drückte die Eingabetaste, da alle Standardeinstellungen in Ordnung waren. Fragen Sie abschließend, ob ich die Umgebungsvariablen im Startskript festlegen kann. Es wird sein.)
$ sudo cpan Task::Plack
(Dies ist auch ziemlich lang. Laden Sie die erforderlichen Module usw. herunter. Nach dem Warten werden Sie gefragt, ob die Standardinstallation in Ordnung ist. Bitte antworten Sie entsprechend. Ich habe Y gewählt. Außerdem zuerst sudo Wenn Sie es ohne ausführen, wird die Berechtigung verweigert angezeigt, sodass sudo hinzugefügt wird.)
Lassen Sie es uns jetzt so ausführen, dass es Port 5000 überwacht. Die Befehlszeile ist etwas lang, aber Sie können den Dokumentstamm leicht ändern.
Starten eines einzeiligen Webservers mit Perl
$ plackup -MPlack::App::Directory -e 'Plack::App::Directory->new({root=>$ENV{PWD}})->to_app'
HTTP::Server::PSGI: Accepting connections at http://0:5000/
127.0.0.1 - - [02/Dec/2015:14:01:01 +0900] "GET / HTTP/1.1" 200 31580 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36"
127.0.0.1 - - [02/Dec/2015:14:01:02 +0900] "GET /favicon.ico HTTP/1.1" 404 9 "http://localhost:5000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36"
Referenz: Einführung in Plack: Bis Sie den Webserver in Plack und Hallo Welt starten
Es scheint, dass node.js auch einen einzeiligen Webserver hat. Also werde ich http-Server vorstellen. Es wird davon ausgegangen, dass node.js installiert wurde. Installieren Sie zuerst den http-Server.
Globales Installationsbeispiel
$ npm install -g http-server
Das Dokumentstammverzeichnis ist das aktuelle Verzeichnis, wenn kein öffentliches Verzeichnis vorhanden ist. Angenommen, die Verzeichnisstruktur ist wie folgt.
Beispiel für die Verzeichniskonfiguration
.
└── public
└── index.html
Beginnen Sie mit der Verwendung des Standardports (8080) aus dem Verzeichnis, das dem obigen "." Entspricht.
Beispiel für das Abhören von Port 8080
$ http-server
Starting up http-server, serving ./public
Available on:
http:127.0.0.1:8080
http:192.168.0.1:8080 (← Stand by otherhost)
Hit CTRL-C to stop the server
[Wed, 02 Dec 2015 04:10:35 GMT] "GET /" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36"
Verwenden Sie die Option `` `-p```, um die Portnummer zu ändern.
Beispiel für das Abhören von Port 8000
$ http-server -p 8000
Starting up http-server, serving ./public
Available on:
http:127.0.0.1:8000
http:192/168/0.1:8000
Hit CTRL-C to stop the server
Zusätzlich hat http-server die Option `` `-o```, um den Webbrowser gleichzeitig mit dem Start zu öffnen. Wenn Sie Folgendes ausführen, wird der Webbrowser automatisch geöffnet. (Wenn der Webbrowser bereits ausgeführt wird, wird die entsprechende Seite in einem neuen Tab geöffnet: für Chrome)
Beispiel für das gleichzeitige Öffnen eines Browsers
$ http-server -p 8000 -o
Starting up http-server, serving ./public
Available on:
http:127.0.0.1:8000
http:172.16.11.3:8000
Hit CTRL-C to stop the server
[Wed, 02 Dec 2015 05:10:59 GMT] "GET /" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36"
[Wed, 02 Dec 2015 05:11:00 GMT] "GET /favicon.ico" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36"
[Wed, 02 Dec 2015 05:11:00 GMT] "GET /favicon.ico" Error (404): "Not found"
http-server scheint HTTPS unter Verwendung des vorhandenen privaten Schlüssels und Zertifikats zu unterstützen. Informationen zum Erstellen von Zertifikaten finden Sie unter HTTPS mit Ruby (WEBRick). Das folgende Beispiel zeigt das Abhören durch HTTPS durch Angabe des privaten Schlüssels und des Zertifikats.
Beispiel für das Abhören über HTTP an Port 8000
$ http-server -p 8000 -S -C localhost.crt -K localhost.key
Starting up http-server, serving ./public through https
Available on:
https://127.0.0.1:8000
https://192.168.1.3:8000
Hit CTRL-C to stop the server
Referenz 1: Der Befehlszeilen-Webserver mit dem Namen http-server von Node.js ist praktisch Referenz 2: http-Server
Im obigen Beispiel wurde der http-Server global installiert. In einigen Fällen möchten Sie ihn jedoch möglicherweise lokal installieren. Für diese Leute möchte ich auch die lokale Installation erklären. Die lokale Installation belastet die Umgebung nicht, da die Module unter node_modules im aktuellen Verzeichnis installiert werden. Lassen Sie es uns jetzt installieren.
http-Installieren Sie den Server lokal
$ npm install http-server
[email protected] node_modules/http-server
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected])
└── [email protected] ([email protected], [email protected])
$
Als nächstes wird der Webserver gestartet. Ich versuche Port 8000 zu verwenden.
http-Server starten
$ ./node_modules/.bin/http-server -p 8000
Starting up http-server, serving ./
Available on:
http:127.0.0.1:8000
http:192.168.0.1:8000
Hit CTRL-C to stop the server
Wenn der Befehl lang ist, verwenden Sie bitte `npm bin``` zusammen (Dank an kaminaly). Der Vorteil von
`npm bin``` ist, dass es auch dann ordnungsgemäß ausgeführt werden kann, wenn es in einem Unterverzeichnis versteckt ist. Im folgenden Beispiel wird es ausgeführt, nachdem das aktuelle Verzeichnis veröffentlicht wurde.
http mit npm Befehl-Server starten
$CD öffentlich (← auch wenn Sie CD öffentlich machen ...)
$ $(npm bin)/http-server -p 8000 (← kann ausgeführt werden. * Ursprünglich nur in dieser Zeile ausgeführt)
Starting up http-server, serving ./
Available on:
http:127.0.0.1:8000
http:192.168.0.1:8000
Hit CTRL-C to stop the server
Wenn Sie einen langen Startbefehl haben, erstellen Sie die folgende Datei und versuchen Sie, npm zu verwenden. Wenn Sie die Portnummer ändern möchten, ändern Sie den Wert nach -p in der 6. Zeile.
package.json
{
"name": "web",
"version": "1.0.0",
"description": "Einfacher Webserver",
"scripts": {
"start": "http-server -p 8000"
},
"author": "suda",
"license": "ISC",
"dependencies": {
"http-server": "^0.8.5"
}
}
Installieren Sie den http-Server mit npm. Geben Sie den folgenden Befehl in das Verzeichnis ein, in dem sich package.json befindet.
package.Installieren Sie die Module gemäß json
$ npm install
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No README data
[email protected] node_modules/http-server
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])
$
Starten Sie als Nächstes den Webserver mit npm. Das Element "start" von "script" in package.json wird ausgeführt. Es wird automatisch mit dem Pfad zu ~~ ./node_modules/
$ npm start
> [email protected] start /home/suda
> http-server -p 8000
Starting up http-server, serving ./public
Available on:
http:127.0.0.1:8000
http:192.168.0.1:8000
Hit CTRL-C to stop the server
Das Erstellen von package.json und das Verwalten mit npm scheint etwas übertrieben, hat aber den Vorteil, dass es verwendet werden kann, ohne die Umgebung zu zerstören, und es ist gut für Anfänger, da es schwer zu merken ist.
Mir wurde gesagt, dass es ein Modul gibt, das dem http-Server ähnelt (danke an kaminaly), also werde ich es sofort versuchen. Hier wird nur die globale Installation erläutert, aber auch die lokale Installation und die lokale Installation von package.json sind möglich. Nachtrag: Hinzugefügt und geändert gemäß der neuesten Version von Serve (Version 6.5.5 vom 18. April 2018).
Globales Installationsbeispiel
$ npm install -g serve
Verwenden Sie als Nächstes den Standardport (~~ 3000 ~~ 5000) mit dem aktuellen Verzeichnis als Dokumentstamm.
Beispiel für das Abhören von Port 5000
$ serve
┌─────────────────────────────────────────────────┐
│ │
│ Serving! │
│ │
│ - Local: http://localhost:5000 │
│ - On Your Network: http://192.168.1.3:5000 │
│ │
│ Copied local address to clipboard! │
│ │
└─────────────────────────────────────────────────┘
Verwenden Sie die Option `` `-p```, um die Portnummer zu ändern.
Beispiel für das Abhören von Port 8000
$ serve -p 8000
┌─────────────────────────────────────────────────┐
│ │
│ Serving! │
│ │
│ - Local: http://localhost:8000 │
│ - On Your Network: http://192.168.1.3:8000 │
│ │
│ Copied local address to clipboard! │
│ │
└─────────────────────────────────────────────────┘
Es war auch möglich, die Passwortauthentifizierung anzuwenden. Im folgenden Beispiel lautet der Benutzername "suda" und das Kennwort "suda1234", und die Site wird als authentifizierte Site festgelegt. Stellen Sie den Benutzernamen usw. mit Umgebungsvariablen anstelle von Optionen ein.
Beispiel für das Hinzufügen einer Kennwortauthentifizierung
$ SERVE_USER=suda SERVE_PASSWORD=suda1234 serve --ah
th
┌─────────────────────────────────────────────────┐
│ │
│ Serving! │
│ │
│ - Local: http://localhost:5000 │
│ - On Your Network: http://192.168.1.3:5000 │
│ │
│ Copied local address to clipboard! │
│ │
└─────────────────────────────────────────────────┘
Referenz: dienen
In node.js wurde mir gesagt, dass es ein anderes Modul namens light-server als http-server and serve gibt (danke an hatappo), also werde ich dies auch versuchen. Hier wird nur die globale Installation erläutert, aber auch die lokale Installation und die lokale Installation von package.json sind möglich. (Entschuldigung, ich habe es aus Zeitmangel nicht ausprobiert)
Globales Installationsbeispiel
$ npm install -g light-server
Beginnen Sie als Nächstes mit der Verwendung des Standardports (4000) mit dem aktuellen Verzeichnis als Dokumentstamm.
Beispiel für das Abhören von Port 4000
$ light-server -s .
light-server is listening at http://0.0.0.0:4000
serving static dir: .
GET /index.html 200 29.438 ms - -
Verwenden Sie die Option `` `-p```, um die Portnummer zu ändern.
Beispiel für das Abhören von Port 8000
$ light-server -s . -p 8000
light-server is listening at http://0.0.0.0:8000
serving static dir: .
Das Interessante an Light-Server ist, dass Sie Dateiänderungen beobachten und Maßnahmen ergreifen können, wenn Änderungen vorgenommen werden. Im folgenden Beispiel werden die js-Datei und die index.html unter dem aktuellen Verzeichnis überwacht. Wenn sich etwas ändert, wird `npm run build
`ausgeführt und die Datei neu geladen. (Ich habe das Beispiel im Kommentar von hatappo verwendet. Vielen Dank für Ihre Geduld.)
JS-Datei und Index.Beispiel für die Überwachung von HTML
$ light-server -s -w "**/*.js, index.html # npm run build # reload"
Die Zeichenfolgen nach der Option -w werden durch # getrennt und von Anfang an "überwachte Dateien", "Inhalte, die beim Ändern ausgeführt werden sollen", "ob neu geladen werden soll oder nicht" ``. Weitere Informationen finden Sie in der Referenz-URL.
** Empfohlen **: Als ich mir die README-Datei des offiziellen Repositorys ansah, stellte ich fest, dass sie HTTP2 unterstützt (unterstützt automatisch HTTPS). Im folgenden Beispiel wird das Zertifikat automatisch generiert und überwacht dann den 4000-Versionsport. Stellen Sie sicher, dass Sie über HTTPS zugreifen, da Sie nicht über HTTP zugreifen können.
Beispiel für das Abhören mit HTTP2 am Port der 4000er-Version
$ light-server -s . --http2
light-server is listening at https://0.0.0.0:4000
serving static dir: .
Referenz: Lichtserver
Der Befehl nc ist ein Tool zum Senden und Empfangen von Daten über die Befehlszeile mit TCP und UDP. Mit diesem Befehl ist es möglich, einen einfachen Webserver einzurichten (ich wusste es zum ersten Mal, nachdem ich den Kommentar von tukiyo3 gesehen hatte, als ich das sagte. Vielen Dank für den Hinweis).
Zuallererst ist es eine Ausführungsmethode, wenn die Zeichenfolge angegeben wird, die in einem Liner beantwortet werden soll. Wenn Sie die zu beantwortende Zeichenfolge ändern möchten, ändern Sie sie nach \ n \ n. Das folgende Beispiel gibt "Hallo" zurück.
Beispiel für das Abhören von Port 8000
$ while :; do { echo -e 'HTTP/1.1 200 OK\n\nhello'; } | nc -l 8000; done
Wenn Sie den Inhalt der Datei beantworten möchten, führen Sie bitte die folgenden Schritte aus. Das folgende Beispiel gibt den Inhalt von index.html zurück.
Bei Angabe der zu antwortenden Datei
$ while :; do { echo -e 'HTTP/1.1 200 OK\n\n'; cat index.html; } | nc -l 8000; done
Laut Referenz 1 war es nicht möglich, mit Strg + C zu stoppen, aber als ich es auf meinem MacOS X-Bash ausführte, konnte ich es stoppen (aus irgendeinem Grund konnte ich es nicht stoppen, wenn ich es auf zsh ausführte). Wenn Sie sicherstellen möchten, dass es stoppt, lesen Sie denselben Artikel.
Referenz 1: Einfacher HTTP-Server mit dem Befehl nc Referenz 2: Wenn Sie einen einfachen Webserver sofort starten möchten
Recommended Posts