Exemple: hébergement d'un site Web produit par des générateurs de sites statiques comme Hugo, Zola, Jekyll, Hexo, etc.
fast_mem_cache activé) et servant des fichiers statiques à partir de la mémoire. Sur le côté client, Cache-Control , Etag et Last-Modified sont utilisés.Si vous vous déposez de la production ou attendez un trafic élevé vers votre serveur, obtenez Binserve + qui a une protection DDOS , une limitation des taux et des métriques Prometheus pour la surveillance avec toutes les fonctionnalités ci-dessus intégrées.
Cachine à cocher Binserve Plus!
Lisez la FAQ pour plus de détails.
Téléchargez l'exécutable pour votre système d'exploitation à partir des versions , puis exécutez-la:
mkdir mywebsite/
binserveLors de la première exécution, il créera le fichier de configuration et une buissier de démarrage pour commencer.
_ _
| |_|_|___ ___ ___ ___ _ _ ___
| . | | |_ -| -_| _| | | -_|
|___|_|_|_|___|___|_| _/|___| 0.2.0
[INFO] Build finished in 295 μs ⚡
[SUCCESS] Your server is up and running at 127.0.0.1:1337
Accédez à http://127.0.0.0:1337/ et vous serez accueilli avec la page d'index du binaire.
Maintenant, tout ce que vous avez à faire est de modifier le fichier binserve.json . (Voir configuration ).
Téléchargez l'exécutable à partir des versions ou installez avec cargo :
cargo install --git https://github.com/mufeedvh/binserve.gitInstaller Rust / Cargo
Prérequis:
git clone https://github.com/mufeedvh/binserve.git
cd binserve/
RUSTFLAGS= " -C target-cpu=native " cargo build --releaseLa première commande clones ce référentiel dans votre machine locale et les deux dernières commandes entre dans le répertoire et construit la source en mode de libération.
Le fichier de configuration est un fichier JSON appelé binserve.json généré automatiquement par l'exécutable. La configuration du binaire est assez simple car les champs de configuration sont explicites:
Et toutes les valeurs ici ont des valeurs par défaut sécurisées, vous n'avez donc pas à spécifier celles dont vous n'avez pas besoin.
Astuce : très probablement, vous n'auriez pas besoin de tous les champs de configuration, consultez l'exemple de générateur de site statique sur la façon de servir un seul répertoire.
{
"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! "
}
}Vous pouvez également remplacer la configuration avec des arguments en ligne de commande:
-c/--cert - Le chemin du certificat TLS pour votre domaine.-k/--key - le chemin d'accès à la touche TLS pour votre domaine.-h/--host - L'hôte / domaine avec le port spécifié pour que votre serveur Web puisse fonctionner.--host 127.0.0.1:1337 ou --host zombo.com Il y a une prise en charge intégrée pour TLS:
{
"server" : {
"host" : " 127.0.0.1:1337 " ,
"tls" : {
"host" : " 127.0.0.1:443 " ,
"enable" : true ,
"key" : " key.pem " ,
"cert" : " cert.pem "
}
}
} La clé et le certificat peuvent être générés avec 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 utilise le guidon pour les modèles car il est simple et le moteur de modèles les plus connu.
Vous pouvez enregistrer des modèles partiels et des variables de modèle comme celle-ci dans le fichier de configuration:
"template" : {
"partials" : {
"header" : " public/header.hbs "
},
"variables" : {
"app_name" : " Binserve "
}
}public / en-tête.hbs :
Et utilisez-le comme ceci:
Qui rendrait à:
Chaque générateur statique construit vos fichiers de marque / modèle dans un répertoire, généralement nommé public/ , tout ce que vous avez à faire est de pointer ce répertoire comme route d'index:
{
"server" : {
"host" : " 127.0.0.1:1337 " ,
"tls" : {
"host" : " 127.0.0.1:443 " ,
"enable" : false ,
"key" : " key.pem " ,
"cert" : " cert.pem "
}
},
"routes" : {
"/" : " public/ "
}
}C'est ça!
Comme mentionné précédemment, vous n'avez pas à spécifier tous les champs, les défaillances sécurisées seront appliquées! ?
Pointer les répertoires en tant que routes est une conception intentionnelle afin que vous puissiez héberger facilement les sorties de générateur de sites statiques facilement. Disons que vous avez un portefeuille car la page d'accueil et que votre blog est fait avec un modèle différent. Vous pouvez simplement faire:
"routes" : {
"/" : " my_zola_portfolio/public/ " ,
"/blog" : " my_hugo_blog/public/ "
}Binserve est multiplateforme, ce qui signifie que vous pouvez l'exécuter sur n'importe quel système d'exploitation / appareils de fonctionnement majeur. Il est faible sur l'utilisation du processeur et l'empreinte mémoire afin que vous puissiez l'exécuter sur votre Raspberry Pi ou même votre téléphone Android :
Avec fast_mem_cache activé, tous les fichiers sont stockés en mémoire mappés sur son index de route et sa réponse sur l'initialisation et n'effectueront aucune lecture de disque au moment de l'exécution. Il est recommandé de le garder activé même si vous avez des centaines de fichiers, Binserve trie automatiquement les fichiers grands à lire à partir du disque. Ce n'est que lorsque vous servez beaucoup de contenu multimédia important que vous devez désactiver ce mode.
Sous le capot, Binserve mappe les itinéraires et prépare la réponse avec le contenu du fichier, le type mime , metadata et les champs requis pour dériver les balises Etag et Last-Modified au préalable et n'effectueront aucune de ces opérations au moment de l'exécution. Lors des modifications de l'un de ces fichiers, Hot Rechargement est exécuté dans un thread d'arrière-plan qui met à jour l'état du programme en apportant des modifications à la hashmap simultanée qui gère le cache, les modifications sont instantanées et ne provoqueraient pas non plus de temps d'arrêt.
Voir Benchmarks.md
Q: Qu'est-ce que le binaire +?
Binserve + est conçu pour les sites Web destinés à fonctionner dans la production et à gérer des quantités élevées de trafic. Il est livré avec la protection DDOS, la limitation des taux et les métriques PROMÉTHEUS prêtes à l'emploi.
Vous obtenez une licence à vie + des corrections de bogues à vie pour 24 $ / une fois.
Cela existe comme un moyen de soutenir le projet, il n'a pas de clés de licence ou de système de vérification, vous obtenez des exécutables pré-compilés pour les principaux systèmes d'exploitation et architectures dans une archive zip. (Licence MIT)
Obtenez un bindeserve +.
Façons de contribuer:
Licencié en vertu de la licence du MIT, voir Licence pour plus d'informations.
Binserve n'existerait pas sans ces projets incroyables:
CompactString s.Merci! ❤️