WEBrick

Webrick
Originalautor (en) Masayoshi Takahashi und Yuuzou Gotou
Entwickler (en) Ruby Community
Stabile Version
1.7.0[1] / 11. Dezember 2020; Vor 19 Monaten
Repository
Geschrieben in Rubin
Betriebssystem Plattformübergreifend
Verfügbar in Rubin
Typ Webserver
Lizenz 2-Klausel BSD-Lizenz
Webseite www.Ruby-Lang.org/en/

Webrick ist ein Rubin Bibliothek liefert einfach Http Webserver. Webrick wurde hauptsächlich von Masayoshi Takahashi geschrieben[2][3] und Yuuzou gotou,[2][3] mit Beiträgen von anderen Entwicklern über die Open-Source-Modell der Softwareentwicklung. Es verwendet Grundlegende Zugriffsauthentifizierung und Zugriffsauthentifizierung verdau für verschiedene Arten von Server dass es erstellen kann - Http basierter Server, Https Server, Proxy Server und Virtual-Host-Server.[4] Konstruktion mehrerer Nicht-HTTP-Server wie dem Tageszeitserver, der das verwendet Tagesprotokoll Anstelle des HTTP wird auch von Webrick erleichtert. Es wird von der verwendet Rubin auf Schienen und Padrino Frameworks zum Testen von Anwendungen in a Entwicklungsumgebung ebenso gut wie Produktion Modus für kleine Lasten. Es ist jetzt Teil der Ruby Standard Library.[2]

Geschichte

Webebrick stammt aus einer Idee in einem Artikel mit dem Namen "Internet Programming with Ruby" in Open Design, einem japanischen Ingenieurmagazin. Es wurde zunächst als Toolkit für die Entwicklung von HTTP -Servern mit Ruby entwickelt. Aufgrund der Natur von Open Source -Modell und Beiträge mehrerer Ruby -Entwickler auf der ganzen Welt, Webrick, wurde stark erweitert und schließlich als Standardbibliothek von Ruby 1.8.0 gebündelt.[3] Der Webrick Erb -Handler und der Webrick -Proxy -Server wurden erstmals in Ruby 1.9.3 eingeführt, während der Webrick Virtual Host von Ruby 2.0.0 aufgenommen wurde.

Verwendungszweck

Ein Webrick -Server versteht nur die Sprache von Servlets. Es verwendet mehrere unabhängige Servlets, die vom Programmierer zusammengefügt wurden, zum Handling CGI Skripte, ERB Seiten, Rubinblöcke und Verzeichnisauflistungen, um eine Webanwendung bereitzustellen oder eine Anfrage zu bedienen Uri auf einer Basis von pro-Host oder pro Pfad. Zum Beispiel, HttpServlet :: FileHandler,[3] HttpServlet :: Prochandler,[3] HttpServlet :: cgihandler,[3] HttpServlet :: erbhandler[3] sind die Beispiele der Standard -Servlets, mit denen Webrick kommt.

Webrick ist in Ruby enthalten und ist dem Benutzer daher ohne zusätzliche Kosten zur Verfügung. Webrick wurde vollständig in Ruby geschrieben und unterstützt mehrere Standards wie HTTP, Html und sogar Rhtml. Während der Entwicklungsphase besteht keine Notwendigkeit für die Installation eines diskreten Webservers, da Webrick bereits in das Rails -Framework eingebaut ist. Es ist der Standard -Webserver, wenn die Ruby -Anwendung ohne welche bereitgestellt wird Procfile auf Schienen. Darüber hinaus können direkte Anrufe von Webrick bis zur Rails -Anwendung getroffen werden, da sie vollständig in Ruby implementiert wurden. Insgesamt bietet es eine zuverlässige, niedrige Konfigurationsoption für das Testen in der Entwicklung.

Server instanziieren

Instanziierung eines HTTP -Servers

Die folgenden Befehle werden verwendet, um einen HTTP -Server am erforderlichen Port zu starten.[2]

# Die Webrick -Klasse mit Anforderung einschließen benötigen "Webebrick" # FileHandler Servlet bietet die Möglichkeit, aus dem Benutzer auszuwählen, welche Dateien vom Benutzer zu dienen sollen # Der folgende Code zeigt, wie man sie aus dem Ordner 'MyApp' serviert Wurzel = Datei.expon_path '/var/myapp/' # Instantierungen eines neuen Servers mit httpServer.new auf Port 1234 Servieren Sie die Dokumente aus dem Root -Ordner Server = Webrick::Httpserver.Neu :Hafen => 1234, :Dokument Root => Wurzel # Der folgende Proc wird verwendet, um die Servervorgänge anzupassen Server.Mount_proc '/' tun |Anfrage, Antwort|  Antwort.Karosserie = 'Hallo Welt!' Ende # Der folgende Befehl liefert einen Haken, um den Server abzuschalten (häufig mit Strg+C). fangen('Int') {Server.stilllegen} # Starten Sie den Server Server.Anfang 

