
Merecat a commencé comme un jeu de mots à Mongoose, mais est désormais utile à des fins de service Web réelles. Ce n'est cependant pas un véritable meerkat, tout simplement un autre copieur, fourché du grand thttpd créé par Jef Poskanzer.
Merecat HTTPD développe les fonctionnalités initialement proposées par THTTPD, mais dispose toujours d'un ensemble de fonctionnalités limité:
.htpassd et .htaccessphp-cgi si activé dans merecat.confL'empreinte résultante (~ 140 kib) le rend rapide et adapté aux systèmes petits et intégrés!
Merecat est disponible en tant que logiciel gratuit / open source sous la licence BSD simplifiée à 2 claudes. Pour plus d'informations, consultez la page manuelle merecat(8) , ou la FAQ.
Le reste de cette lecture couvre certaines fonctions et recommandations de base. Pour des exemples de cas d'utilisation plus approfondis, consultez les howtos suivants:
Essayez Docker Merecat isolé en toute sécurité du reste du système, avec un déploiement facile.
Pour protéger un répertoire dans votre ~USERNAME/public_html/ , créez le fichier .htpasswd à l'aide de l'outil htpasswd inclus:
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: ***** Activez cette fonctionnalité et les répertoires domestiques utilisateur, avec le script configure . Voir plus à ce sujet dans la section des fonctionnalités ci-dessous.
La configuration des hôtes virtuelles sur un serveur peut être un peu des tracas avec d'autres serveurs Web. Avec Merecat, vous créez simplement des répertoires pour chaque hôte dans la racine du serveur 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
}
Maintenant, le serveur Web Root, /var/www/ , ne sert plus de fichiers, seuls les répertoires d'hôtes virtuels font, exécutent les fichiers partagés dans icons/ , cgi-bin/ et errors/ .
Sur Linux Bind, les supports peuvent être utilisés pour configurer FTP et l'accès Web aux mêmes fichiers. Exemple /etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
Il existe de nombreuses astuces pour optimiser les performances de votre serveur Web. L'un des plus importants est la mise en cache du navigateur. Merecat prend en charge à la fois ETag: et Cache-Control: cependant, pour activer ce dernier, vous devez définir le paramètre max-age dans /etc/merecat.conf :
max-age = 3600 # One hour
La valeur est entièrement dépendante du site. Pour un système intégré, vous voudrez peut-être le définir sur la valeur maximale, tandis que pour d'autres scénarios, vous voudrez probablement autre chose. Par défaut, c'est désactivé (0).
Une autre astuce consiste à utiliser la compression gzip . Merecat a une prise en charge intégrée pour servir les fichiers HTML, CSS et autres fichiers text/* s'il existe une version .gz du même fichier. Voici un exemple de la façon de compresser les fichiers pertinents:
root@example: ~ / > cd /var/www/
root@example:/var/www/ > for file in ` find . -name ' *.html ' -o -name ' *.css ' ` ; do
gzip -c $file > $file .gz ; doneCette approche est plus conviviale au processeur que de laisser Merecat "dégonfler" des fichiers à la volée, ce qu'il fait autrement.
Si configure FindS OpenSSL est installé, la prise en charge HTTPS est activée, cela peut être désactivé en utilisant --without-ssl . Cependant, pour accéder aux paramètres SSL / TLS, vous avez également besoin d'une prise en charge de merecat.conf , vous devez donc installer libconfuse. Voir ci-dessous pour toutes les exigences de construction.
Le support HTTPS a SSLV2, SSLV3 et TLSV1 Disabled (codé en dur) par défaut. Seul TLSV2 et plus tard seront activés et négociés par client.
Pour configurer MeRecat pour HTTPS, les paramètres suivants /etc/merecat.conf doivent être activés:
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
}
}
Merecat prend en charge les certificats de crypte, y compris les renouvellements HTTP-01. Utilisez la directive d'emplacement du serveur:
server default {
port = 80
location "/.well-known/acme-challenge/**" {
path = "letsencrypt/.well-known/acme-challenge/"
}
redirect "/**" {
code = 301
location = "https://$host$request_uri$args"
}
}
Le path doit être relatif au répertoire racine du serveur. Utilisez Bind Mounts pour obtenir /var/lib/letsencrypt dans la racine de votre serveur. De cette façon, nous pouvons nous assurer que certbot écrit uniquement dans son propre répertoire et ne peut écrire dans aucun fichier dans la racine du serveur.
Ensuite, exécutez certbot avec les arguments suivants, puis ajoutez tous les hôtes virtuels que vous souhaitez prendre en charge de Merecat:
root@example:/var/www/ > certbot certonly --webroot --webroot-path /var/lib/letsencryptPour un howpo voir:
Pour créer un certificat auto-signé et activer le secret avant parfait, PFS, c'est-à-dire DIFFIE-HELMAN PARAMERS (Facultatif), utilisez l'outil openssl comme indiqué ci-dessous. Remarquez l'utilisation d'une sous-coque avec openssl.cnf où se trouvent la plupart des paramètres de certificat, et plus important encore, remarquez l'utilisation de subjectAltName , ou SAN. Ce dernier est requis par la plupart des navigateurs aujourd'hui.
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 4096Pour une configuration avec deux serveurs, l'exemple suivant peut être utilisé pour exécuter HTTPS sur le port 4443, HTTP sur le port 8080 et rediriger vers le serveur HTTPS sur n'importe quel accès:
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"
}
}
Les codes de redirection HTTP pris en charge sont: 301, 302, 303 et 307.
Le paramètre d'emplacement prend en charge trois variables de style Nginx comme indiqué dans l'exemple. Veuillez noter les citations autour du modèle, ou l'analyseur .conf pense que le modèle est un commentaire de style C.
Merecat dépend de quelques bibliothèques externes, si elle est activée, par exemple OpenSSL, ZLIB et LibConfuse. Sur les systèmes Debian / Ubuntu, vous pouvez installer les dépendances avec:
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev Si vous construisez les DEP. Depuis la source, ils peuvent par défaut d'utiliser un préfixe d'installation de /usr/local . Les systèmes non Debian / Ubuntu prennent rarement la prise en charge de cette norme GNU, alors voici comment vous la référez pour le script Merecat configure :
user@example: ~ /merecat/ > PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig ./configure Pour construire Merecat sans support pour /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --without-configSi vous construisez à partir de sources GIT et non d'un tarball libéré, rappelez-vous:
user@example: ~ /merecat/ > ./autogen.sh Pour installer httpd dans /usr/sbin/ , index par défaut et icônes dans /var/www , et fixe file to /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
user@example: ~ /merecat/ > make
user@example: ~ /merecat/ > sudo make install La compilation croisée Merecat pour une autre cible est possible en définissant l'indicateur --host sur le script de configuration. Ceci est bien documenté dans la documentation GNU. Remarque: Habituellement, le système --build est automatiquement détecté.
Les versions Merecat sont silencieuses par défaut. Pour une sortie détaillée du compilateur, désactivez le mode silencieux avec
configure --disable-silent-rulesou construire avecmake V=1.
Merecat se compose d'un frontal, merecat.c , et d'une bibliothèque HTTP autonome, libhttpd.c , qui peut être modifiée de diverses manières et utilisée pour intégrer un serveur Web dans une autre application si nécessaire.
Les options les plus courantes sont disponibles à partir de la ligne de commande merecat et du fichier de configuration merecat.conf . D'autres options moins courantes peuvent être activées à l'aide du 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
Le fichier source merecat.h a encore plus de fonctionnalités qui peuvent être modifiées, certaines d'entre elles sont mentionnées dans la page Man, mais le fichier d'en-tête a également des commentaires très utiles.
Merecat est une fourche de sthTTPD fardiquée avec beaucoup de patchs perdus trouvés sur le Web. Le projet STHTTPD à son tour est à son tour une fourche du THTTPD d'origine - le serveur HTTP minuscule / turbo / étranglement.