例: Hugo、Zola、Jekyll、Hexoなどの静的サイトジェネレーターが作成したWebサイトをホストしています。
fast_mem_cacheを有効にして)のディスクI/O操作の最小化とメモリからの静的ファイルの提供により、Binserveのパフォーマンスが達成されます。クライアント側では、 Cache-Control 、 Etag 、およびLast-Modifiedが利用されています。生産を困らせたり、サーバーにトラフィックの高いことを期待している場合は、 DDOS保護、レートの制限、および上記のすべての機能を組み込んだすべての機能とともに監視するためのPrometheusメトリックを備えたBinserve+を取得します。
Checkout Binserve Plus!
詳細については、 FAQをお読みください。
リリースからOSの実行可能ファイルをダウンロードしてから、実行するだけです。
mkdir mywebsite/
binserve最初の実行では、構成ファイルとスターターボイラープレートを作成して、開始します。
_ _
| |_|_|___ ___ ___ ___ _ _ ___
| . | | |_ -| -_| _| | | -_|
|___|_|_|_|___|___|_| _/|___| 0.2.0
[INFO] Build finished in 295 μs ⚡
[SUCCESS] Your server is up and running at 127.0.0.1:1337
http://127.0.0.0:1337/にアクセスすると、Binserveのインデックスページが迎えられます。
これで、 binserve.jsonファイルを編集することだけです。 (構成を参照)。
リリースから実行可能ファイルをダウンロードするか、 cargoでインストールします。
cargo install --git https://github.com/mufeedvh/binserve.gitさび/貨物を設置します
前提条件:
git clone https://github.com/mufeedvh/binserve.git
cd binserve/
RUSTFLAGS= " -C target-cpu=native " cargo build --release最初のコマンドはこのリポジトリをローカルマシンにクロームし、最後の2つのコマンドがディレクトリに入り、リリースモードでソースを構築します。
構成ファイルは、実行可能ファイルによって自動的に生成されるbinserve.jsonと呼ばれるJSONファイルです。構成フィールドは自明であるため、Binserveの構成は非常に簡単です。
そして、ここのすべての値には安全なデフォルトがあるため、必要のないものを指定する必要はありません。
ヒント:おそらく、すべての構成フィールドを必要としないでしょう。単一のディレクトリの提供方法に関する静的サイトジェネレーターの例をチェックアウトします。
{
"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! "
}
}コマンドライン引数で構成をオーバーライドすることもできます。
-c/--certドメインのTLS証明書へのパス。-k/--key - ドメインのTLSキーへのパス。-h/--host - Webサーバーが実行するための指定されたポートを備えたホスト/ドメイン。--host 127.0.0.1:1337または--host zombo.com TLSのサポートが組み込まれています:
{
"server" : {
"host" : " 127.0.0.1:1337 " ,
"tls" : {
"host" : " 127.0.0.1:443 " ,
"enable" : true ,
"key" : " key.pem " ,
"cert" : " cert.pem "
}
}
}キーと証明書は、 opensslで生成できます。
# 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は、シンプルで最も一般的に知られているテンプレートエンジンであるため、テンプレートにハンドルバーを使用します。
このような部分的なテンプレートとテンプレート変数を構成ファイルに登録できます。
"template" : {
"partials" : {
"header" : " public/header.hbs "
},
"variables" : {
"app_name" : " Binserve "
}
}public/header.hbs :
そして、このようにそれを使用します:
これは次のようにします。
すべての静的ジェネレーターは、通常はpublic/名前が付けられたマークダウン/テンプレートファイルをディレクトリに構築します。
{
"server" : {
"host" : " 127.0.0.1:1337 " ,
"tls" : {
"host" : " 127.0.0.1:443 " ,
"enable" : false ,
"key" : " key.pem " ,
"cert" : " cert.pem "
}
},
"routes" : {
"/" : " public/ "
}
}それでおしまい!
前述のように、すべてのフィールドを指定する必要はありません。セキュアデフォルトが適用されます! ?
RoutesとしてのPointing Directorisは、複数の静的サイトジェネレーター出力を簡単にホストできるように、意図的な設計です。ホームページとしてポートフォリオがあり、ブログが別のテンプレートで作成されているとしましょう。あなたはただできる:
"routes" : {
"/" : " my_zola_portfolio/public/ " ,
"/blog" : " my_hugo_blog/public/ "
}Binserveはクロスプラットフォームです。つまり、主要なオペレーティングシステム /デバイスで実行できます。 CPUの使用法とメモリフットプリントは低いため、 Raspberry PiまたはAndroid電話で実行できます。
fast_mem_cacheが有効になっているため、すべてのファイルは、初期化時にルートインデックスと応答にマッピングされたインメモリ内で保存され、実行時にはディスク読み取りを実行しません。数百のファイルがある場合でも、有効にしておくことをお勧めします。Binserveは、ディスクから読み取られる大きなファイルを自動的にソートします。大規模なメディアコンテンツをたくさん提供している場合にのみ、このモードを無効にする必要があります。
ボンネットの下で、Binserveはルートをマッピングし、ファイルのコンテンツ、 mimeタイプ、 metadata 、および必要なフィールドで応答を準備して、事前にEtagおよびLast-Modifiedタグを導出し、実行時にこれらの操作を実行しません。これらのファイルのいずれかを変更すると、Hot Reloadは、キャッシュを管理する同時ハッシュマップを変更することにより、プログラム状態を更新するバックグラウンドスレッドで実行されます。
benchmarks.mdを参照してください
Q: Binserve+とは何ですか?
Binserve+は、生産で実行され、大量のトラフィックを処理することを目的としたWebサイト向けに作成されています。 DDOS保護、レートの制限、およびプロメテウスメトリックがすぐに含まれています。
Lifetimeライセンス + Lifetime Bugの修正は、1回1回$ 24で取得されます。
これは、プロジェクトをサポートする方法として存在します。ライセンスキーや検証システムはありません。ZIPアーカイブの主要なオペレーティングシステムとアーキテクチャの事前コンパイルされた実行可能ファイルを取得します。 (MITライセンス)
Binserve+を取得します。
貢献する方法:
MITライセンスに基づいてライセンスを取得してください。詳細については、ライセンスを参照してください。
これらの驚くべきプロジェクトなしでは、ビンセルブは存在しません。
CompactStringストリングとして保存されます。ありがとう! ❤❤️