Exemplo: hospedando um site produzido por geradores de sites estáticos como Hugo, Zola, Jekyll, Hexo, etc.
fast_mem_cache ativado) e servir arquivos estáticos da memória. No lado do cliente, Cache-Control , Etag e Last-Modified são utilizados.Se você está descrevendo a produção ou esperando tráfego alto ao seu servidor, obtenha o Binserve+, que possui proteção de DDoS , limitação de taxa e métricas de Prometheus para monitoramento, juntamente com todos os recursos acima.
Checkout binserve plus!
Leia as perguntas frequentes para obter mais detalhes.
Faça o download do executável para o seu sistema operacional de lançamentos e basta executá -lo:
mkdir mywebsite/
binserveNa primeira execução, ele criará o arquivo de configuração e um boilerplate iniciante para você começar.
_ _
| |_|_|___ ___ ___ ___ _ _ ___
| . | | |_ -| -_| _| | | -_|
|___|_|_|_|___|___|_| _/|___| 0.2.0
[INFO] Build finished in 295 μs ⚡
[SUCCESS] Your server is up and running at 127.0.0.1:1337
Vá para http://127.0.0.0:1337/ e você será recebido com a página de índice de Binserve.
Agora, tudo o que você precisa fazer é editar o arquivo binserve.json . (Consulte Configuração ).
Faça o download do executável de lançamentos ou instale com cargo :
cargo install --git https://github.com/mufeedvh/binserve.gitInstale a ferrugem/carga
Pré -requisitos:
git clone https://github.com/mufeedvh/binserve.git
cd binserve/
RUSTFLAGS= " -C target-cpu=native " cargo build --releaseO primeiro comando clones esse repositório em sua máquina local e os dois últimos comandos entram no diretório e constrói a fonte no modo de liberação.
O arquivo de configuração é um arquivo json chamado binserve.json que é gerado automaticamente pelo executável. A configuração do Binserve é bastante direta porque os campos de configuração são auto-explicativos:
E todos os valores aqui têm padrões seguros para que você não precise especificar os que não precisa.
Dica : provavelmente você não precisaria de todos os campos de configuração, consulte o exemplo do gerador de sites estáticos sobre como servir um único diretório.
{
"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! "
}
}Você também pode substituir a configuração por argumentos da linha de comando:
-c/--cert -O caminho para o certificado TLS para seu domínio.-k/--key -o caminho para a tecla TLS para o seu domínio.-h/--host -O host/domínio com a porta especificada para o seu servidor da web.--host 127.0.0.1:1337 ou --host zombo.com Há suporte interno para TLS:
{
"server" : {
"host" : " 127.0.0.1:1337 " ,
"tls" : {
"host" : " 127.0.0.1:443 " ,
"enable" : true ,
"key" : " key.pem " ,
"cert" : " cert.pem "
}
}
} A chave e o certificado podem ser gerados com 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.pemO Binserve usa guidão para modelar, pois é simples e o motor de modelos mais conhecido.
Você pode registrar modelos parciais e variáveis de modelo como esta no arquivo de configuração:
"template" : {
"partials" : {
"header" : " public/header.hbs "
},
"variables" : {
"app_name" : " Binserve "
}
}public/header.hbs :
E use assim:
O que se renderia para:
Todo gerador estático constrói seus arquivos de marcação/ modelo em um diretório, geralmente chamado public/ , tudo o que você precisa fazer é apontar esse diretório como a rota de índice:
{
"server" : {
"host" : " 127.0.0.1:1337 " ,
"tls" : {
"host" : " 127.0.0.1:443 " ,
"enable" : false ,
"key" : " key.pem " ,
"cert" : " cert.pem "
}
},
"routes" : {
"/" : " public/ "
}
}É isso!
Como mencionado anteriormente, você não precisa especificar todos os campos, os padrões seguros serão aplicados! ?
Apontar os diretórios como rotas é um design intencional para que você possa hospedar várias saídas do gerador de sites estáticos facilmente. Digamos que você tenha um portfólio como a página inicial e seu blog é feito com um modelo diferente. Você pode simplesmente fazer:
"routes" : {
"/" : " my_zola_portfolio/public/ " ,
"/blog" : " my_hugo_blog/public/ "
}O Binserve é uma plataforma cruzada, o que significa que você pode executá-lo em qualquer sistema operacional principal. É baixo no uso da CPU e na pegada de memória para que você possa executá -lo no seu Raspberry Pi ou até no telefone Android :
Com fast_mem_cache ativado, todos os arquivos são armazenados na memória mapeados para o índice de rota e a resposta na inicialização e não executarão nenhuma leitura de disco no tempo de execução. Recomenda -se mantê -lo ativado, mesmo que você tenha centenas de arquivos, o Binserve classifica automaticamente arquivos grandes a serem lidos no disco. Somente quando você está servindo muito conteúdo de mídia grande, você deve desativar esse modo.
Sob o capô, o Binserve mapeia as rotas e prepara a resposta com o conteúdo do arquivo, o tipo mime , metadata e os campos necessários para derivar o Etag e as tags Last-Modified e não executarão nenhuma dessas operações em tempo de execução. Após as alterações em qualquer um desses arquivos, o Hot Recload é executado em um thread de segundo plano que atualiza o estado do programa, fazendo alterações no hashmap simultâneo que gerencia o cache, as alterações são instantâneas e também não causariam tempo de inatividade.
Veja Benchmarks.md
P: O que é Binserve+?
O Binserve+ é feito para sites destinados a funcionar na produção e lidar com grandes quantidades de tráfego. Ele vem com proteção DDoS, limitação de taxa e métricas de Prometheus pronta para uso.
Você obtém licença vitalícia + correções de bug vitalícia por US $ 24/uma vez.
Isso existe como uma maneira de apoiar o projeto, ele não possui nenhuma chave de licença ou sistema de verificação, você obtém executáveis pré-compilados para os principais sistemas operacionais e arquiteturas em um arquivo zip. (Licença do MIT)
Obtenha Binserve+.
Maneiras de contribuir:
Licenciado sob a licença do MIT, consulte a licença para obter mais informações.
Binserve não existiria sem esses projetos incríveis:
CompactString s.Obrigado! ❤️