
Merecat dimulai sebagai permainan kata -kata di Mongoose, tetapi sekarang berguna untuk tujuan penyajian web yang sebenarnya. Namun itu bukan Meerkat yang asli, hanya peniru lain, bercabang dari THTTPD besar yang dibuat oleh Jef Poskanzer.
Merecat httpd memperluas fitur yang awalnya ditawarkan oleh THTTPD, tetapi masih memiliki set fitur terbatas:
.htpassd dan .htaccessphp-cgi jika diaktifkan di merecat.confJejak yang dihasilkan (~ 140 kib) membuatnya cepat dan cocok untuk sistem kecil dan tertanam!
Merecat tersedia sebagai perangkat lunak gratis/open source di bawah lisensi BSD 2-Clause yang disederhanakan. Untuk informasi lebih lanjut, lihat halaman manual merecat(8) , atau FAQ.
Sisa readme ini mencakup beberapa fungsi dan rekomendasi dasar. Untuk contoh-contoh penggunaan yang lebih mendalam, lihat howtos berikut:
Cobalah Docker Merecat dengan aman diisolasi dari seluruh sistem, dengan penempatan yang mudah.
Untuk melindungi direktori di ~USERNAME/public_html/ , buat file .htpasswd menggunakan alat htpasswd yang disertakan:
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: ***** Aktifkan fitur ini, dan direktori rumah pengguna, dengan skrip configure . Lihat lebih lanjut tentang ini di bagian fitur di bawah ini.
Menyiapkan host virtual di server dapat sedikit merepotkan dengan server web lainnya. Dengan Merecat Anda cukup membuat direktori untuk setiap host di root server 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
}
Sekarang root server web, /var/www/ , tidak lagi melayani file, hanya direktori host virtual yang dilakukan, eksekusi untuk file bersama di icons/ , cgi-bin/ , dan errors/ .
Di Linux Bind Mount dapat digunakan untuk mengatur FTP dan akses web ke file yang sama. Contoh /etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
Ada banyak trik untuk mengoptimalkan kinerja server web Anda. Salah satu yang paling penting adalah caching browser. Merecat mendukung ETag: dan Cache-Control: namun untuk mengaktifkan yang terakhir Anda perlu menentukan pengaturan max-age di /etc/merecat.conf :
max-age = 3600 # One hour
Nilainya sepenuhnya tergantung pada situs. Untuk sistem tertanam, Anda mungkin ingin mengaturnya ke nilai maksimum, sedangkan untuk skenario lain Anda mungkin menginginkan sesuatu yang lain. Secara default ini dinonaktifkan (0).
Trik lain adalah menggunakan kompresi gzip . Merecat memiliki dukungan bawaan untuk melayani HTML, CSS, dan file text/* lainnya jika ada versi .gz dari file yang sama. Berikut adalah contoh cara mengompres file yang relevan:
root@example: ~ / > cd /var/www/
root@example:/var/www/ > for file in ` find . -name ' *.html ' -o -name ' *.css ' ` ; do
gzip -c $file > $file .gz ; donePendekatan ini lebih ramah CPU daripada membiarkan file "mengempiskan" Merecat dengan cepat, yang sebaliknya.
Jika configure Finds OpenSSL diinstal, dukungan HTTPS diaktifkan, ini dapat dinonaktifkan menggunakan --without-ssl . Namun, untuk mendapatkan akses ke pengaturan SSL/TLS, Anda juga memerlukan dukungan untuk merecat.conf , jadi Anda harus menginstal libconfuse. Lihat di bawah untuk semua persyaratan pembangunan.
Dukungan HTTPS memiliki SSLV2, SSLV3, dan TLSV1 dinonaktifkan (kode keras) secara default. Hanya TLSV2 dan kemudian yang akan diaktifkan dan dinegosiasikan berdasarkan per klien.
Untuk mengatur Merecat untuk https, pengaturan berikut /etc/merecat.conf harus diaktifkan:
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 sepenuhnya mendukung sertifikat Enkripsi Let's, termasuk pembaruan HTTP-01. Gunakan Petunjuk Lokasi Server:
server default {
port = 80
location "/.well-known/acme-challenge/**" {
path = "letsencrypt/.well-known/acme-challenge/"
}
redirect "/**" {
code = 301
location = "https://$host$request_uri$args"
}
}
path harus relatif ke direktori root server. Gunakan Bind Mounts untuk mendapatkan /var/lib/letsencrypt ke root server Anda. Dengan cara ini kami dapat memastikan certbot hanya menulis ke direktori sendiri dan tidak dapat menulis ke file apa pun di root server.
Kemudian jalankan certbot dengan argumen berikut dan kemudian tambahkan semua host virtual yang ingin Anda dukung dari Merecat:
root@example:/var/www/ > certbot certonly --webroot --webroot-path /var/lib/letsencryptUntuk melihat:
Untuk membuat sertifikat yang ditandatangani sendiri dan mengaktifkan kerahasiaan ke depan yang sempurna, PFS, IE Paramters diffie-Helman (opsional), gunakan alat openssl seperti yang ditunjukkan di bawah ini. Perhatikan penggunaan sub-shell dengan openssl.cnf di mana sebagian besar pengaturan sertifikat berada, dan yang lebih penting memperhatikan penggunaan subjectAltName , atau San. Yang terakhir diperlukan oleh sebagian besar browser saat ini.
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 4096Untuk pengaturan dengan dua server, contoh berikut dapat digunakan untuk menjalankan HTTPS di Port 4443, HTTP pada port 8080 dan mengarahkan kembali ke server HTTPS pada akses apa pun:
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"
}
}
Kode pengalihan HTTP yang didukung adalah: 301, 302, 303, dan 307.
Pengaturan lokasi mendukung tiga variabel gaya nginx seperti yang ditunjukkan pada contoh. Harap perhatikan kutipan di sekitar pola, atau .conf parser akan berpikir polanya adalah komentar bergaya-C.
Merecat tergantung pada beberapa pustaka eksternal, jika diaktifkan, misalnya OpenSsl, Zlib, dan LibConfuse. Pada sistem Debian/Ubuntu Anda dapat menginstal dependensi dengan:
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev Jika Anda membangun DEP. Dari sumber, mereka mungkin default untuk menggunakan awalan instalasi /usr/local . Sistem Non Debian/Ubuntu jarang mendukung standar GNU ini, jadi inilah cara Anda merujuknya untuk skrip configure Merecat:
user@example: ~ /merecat/ > PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig ./configure Untuk membangun Merecat tanpa dukungan untuk /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --without-configJika Anda membangun dari sumber git dan bukan tarball yang dirilis, maka ingat:
user@example: ~ /merecat/ > ./autogen.sh Untuk menginstal httpd ke /usr/sbin/ , indeks default dan ikon ke /var/www , dan konfigurasi file ke /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
user@example: ~ /merecat/ > make
user@example: ~ /merecat/ > sudo make install Cross mengkompilasi Merecat untuk target lain dimungkinkan dengan mengatur --host flag ke skrip konfigurasi. Ini didokumentasikan dengan baik dalam dokumentasi GNU. CATATAN: Biasanya sistem --build terdeteksi secara otomatis.
Build Merecat diam secara default. Untuk output kompiler terperinci, nonaktifkan mode diam dengan
configure --disable-silent-rules, atau build denganmake V=1.
Merecat terdiri dari front-end, merecat.c , dan perpustakaan HTTP mandiri, libhttpd.c , yang dapat diubah dengan berbagai cara dan digunakan untuk menanamkan server web dalam aplikasi lain jika diperlukan.
Opsi yang paling umum tersedia dari baris perintah merecat dan file konfigurasi merecat.conf . Opsi lain yang kurang umum, dapat diaktifkan menggunakan skrip 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
File sumber merecat.h bahkan memiliki lebih banyak fitur yang dapat di -tweak, beberapa di antaranya disebutkan di halaman man, tetapi file header memiliki komentar yang sangat berguna juga.
Merecat adalah garpu stik dari sthttpd dengan banyak tambalan yang hilang ditemukan tergeletak di sekitar web. Proyek STHTTPD pada gilirannya adalah garpu dari THTTPD asli - server HTTP Tiny/Turbo/Throttling.