
Merecat começou como trocadilho em Mongoose, mas agora é útil para fins reais da Web. No entanto, não é um meerkat de verdade, apenas mais um imitador, bifurcado do grande thttpd criado por Jef Poskanzer.
O MeCat HTTPD se expande sobre os recursos originalmente oferecidos pelo THTTPD, mas ainda tem um conjunto de recursos limitado:
.htpassd e .htaccessphp-cgi se ativado em merecat.confA pegada resultante (~ 140 kib) o torna rápido e adequado para sistemas pequenos e incorporados!
O Merecat está disponível como software gratuito/de código aberto sob a licença simplificada de 2 cláusulas BSD. Para obter mais informações, consulte a página manual merecat(8) ou as perguntas frequentes.
O restante deste ReadMe abrange algumas funções e recomendações básicas. Para exemplos mais aprofundados, consulte os seguintes Howtos:
Experimente o Docker Merecat isolado com segurança do restante do sistema, com fácil implantação.
Para proteger um diretório em seu ~USERNAME/public_html/ , crie o arquivo .htpasswd usando a ferramenta htpasswd incluída:
user@example: ~ / > cd public_html/Downloads
user@example: ~ /public_html/Downloads/ > htpasswd -c .htpasswd friend
Changing password for user friend
New password: *****
Re-type new password: ***** Habilite esse recurso e diretórios domésticos do usuário, com o script configure . Veja mais sobre isso na seção Recursos abaixo.
A configuração de hosts virtuais em um servidor pode ser um pouco aborrecida com outros servidores da Web. Com o MeCat, você simplesmente cria diretórios para cada host na raiz do servidor da web:
/var/www/
|-- icons/
|-- cgi-bin/
|-- errors/
| `-- err404.html
|-- ftp.example.com/
`- www.example.com/
Edit /etc/merecat.conf :
virtual-host = true
cgi "/cgi-bin/*|**.cgi" {
enabled = true
}
Agora, a raiz do servidor da web, /var/www/ , não serve mais arquivos, apenas os diretórios do host virtual fazem, executando os arquivos compartilhados em icons/ , cgi-bin/ e errors/ .
No Linux, as montagens de ligação podem ser usadas para configurar o FTP e o acesso da Web aos mesmos arquivos. Exemplo /etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
Existem muitos truques para otimizar o desempenho do seu servidor da Web. Um dos mais importantes é o cache do navegador. O Merecat suporta ETag: e Cache-Control: no entanto, para permitir o último, você precisa definir a configuração max-age em /etc/merecat.conf :
max-age = 3600 # One hour
O valor é completamente dependente do local. Para um sistema incorporado, você pode defini -lo com o valor máximo, enquanto para outros cenários você provavelmente desejará outra coisa. Por padrão, isso está desativado (0).
Outro truque é empregar compressão gzip . O Merecat possui suporte interno para servir os arquivos HTML, CSS e outros text/* se houver uma versão .gz do mesmo arquivo. Aqui está um exemplo de como comprimir arquivos relevantes:
root@example: ~ / > cd /var/www/
root@example:/var/www/ > for file in ` find . -name ' *.html ' -o -name ' *.css ' ` ; do
gzip -c $file > $file .gz ; doneEssa abordagem é mais amigável da CPU do que deixar o MeCat "esvaziar" os arquivos em tempo real, o que, de outra forma, faz.
Se configure do Finds OpenSSL é instalada, o suporte HTTPS será ativado, isso pode ser desativado usando --without-ssl . No entanto, para obter acesso às configurações do SSL/TLS, você também precisa de suporte para merecat.conf , para que você deve instalar o libconfuse. Veja abaixo todos os requisitos de construção.
O suporte HTTPS possui SSLV2, SSLV3 e TLSV1 desativados (codificados) por padrão. Somente o TLSV2 e posterior será ativado e negociado por cliente.
Para configurar o Merecat para https, as configurações de seguintes configurações /etc/merecat.conf devem estar ativadas:
server secure {
port = 443
ssl {
certfile = /etc/letsencrypt/live/example.com/fullchain.pem
keyfile = /etc/letsencrypt/live/example.com/privkey.pem
dhfile = /etc/letsencrypt/live/example.com/dhparam.pem
}
}
O Merecat suporta totalmente os certificados Let's Crypt, incluindo renovações HTTP-01. Use a diretiva de localização do servidor:
server default {
port = 80
location "/.well-known/acme-challenge/**" {
path = "letsencrypt/.well-known/acme-challenge/"
}
redirect "/**" {
code = 301
location = "https://$host$request_uri$args"
}
}
O path deve ser relativo ao diretório raiz do servidor. Use montagens de ligação para obter /var/lib/letsencrypt na raiz do servidor. Dessa forma, podemos garantir que certbot apenas grava em seu próprio diretório e não possamos gravar em nenhum arquivo na raiz do servidor.
Em seguida, execute certbot com os seguintes argumentos e adicione todos os hosts virtuais que você deseja apoiar do Merecat:
root@example:/var/www/ > certbot certonly --webroot --webroot-path /var/lib/letsencryptPara um Howto ver:
Para criar um certificado auto-assinado e ativar o sigilo de avanço perfeito, o PFS, ou seja, os Paramters Diffie-Helman (Opcional), use a ferramenta openssl como mostrado abaixo. Observe o uso de uma sub-concha com openssl.cnf , onde a maioria das configurações de certificado está e, mais importante, observe o uso de subjectAltName , ou SAN. O último é exigido pela maioria dos navegadores hoje.
root@example:/var/www/ > mkdir private certs
root@example:/var/www/ > openssl req -x509 -newkey rsa:4096 -nodes
-keyout private/server.key -new -out certs/server.pem
-subj /CN=www.acme.com -reqexts SAN -extensions SAN
-sha256 -days 3650 -config <( cat /etc/ssl/openssl.cnf
<( printf ' [SAN]nsubjectAltName=DNS:www.acme.com ' ) )
root@example:/var/www/ > openssl dhparam -out certs/dhparm.pem 4096Para uma configuração com dois servidores, o exemplo a seguir pode ser usado para executar o HTTPS na porta 4443, HTTP na porta 8080 e redirecionar para o servidor HTTPS em qualquer acesso:
server secure {
port = 4443
ssl {
certfile = certs/server.pem
keyfile = private/server.key
dhfile = certs/dhparm.pem
}
}
server default {
port = 8080
redirect "/**" {
code = 303
location = "https://$host:4443$request_uri$args"
}
}
Os códigos de redirecionamento HTTP suportados são: 301, 302, 303 e 307.
A configuração de localização suporta três variáveis de estilo nginx, como mostrado no exemplo. Observe as cotações em torno do padrão, ou o analisador .conf pensará que o padrão é um comentário no estilo C.
O Merecat depende de algumas bibliotecas externas, se ativado, por exemplo, o OpenSSL, Zlib e LibConfuse. Nos sistemas Debian/Ubuntu, você pode instalar as dependências com:
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev Se você construir os deps. Da fonte, eles podem padrão usar um prefixo de instalação de /usr/local . Os sistemas não Debian/Ubuntu raramente suportam esse padrão GNU, então aqui está como você o faz referência ao script configure do MereCat:
user@example: ~ /merecat/ > PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig ./configure Para construir o Merecat sem suporte para /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --without-configSe você construir a partir de fontes do Git e não um tarball liberado, lembre -se:
user@example: ~ /merecat/ > ./autogen.sh Para instalar httpd em /usr/sbin/ , índice padrão e ícones em /var/www , e configurar arquivo para /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
user@example: ~ /merecat/ > make
user@example: ~ /merecat/ > sudo make install Cross Compilar Merecat para um outro alvo é possível definindo o sinalizador --host como o script de configuração. Isso está bem documentado na documentação da GNU. Nota: Geralmente, o sistema --build é detectado automaticamente.
As compilações de Merecat são silenciosas por padrão. Para obter saída detalhada do compilador, desative o modo silencioso com
configure --disable-silent-rulesou construa commake V=1.
O Merecat consiste em um front-end, merecat.c , e uma biblioteca HTTP independente, libhttpd.c , que pode ser ajustada de várias maneiras e usada para incorporar um servidor da Web em outro aplicativo, se necessário.
As opções mais comuns estão disponíveis na linha de comando merecat e no arquivo de configuração merecat.conf . Outras opções menos comuns, podem ser ativadas usando o script configure :
--enable-builtin-icons Enable built-in icons for dir listings
--enable-htaccess Enable .htaccess files for access control
--enable-htpasswd Enable .htpasswd files for authentication
--enable-public-html Enable $HOME/public_html as ~USERNAME/
--enable-msie-padding Add padding to error messages for Internet Explorer
--disable-dirlisting Disable directory listings when no index file is found
--without-config Disable /etc/merecat.conf support using libConfuse
--without-ssl Disable HTTPS support, default: enabled
--without-symlinks Disable httpd and in.httpd symlinks to merecat
--without-zlib Disable mod_deflate (gzip) using zlib
O arquivo de origem merecat.h possui ainda mais recursos que podem ser ajustados, alguns deles são mencionados na página Man, mas o arquivo de cabeçalho também tem comentários muito úteis.
Merecat é uma bifurcação de STHTTPD com muitos patches perdidos encontrados na web. O projeto STHTTPD, por sua vez, é um garfo do THTTPD original - o servidor HTTP minúsculo/turbo/aceleração.