Beispiel: Hosting einer Website von statischen Site -Generatoren wie Hugo, Zola, Jekyll, Hexo usw.
fast_mem_cache ) und dem Servieren statischer Dateien aus dem Speicher erzielt. Auf der Client-Seite werden Cache-Control , Etag und Last-Modified verwendet.Wenn Sie die Produktion oder einen hohen Verkehr auf Ihren Server erwarten, erhalten Sie Binserse+, das DDOS-Schutz- , Rate-Limiting- und Prometheus-Metriken für die Überwachung sowie alle oben genannten Funktionen aufgebaut hat.
Checkout Binserve Plus!
Lesen Sie FAQ für weitere Details.
Laden Sie die ausführbare Datei für Ihr Betriebssystem von Veröffentlichungen herunter und führen Sie sie einfach aus:
mkdir mywebsite/
binserveBeim ersten Lauf wird die Konfigurationsdatei und eine Starter -Boilerplate für Sie erstellt, um loszulegen.
_ _
| |_|_|___ ___ ___ ___ _ _ ___
| . | | |_ -| -_| _| | | -_|
|___|_|_|_|___|___|_| _/|___| 0.2.0
[INFO] Build finished in 295 μs ⚡
[SUCCESS] Your server is up and running at 127.0.0.1:1337
Gehen Sie zu http://127.0.0.0:1337/ und Sie werden mit der Indexseite von Binsere begrüßt.
Jetzt müssen Sie nur noch die binserve.json -Datei bearbeiten. (Siehe Konfiguration ).
Laden Sie die ausführbare Datei von Veröffentlichungen herunter oder installieren Sie sie mit cargo :
cargo install --git https://github.com/mufeedvh/binserve.gitRost/Fracht einbauen
Voraussetzungen:
git clone https://github.com/mufeedvh/binserve.git
cd binserve/
RUSTFLAGS= " -C target-cpu=native " cargo build --releaseDer erste Befehl stiert dieses Repository in Ihre lokale Maschine und die letzten beiden Befehle in das Verzeichnis und erstellt die Quelle im Release -Modus.
Die Konfigurationsdatei ist eine JSON -Datei namens binserve.json , die automatisch von der ausführbaren Datei generiert wird. Das Konfigurieren von Binsere ist ziemlich einfach, da die Konfigurationsfelder selbsterklärend sind:
Und alle Werte hier haben sichere Standardeinstellungen, sodass Sie nicht diejenigen angeben müssen, die Sie nicht benötigen.
TIPP : Höchstwahrscheinlich würden Sie nicht alle Konfigurationsfelder benötigen. Schauen Sie sich das Beispiel für statische Site -Generator zum Servieren eines einzelnen Verzeichnisses an.
{
"server" : {
"host" : " 127.0.0.1:1337 " ,
"tls" : {
"host" : " 127.0.0.1:443 " ,
"enable" : false ,
"key" : " key.pem " ,
"cert" : " cert.pem "
}
},
"routes" : {
"/" : " public/index.html " ,
"/usage" : " public/usage.hbs " ,
"/blog" : " public/blog/ "
},
"static" : {
"directory" : " public/assets " ,
"served_from" : " /assets " ,
"error_pages" : {
"404" : " public/404.html "
}
},
"template" : {
"partials" : {
"header" : " public/header.hbs "
},
"variables" : {
"app_name" : " Binserve "
}
},
"config" : {
"enable_hot_reload" : true ,
"fast_mem_cache" : true ,
"enable_cache_control" : true ,
"enable_directory_listing" : true ,
"minify_html" : false ,
"follow_symlinks" : false ,
"enable_logging" : false
},
"insert_headers" : {
"x-greetings" : " hellooo! "
}
}Sie können die Konfiguration auch mit Befehlszeilenargumenten überschreiben:
-c/--cert -der Pfad zum TLS-Zertifikat für Ihre Domain.-k/--key -Der Pfad zum TLS-Schlüssel für Ihre Domain.-h/--host -Der Host/Domain mit dem angegebenen Port für Ihren Webserver zum Ausführen.--host 127.0.0.1:1337 oder --host zombo.com Es gibt eine integrierte Unterstützung für TLS:
{
"server" : {
"host" : " 127.0.0.1:1337 " ,
"tls" : {
"host" : " 127.0.0.1:443 " ,
"enable" : true ,
"key" : " key.pem " ,
"cert" : " cert.pem "
}
}
} Der Schlüssel und das Zertifikat können mit openssl generiert werden:
# generate pkcs#10 key+cert (PEM):
$ openssl req -x509 -newkey rsa:4096 -keyout key_pkcs10.pem -out cert.pem -sha256 -days 36
# convert the private key to PKCS#8 (PEM):
$ openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in key_pkcs10.pem -out key.pemBinServe verwendet Lenker zum Vorlagen, da es einfach und der am häufigsten bekannte Vorlagenmotor ist.
Sie können teilweise Vorlagen und Vorlagenvariablen wie diese in der Konfigurationsdatei registrieren:
"template" : {
"partials" : {
"header" : " public/header.hbs "
},
"variables" : {
"app_name" : " Binserve "
}
}public/header.hbs :
Und benutze es so:
Was würde sich auf:
Jeder statische Generator erstellt Ihre Markdown-/ Vorlagendateien in ein Verzeichnis, das normalerweise public/ , nur was Sie tun müssen, ist das Verzeichnis als Indexroute:
{
"server" : {
"host" : " 127.0.0.1:1337 " ,
"tls" : {
"host" : " 127.0.0.1:443 " ,
"enable" : false ,
"key" : " key.pem " ,
"cert" : " cert.pem "
}
},
"routes" : {
"/" : " public/ "
}
}Das war's!
Wie bereits erwähnt, müssen Sie nicht alle Felder angeben, sondern sichere Ausfälle werden angewendet! ?
Das Zeigen von Verzeichnissen als Routen ist ein absichtliches Design, damit Sie einfach mehrere statische Site -Generatorausgänge ausgleichen können. Angenommen, Sie haben ein Portfolio als Homepage und Ihr Blog wird mit einer anderen Vorlage gemacht. Sie können einfach:
"routes" : {
"/" : " my_zola_portfolio/public/ " ,
"/blog" : " my_hugo_blog/public/ "
}BinServe ist plattformübergreifend, sodass Sie es auf jedem wichtigen Betriebssystem / Geräten ausführen können. Die CPU -Nutzung und der Speicherpflichtiger sind so gering, dass Sie es auf Ihrem Raspberry Pi oder sogar auf Ihrem Android -Telefon ausführen können:
Wenn fast_mem_cache aktiviert ist, werden alle Dateien in Memory gespeichert, die auf den Routenindex und die Antwort auf die Initialisierung zugeordnet sind und keine Festplattenliese zur Laufzeit durchführen. Es wird empfohlen, es auch dann aktiviert zu halten, wenn Sie Hunderte von Dateien haben. BinServe sortiert automatisch große Dateien, die von der Festplatte gelesen werden sollen. Nur wenn Sie viele große Medieninhalte bedienen, sollten Sie diesen Modus deaktivieren.
Unter der Motorhaube birgt Binserve die Routen und bereitet die Antwort mit dem Inhalt der Datei, mime Typ, metadata und den erforderlichen Feldern vor, um die Etag und Last-Modified Tags vorher abzuleiten, und führt keine dieser Vorgänge zur Laufzeit durch. Bei Änderungen an diesen Dateien wird Hot Reload in einem Hintergrund -Thread ausgeführt, der den Programmstatus aktualisiert, indem Änderungen an der gleichzeitigen HashMap vorgenommen werden, die den Cache verwaltet, Änderungen sofort und keine Ausfallzeiten verursachen.
Siehe Benchmarks.md
F: Was ist BinServe+?
BinServe+ wird für Websites hergestellt, die in der Produktion betrieben und hohe Verkehrsmengen abwickeln sollen. Es kommt mit DDOS-Schutz, Ratenbegrenzung und Prometheus-Metriken außerhalb des Boxs.
Sie erhalten eine lebenslange Lizenz + Lebensdauerfehler für 24 US -Dollar/einmal.
Dies ist ein Weg, um das Projekt zu unterstützen. Es verfügt über keine Lizenzschlüssel- oder Überprüfungssysteme. (MIT -Lizenz)
Holen Sie sich Binserve+.
Möglichkeiten zum Beitrag:
In der MIT -Lizenz lizenziert, siehe Lizenz für weitere Informationen.
Ohne diese erstaunlichen Projekte würde BinServe nicht existieren:
CompactString s gespeichert.Danke schön! ❤️