
Merecat เริ่มต้นจากการเล่นที่ Mongoose แต่ตอนนี้มีประโยชน์สำหรับวัตถุประสงค์ในการให้บริการเว็บจริง อย่างไรก็ตามมันไม่ใช่เมียร์คัตตัวจริง แต่เป็นเพียงเลียนแบบอีกตัวหนึ่งซึ่งถูกแยกออกจาก thttpd ที่ยิ่งใหญ่ที่สร้างโดย Jef Poskanzer
Merecat HTTPD ขยายคุณสมบัติเดิมที่นำเสนอโดย THTTPD แต่ยังมีชุดคุณสมบัติที่ จำกัด :
.htpassd และ .htaccessphp-cgi หากเปิดใช้งานใน merecat.confรอยเท้าที่เกิดขึ้น (~ 140 kib) ทำให้มันรวดเร็วและเหมาะสำหรับระบบขนาดเล็กและฝังตัว!
Merecat มีให้บริการเป็นซอฟต์แวร์ฟรี/โอเพนซอร์สภายใต้ใบอนุญาต 2 ข้อ BSD ที่เรียบง่าย สำหรับข้อมูลเพิ่มเติมดูหน้าคู่มือ merecat(8) หรือคำถามที่พบบ่อย
ส่วนที่เหลือของ readme นี้ครอบคลุมฟังก์ชั่นและคำแนะนำพื้นฐานบางอย่าง สำหรับตัวอย่างกรณีการใช้งานเชิงลึกเพิ่มเติมดูที่ howtos ต่อไปนี้:
ลองใช้ Docker Merecat แยกออกจากระบบที่เหลืออย่างปลอดภัยด้วยการปรับใช้ง่าย
เพื่อปกป้องไดเรกทอรีใน ~USERNAME/public_html/ ให้สร้างไฟล์ .htpasswd โดยใช้เครื่องมือ htpasswd ที่รวมอยู่ด้วย:
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: ***** เปิดใช้งานคุณสมบัตินี้และไดเรกทอรีโฮมเมนท์ของผู้ใช้ด้วยสคริปต์ configure ดูเพิ่มเติมเกี่ยวกับเรื่องนี้ในส่วนคุณสมบัติด้านล่าง
การตั้งค่าโฮสต์เสมือนจริงบนเซิร์ฟเวอร์อาจเป็นเรื่องยุ่งยากกับเว็บเซิร์ฟเวอร์อื่น ๆ ด้วย Merecat คุณเพียงแค่สร้างไดเรกทอรีสำหรับแต่ละโฮสต์ในเว็บเซิร์ฟเวอร์รูท:
/var/www/
|-- icons/
|-- cgi-bin/
|-- errors/
| `-- err404.html
|-- ftp.example.com/
`- www.example.com/
แก้ไข /etc/merecat.conf :
virtual-host = true
cgi "/cgi-bin/*|**.cgi" {
enabled = true
}
ตอนนี้เว็บเซิร์ฟเวอร์รูท /var/www/ ไม่ได้ให้บริการไฟล์อีกต่อไปไดเรกทอรีโฮสต์เสมือนจริงเท่านั้นทำหน้าที่สำหรับไฟล์ที่ใช้ร่วมกันใน icons/ , cgi-bin/ และ errors/
บน Linux Bind Mounts สามารถใช้ในการตั้งค่า FTP และการเข้าถึงเว็บไปยังไฟล์เดียวกัน ตัวอย่าง /etc/fstab :
/srv/ftp /var/www/ftp.example.com none defaults,bind 0 0
มีเทคนิคมากมายในการเพิ่มประสิทธิภาพการทำงานของเว็บเซิร์ฟเวอร์ของคุณ หนึ่งในสิ่งที่สำคัญที่สุดคือการแคชเบราว์เซอร์ Merecat รองรับทั้ง ETag: และ Cache-Control: อย่างไรก็ตามเพื่อเปิดใช้งานหลังคุณต้องกำหนดการตั้งค่า max-age ใน /etc/merecat.conf :
max-age = 3600 # One hour
ค่าขึ้นอยู่กับไซต์อย่างสมบูรณ์ สำหรับระบบฝังตัวคุณอาจต้องการตั้งค่าเป็นค่าสูงสุดในขณะที่สถานการณ์อื่น ๆ คุณอาจต้องการอย่างอื่น โดยค่าเริ่มต้นสิ่งนี้จะถูกปิดใช้งาน (0)
เคล็ดลับอีกประการหนึ่งคือการใช้การบีบอัด gzip Merecat ได้รับการสนับสนุนในตัวสำหรับการให้บริการ HTML, CSS และไฟล์ text/* อื่น ๆ หากมีไฟล์ .gz รุ่นเดียวกัน นี่คือตัวอย่างของวิธีการบีบอัดไฟล์ที่เกี่ยวข้อง:
root@example: ~ / > cd /var/www/
root@example:/var/www/ > for file in ` find . -name ' *.html ' -o -name ' *.css ' ` ; do
gzip -c $file > $file .gz ; doneวิธีการนี้เป็นมิตรกับซีพียูมากกว่าการให้ไฟล์ "ยุบ" ของ Merecat ได้ทันทีซึ่งเป็นอย่างอื่น
หาก configure Finds OpenSSL ติดตั้งการรองรับ HTTPS จะเปิดใช้งานสามารถปิดใช้งานได้โดยใช้ --without-ssl อย่างไรก็ตามเพื่อให้สามารถเข้าถึงการตั้งค่า SSL/TLS คุณยังต้องได้รับการสนับสนุนสำหรับ merecat.conf ดังนั้นคุณต้องติดตั้ง libconfuse ดูด้านล่างสำหรับข้อกำหนดการสร้างทั้งหมด
การสนับสนุน HTTPS มี SSLV2, SSLV3 และ TLSV1 ปิดใช้งาน (รหัสยาก) โดยค่าเริ่มต้น เฉพาะ TLSV2 และภายหลังเท่านั้นที่จะเปิดใช้งานและเจรจาต่อรองบนพื้นฐานของลูกค้า
ในการตั้งค่า merecat สำหรับ https การตั้งค่า /etc/merecat.conf ต่อไปนี้จะต้องเปิดใช้งาน:
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 รองรับใบรับรองการเข้ารหัสอย่างเต็มที่รวมถึงการต่ออายุ HTTP-01 ใช้คำสั่งตำแหน่งเซิร์ฟเวอร์:
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 จะต้องสัมพันธ์กับไดเรกทอรีรูทเซิร์ฟเวอร์ ใช้การติดตั้ง BIND เพื่อรับ /var/lib/letsencrypt ลงในรูทเซิร์ฟเวอร์ของคุณ วิธีนี้เราสามารถมั่นใจได้ว่า certbot เพียงเขียนไปยังไดเรกทอรีของตัวเองและไม่สามารถเขียนไปยังไฟล์ใด ๆ ในรูทเซิร์ฟเวอร์
จากนั้นเรียกใช้ certbot ด้วยอาร์กิวเมนต์ต่อไปนี้จากนั้นเพิ่มโฮสต์เสมือนทั้งหมดที่คุณต้องการสนับสนุนจาก Merecat:
root@example:/var/www/ > certbot certonly --webroot --webroot-path /var/lib/letsencryptสำหรับ Howto See:
ในการสร้างใบรับรองที่ลงนามด้วยตนเองและเปิดใช้งานความลับไปข้างหน้าอย่างสมบูรณ์แบบ PFS, Paramters Diffie-Helman (ไม่บังคับ) ใช้เครื่องมือ openssl ดังที่แสดงด้านล่าง สังเกตการใช้เปลือกย่อยกับ openssl.cnf ที่การตั้งค่าใบรับรองส่วนใหญ่อยู่และที่สำคัญกว่านั้นสังเกตว่าการใช้ subjectAltName หรือซาน เบราว์เซอร์ส่วนใหญ่ต้องการหลัง
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 4096สำหรับการตั้งค่าที่มีเซิร์ฟเวอร์สองตัวตัวอย่างต่อไปนี้สามารถใช้เพื่อเรียกใช้ HTTPS บนพอร์ต 4443, HTTP บนพอร์ต 8080 และเปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ HTTPS ในการเข้าถึงใด ๆ :
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"
}
}
รหัสเปลี่ยนเส้นทาง HTTP ที่รองรับคือ: 301, 302, 303 และ 307
การตั้งค่าตำแหน่งรองรับตัวแปรสไตล์ Nginx สามตัวดังที่แสดงในตัวอย่าง โปรดทราบคำพูดรอบ ๆ รูปแบบหรือตัวแยกวิเคราะห์. CONF จะคิดว่ารูปแบบเป็นความคิดเห็นสไตล์ C
Merecat ขึ้นอยู่กับห้องสมุดภายนอกสองสามตัวหากเปิดใช้งานเช่น OpenSsl, Zlib และ Libconfuse ในระบบ Debian/Ubuntu คุณสามารถติดตั้งการพึ่งพาได้ด้วย:
user@example: ~ / > sudo apt install pkg-config libconfuse-dev libssl-dev zlib1g-dev หากคุณสร้าง deps จากแหล่งที่มาพวกเขาอาจเริ่มต้นเพื่อใช้คำนำหน้าการติดตั้ง /usr/local ระบบที่ไม่ใช่ Debian/Ubuntu ไม่ค่อยสนับสนุนมาตรฐาน GNU นี้ดังนั้นนี่คือวิธีที่คุณอ้างอิงสำหรับสคริปต์ configure Merecat:
user@example: ~ /merecat/ > PKG_CONFIG_LIBDIR=/usr/local/lib/pkgconfig ./configure ในการสร้าง merecat โดยไม่ต้องรองรับ /etc/merecat.conf :
user@example: ~ /merecat/ > ./configure --without-configหากคุณสร้างจากแหล่ง GIT และไม่ใช่ Tarball ที่ปล่อยออกมาโปรดจำไว้ว่า:
user@example: ~ /merecat/ > ./autogen.sh ในการติดตั้ง httpd ลงใน /usr/sbin/ , ดัชนีเริ่มต้นและไอคอนลงใน /var/www และกำหนดค่าไฟล์เป็น /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 Merecat สำหรับเป้าหมายอื่นเป็นไปได้โดยการตั้งค่าสถานะ --host โฮสต์เป็นสคริปต์การกำหนดค่า นี่คือเอกสารที่ดีในเอกสาร GNU หมายเหตุ: โดยปกติจะตรวจพบระบบ --build โดยอัตโนมัติ
Merecat Builds เงียบโดยค่าเริ่มต้น สำหรับเอาต์พุตคอมไพเลอร์โดยละเอียดปิดการใช้งานโหมดเงียบด้วย
configure --disable-silent-rulesหรือสร้างด้วยmake V=1
Merecat ประกอบด้วย front-end, merecat.c และไลบรารี HTTP แบบสแตนด์อโลน, libhttpd.c ซึ่งสามารถปรับแต่งได้หลายวิธีและใช้สำหรับการฝังเว็บเซิร์ฟเวอร์ในแอปพลิเคชันอื่นหากจำเป็น
ตัวเลือกที่พบบ่อยที่สุดมีให้จากบรรทัดคำสั่ง merecat และไฟล์การกำหนดค่า merecat.conf ตัวเลือกอื่น ๆ น้อยกว่าสามารถเปิดใช้งานได้โดยใช้สคริปต์ 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
ไฟล์ต้นฉบับ merecat.h มีคุณสมบัติมากขึ้นที่สามารถปรับแต่งได้บางส่วนถูกกล่าวถึงในหน้า Man แต่ไฟล์ส่วนหัวมีความคิดเห็นที่มีประโยชน์มากเช่นกัน
Merecat เป็นส้อมที่ติดอยู่กับ sthttpd พร้อมแพทช์ที่หายไปจำนวนมากที่พบอยู่รอบ ๆ เว็บ โครงการ STHTTPD ในทางกลับกันเป็นส้อมจาก THTTPD ดั้งเดิม - เซิร์ฟเวอร์ HTTP ขนาดเล็ก/เทอร์โบ/การควบคุมปริมาณ