
Merecat begann als Wortspiel bei Mongoose, ist aber jetzt für tatsächliche Web -Serving -Zwecke nützlich. Es ist jedoch kein echter Erdmännchen, nur ein weiterer Nachahmer, der aus dem von Jef Poskanzer erstellten großen THTTPD gezogen wurde.
Merecat HTTPD erweitert die ursprünglich von Thttpd angebotenen Funktionen, verfügt jedoch über einen begrenzten Feature -Set:
.htpassd und .htaccess -Unterstützungphp-cgi , falls er in merecat.conf aktiviert istDer resultierende Fußabdruck (~ 140 KIB) macht es schnell und geeignet für kleine und eingebettete Systeme!
MERECAT ist unter der vereinfachten 2-Klausel-BSD-Lizenz als kostenlose/Open-Source-Software verfügbar. Weitere Informationen finden Sie in der manuellen Seite merecat(8) oder in den FAQs.
Der Rest dieser Readme deckt einige grundlegende Funktionen und Empfehlungen ab. Weitere Beispiele für ein umfassendere Anwendungsfall finden Sie im folgenden Howtos:
Probieren Sie Docker Mercat sicher isoliert vom Rest des Systems mit einer einfachen Bereitstellung.
Erstellen Sie die Datei .htpasswd mit dem enthaltenen htpasswd -Tool: Erstellen ~USERNAME/public_html/ die Datei.
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: ***** Aktivieren Sie diese Funktion und Benutzer -Home -Verzeichnisse mit dem configure . Weitere Informationen finden Sie im Abschnitt Features unten.
Das Einrichten von virtuellen Hosts auf einem Server kann mit anderen Webservern ein wenig problematisch sein. Mit Mercat erstellen Sie einfach Verzeichnisse für jeden Host im Webserver -Stamm:
/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
}
icons/ serviert der Webserver-Root, /var/www/ , keine Dateien mehr, cgi-bin/ nur virtuelle errors/ .
Auf Linux -Bindungsmontage können FTP- und Webzugriff auf dieselben Dateien eingerichtet werden. Beispiel /etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
Es gibt viele Tricks, um die Leistung Ihres Webservers zu optimieren. Einer der wichtigsten ist das Caching des Browsers. MERECAT unterstützt sowohl ETag: als auch Cache-Control: Um zu ermöglichen, müssen Sie jedoch die max-age in /etc/merecat.conf definieren:
max-age = 3600 # One hour
Der Wert ist vollständig ortsabhängig. Für ein eingebettetes System möchten Sie es möglicherweise auf den Maximalwert einstellen, während Sie für andere Szenarien wahrscheinlich etwas anderes wünschen. Standardmäßig ist dies deaktiviert (0).
Ein weiterer Trick besteht darin, gzip -Komprimierung einzusetzen. MERECAT hat integrierte Unterstützung für das Servieren von HTML, CSS und anderen text/* -Dateien, wenn es eine .gz Version derselben Datei gibt. Hier ist ein Beispiel für die Komprimierung relevanter Dateien:
root@example: ~ / > cd /var/www/
root@example:/var/www/ > for file in ` find . -name ' *.html ' -o -name ' *.css ' ` ; do
gzip -c $file > $file .gz ; doneDieser Ansatz ist mehr CPU -freundlicher als die Überbrückungsdateien "Deflate" -Dateien im laufenden Fliegen, was er sonst tut.
Wenn configure von OpenSSL installiert ist, ist der HTTPS-Support aktiviert. Dies kann mit --without-ssl deaktiviert werden. Um Zugriff auf die SSL/TLS -Einstellungen zu erhalten, benötigen Sie jedoch auch Unterstützung für merecat.conf , sodass Sie libConfuse installieren müssen. Weiter unten finden Sie alle Build -Anforderungen.
Die HTTPS -Unterstützung hat standardmäßig SSLV2, SSLV3 und TLSV1 deaktiviert (hart codiert). Nur TLSV2 und später werden pro Kundenbasis aktiviert und ausgehandelt.
So einrichten, dass die Mercat für HTTPS die folgenden Einstellungen /etc/merecat.conf einrichten müssen:
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 unterstützt die Verschlüsselung von Zertifikaten, einschließlich HTTP-01-Verlängerungen. Verwenden Sie die Anweisung der Serverstandort:
server default {
port = 80
location "/.well-known/acme-challenge/**" {
path = "letsencrypt/.well-known/acme-challenge/"
}
redirect "/**" {
code = 301
location = "https://$host$request_uri$args"
}
}
Der path muss relativ zum Server -Root -Verzeichnis sein. Verwenden Sie Bindmontage, um /var/lib/letsencrypt in Ihr Server -Root zu erhalten. Auf diese Weise können wir sicherstellen, dass certbot nur in ein eigenes Verzeichnis schreibt und in keiner Datei im Server -Root schreiben kann.
Führen Sie dann certbot mit den folgenden Argumenten aus und fügen Sie dann alle virtuellen Hosts hinzu, die Sie von Merecat unterstützen möchten:
root@example:/var/www/ > certbot certonly --webroot --webroot-path /var/lib/letsencryptFür ein Howto -Sehen:
Verwenden Sie das openssl -Tool, wie unten gezeigt, um ein selbst signiertes Zertifikat zu erstellen und eine perfekte Vorwärtshöre, PFS, dh Diffie-Helman-Paramter (optional) zu aktivieren. Beachten Sie die Verwendung einer Unterschale mit openssl.cnf , in der die meisten Zertifikateinstellungen sind, und vor allem die Verwendung von subjectAltName oder SAN bemerken. Letzteres ist heute von den meisten Browsern erforderlich.
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 4096Für ein Setup mit zwei Servern kann das folgende Beispiel zum Ausführen von HTTPS auf Port 4443, HTTP auf Port 8080 verwendet und auf dem HTTPS -Server auf jedem Zugriff umgeleitet werden:
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"
}
}
Unterstützte HTTP -Umleitungscodes sind: 301, 302, 303 und 307.
Die Standorteinstellung unterstützt drei Nginx -Stilvariablen, wie im Beispiel gezeigt. Bitte beachten Sie die Zitate rund um das Muster, oder der .conf-Parser wird der Meinung, dass das Muster ein Kommentar im C-Stil ist.
Mercat hängt von einigen externen Bibliotheken ab, falls aktiviert, z. B. OpenSSL, ZLIB und LibConfuse. Auf Debian/Ubuntu -Systemen können Sie die Abhängigkeiten installieren mit:
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev Wenn Sie die DEPs bauen. Aus Quelle können sie standardmäßig ein Installationspräfix von /usr/local verwenden. Non -Debian/Ubuntu -Systeme unterstützen diesen GNU -Standard selten. Hier finden Sie darauf, wie Sie es für das SERECAT configure -Skript verweisen:
user@example: ~ /merecat/ > PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig ./configure Mercat ohne Unterstützung für /etc/merecat.conf zu erstellen:
user@example: ~ /merecat/ > ./configure --without-configWenn Sie aus Git -Quellen und nicht aus einem freigelassenen Tarball bauen, denken Sie daran:
user@example: ~ /merecat/ > ./autogen.sh So installieren Sie httpd in /usr/sbin/ , Standardindex und Symbole in /var/www und config -Datei an /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
user@example: ~ /merecat/ > make
user@example: ~ /merecat/ > sudo make install Cross Compiling Mercat für ein anderes Ziel ist möglich, indem das Flag --host auf das Skript konfigurieren wird. Dies ist in der GNU -Dokumentation gut dokumentiert. HINWEIS: Normalerweise wird das --build automatisch erkannt.
Mercat Builds schweigen standardmäßig. Deaktivieren Sie einen detaillierten Compiler-Ausgang, deaktivieren Sie den stillen Modus mit
configure --disable-silent-rules, oder erstellen Sie mitmake V=1.
MERECAT besteht aus einem Front-End, merecat.c und einer eigenständigen HTTP-Bibliothek, libhttpd.c , die auf verschiedene Weise optimiert und zum Einbetten eines Webservers in eine andere Anwendung verwendet werden kann.
Die häufigsten Optionen finden Sie in der Befehlszeile merecat und der Konfigurationsdatei merecat.conf . Andere, weniger häufige Optionen können mit dem Skript 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
Die Quelldatei merecat.h hat noch mehr Funktionen, die angepasst werden können, einige davon werden auf der Mannseite erwähnt, aber die Header -Datei enthält auch sehr nützliche Kommentare.
Merecat ist eine angezogene Gabelung von STHTTPD mit vielen verlorenen Patches im Internet. Das STHTTPD -Projekt ist wiederum eine Gabel aus dem ursprünglichen THTTPD - der winzige/turbo/drosselende HTTP -Server.