
بدأت Merecat بمثابة لعبة التورية في Mongoose ، لكنها مفيدة الآن لأغراض خدمة الويب الفعلية. ومع ذلك ، فهي ليست ميركات حقيقية ، مجرد نسخ آخر ، متشوق من thttpd العظيم الذي أنشأته Jef Poskanzer.
يتوسع Merecat HTTPD على الميزات التي تقدمها THTTPD في الأصل ، ولكن لا يزال لديه مجموعة ميزات محدودة:
.htpassd و .htaccessphp-cgi إذا تم تمكينه في merecat.confالبصمة الناتجة (~ 140 KIB) تجعلها سريعة ومناسبة للأنظمة الصغيرة والمدمجة!
يتوفر Merecat كبرنامج مجاني/مفتوح المصدر ضمن ترخيص BSD المبسط 2 من البلاغة. لمزيد من المعلومات ، راجع الصفحة اليدوية merecat(8) ، أو الأسئلة الشائعة.
يغطي بقية هذه القراءة بعض الوظائف والتوصيات الأساسية. لمزيد من أمثلة حالة الاستخدام المتعمقة ، راجع ما يلي 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/
edit /etc/merecat.conf :
virtual-host = true
cgi "/cgi-bin/*|**.cgi" {
enabled = true
}
الآن لا يقدم جذر خادم الويب ، /var/www/ ، الملفات ، فقط دلائل المضيف الافتراضية ، وتنفيذ الملفات المشتركة في icons/ ، cgi-bin/ ، و errors/ .
على حوامل Linux Bind يمكن استخدامها لإعداد 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هذا النهج أكثر ملاءمة من وحدة المعالجة المركزية من السماح لملفات "DEFLATE" Merecat أثناء الطيران ، وهو ما يفعله خلاف ذلك.
إذا تم configure اكتشافات 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 يدعم تمامًا LETS ENCRYPT شهادات ، بما في ذلك تجديد 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 بالنسبة إلى دليل جذر الخادم. استخدم حوامل ربط للحصول على /var/lib/letsencrypt في جذر الخادم الخاص بك. وبهذه الطريقة ، يمكننا التأكد من أن certbot يكتب فقط إلى دليله الخاص ولا يمكننا الكتابة إلى أي ملف في جذر الخادم.
ثم قم بتشغيل certbot مع الوسائط التالية ثم أضف جميع المضيفين الظاهريين الذين تريد دعمه من Merecat:
root@example:/var/www/ > certbot certonly --webroot --webroot-path /var/lib/letsencryptلمعرفة كيف نرى:
لإنشاء شهادة موقعة ذاتيا وتمكين السرية الأمامية الأمامية ، PFS ، أي Diffie-Helman Paramters (اختياري) ، استخدم أداة openssl كما هو موضح أدناه. لاحظ استخدام قشرة فرعية مع openssl.cnf حيث تكون معظم إعدادات الشهادة ، والأهم من ذلك أن نلاحظ استخدام subjectAltName ، أو SAN. هذا الأخير مطلوب من قبل معظم المتصفحات اليوم.
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 على عدد قليل من المكتبات الخارجية ، إذا تم تمكينه ، EG 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 ، و config 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 من الممكن تجميع Merecat المتقاطع لهدف آخر عن طريق تعيين علامة --host إلى البرنامج النصي تكوين. تم توثيق هذا بشكل جيد في وثائق GNU. ملاحظة: عادة ما يتم اكتشاف نظام --build تلقائيًا.
بنيات MERECAT صامتة افتراضيا. لإخراج المترجم التفصيلي ، قم بتعطيل الوضع الصامت مع
configure --disable-silent-rules، أو بناء معmake V=1.
يتكون Merecat من 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 Tiny/Turbo/Shrottling.