Servlets können montiert werden, um ein fortschrittliches benutzerdefiniertes Verhalten im Vergleich zu einem Proc zu bieten.[5] um die zu erhöhen Modularität.

Einen virtuellen Host starten

Webebrick schafft einen Höranschluss. Verschiedene andere Ports als "virtuelle Hosts" können ebenfalls gleichzeitig erstellt werden, die nicht wie unten gezeigt zuhören:[2]

#Einen virtuellen Host schafft, der nicht zuhört Vhost = Webrick::Httpserver.Neu :Servername => 'vhost.example',  :Hör nicht zu => Stimmt, # ... # Montage des oben erstellten virtuellen Hosts, ähnlich wie der HTTP -Server montiert wurde Vhost.montieren '/', ... # Dieser Host fungiert nun als virtueller Host, wenn er an den Hörserver -Host montiert ist Server.virtual_host Vhost 

: DocumentRoot sollte bereitgestellt werden oder eine Instanz eines Servlets sollte so eingerichtet werden Uri; sonst a 404 Fehler Wird zurückgegeben.

Instanziierung eines HTTPS -Servers

Durch nur Aktivieren SSL und Bereitstellung eines SSL -Zertifikatsnamens, ein HTTPS -Server kann mit a initiiert werden selbstsigniertes Zertifikat Das ändert sich mit jedem Neustart des Servers.[2]

# Zusätzlich zu Webebrick benötigen wir auch Webrick/HTTPS für SSL -Funktionen benötigen "Webebrick" benötigen 'Webrick/https' # Zertifikatenname bereitstellen. Dies wird jedoch ein selbst erzeugter selbstsignierter Zertifikat sein cert_name = [%W [CN localhost],] # Aktivieren von SSL und Bereitstellung des Zertifikatsnamens wird den HTTPS -Server instanziiert Server = Webrick::Httpserver.Neu(:Hafen => 1234,  : Sslenable => Stimmt,  : SSLCertName => cert_name) 

Ein vorbestimmter Schlüssel und Zertifikat kann jedoch auch zum Instanziieren des HTTPS-Servers vorgelegt werden, wie unten gezeigt:

# Zusätzlich zu den oben genannten zwei benötigen wir OpenSSL, um SSL -Zertifikate und -tasten zu lesen benötigen 'OpenSSL' # Lesen Sie das gespeicherte Zertifikat und seinen Signaturschlüssel aus dem lokalen Verzeichnis Zertifikat = OpenSSL::X509::Zertifikat.Neu Datei.lesen '/var/myapp/cert.pem' Pkey = OpenSSL::Pkey::RSA.Neu Datei.lesen '/var/myapp/pkey.pem' # Übergeben Sie das Zertifikat und den Schlüssel als separate Parameter, während Sie mit httpserver.new instanziiert Server = Webrick::Httpserver.Neu(:Hafen => 1234,  : Sslenable => Stimmt,  : SSLCertificate => Zertifikat,  : SSLPrivateKey => Pkey) 

Starten eines Proxy -Servers

Webebrick kann auch stellvertretende Get, Kopf und Post Anfragen:[2]

# Instantierungen eines Proxy -Servers ist ähnlich, außer dass er von httpproxyserver servlet behandelt wird benötigen "Webrick/httpproxy" Proxy = Webrick::HttpproxyServer.Neu :Hafen => 1234 # Bereitstellung des Hakens aus dem aktuellen Thread fangen 'Int' tun Proxy.stilllegen Ende 

Einschränkungen

Im Gegensatz zu den meisten Servern, die in der Produktion verwendet werden, ist Webrick nicht skalierbar, da es standardmäßig ein einzelner Webserver mit Thread -Websäuren ist.[6] Daher können mehrere Anfragen gleichzeitig nicht behandelt werden, und die nachfolgenden Anfragen müssten warten, bis alle vorherigen Anfragen behandelt wurden, was zu einer großen Verzögerung führte.Daher bevorzugen Entwickler andere Multi-Threaded vollwertige Webserver mögen LightTpd und Mischling für den Einsatz ihrer Schienen Anwendungen.[7]

Siehe auch

Verweise

  1. ^ "Release 1.7.0". 11. Dezember 2020. Abgerufen 18. Dezember 2020.
  2. ^ a b c d e f g "Modul: Webrick (Ruby 2.3.1)". Ruby-doc.org. Abgerufen 2016-09-22.
  3. ^ a b c d e f g Gnomes Leitfaden zu Webrick
  4. ^ Untersuchung der Auswirkungen von Webservern auf die Nutzung von Webanwendungen - IEEE
  5. ^ Proc
  6. ^ Heroku Ruby Standard -Webserver
  7. ^ Netbeans Ruby und Rails IDE mit Jruby (Firstpress) Von Chris Kutler, Brian Leonard

Externe Links