نحن نبني أغلب أعمالنا على خوادم مبنية على Apache أو NGNIX، وربما حان الوقت لتجربة خادم ويب جديد بدأ يحصد شعبية بسبب بساطته، وهو خادم Caddy.
وقد أُطلق هذا الخادم لأول مرة في 2015 مكتوبًابالكامل بلغة Go، وتعتمد تهيئته على caddyfile، وهي ملفات يسهل كتابتها وإدارتها كما سنرى في هذا المثال، وما حمّسنا له حقيقة هو أنه يتكامل مع Let’s Encrypt بشكل افتراضي ودون أي تهيئة يدوية.
مزايا Caddy
- Automatic HTTPS مفعّلة افتراضيًا من خلال Let’s Encrypt.
- HTTP/2 افتراضيًا.
- Static Files في مجلد العمل الحالي.
- كل أنواع الخوادم، والموجّهات-directives، ومزودو DNS، ومزايا أخرى، كل ذلك موجود في صورة إضافات.
- يمكن استخدامه كمكتبة في برامج أخرى بلغة Go.
- يمكن تهيئته ليشغّل أوامر خاصة بالنظام عند بدء التشغيل أو إيقافه.
- ملف تنفيذي واحد لا يحتاج إلى اعتماديات إلا فيما يتعلق بالنواة-kernel.
كل هؤلاء إضافة إلى مزايا أخرى عديدة، أما الآن فسنلقي نظرة على كيفية تثبيته واستخدامه على خادم أوبنتو 16.04.
تثبيت خادم ويب Caddy
يوفّر Caddy شفرة نصية-script للتثبيت، تحمّل وتثبت الملف التنفيذي له -فهو لا يحتاج إلى اعتماديات كما ذكرنا-، نفذ الأمر التالي لتنفيذ الشفرة:
$ curl https://getcaddy.com | bash وستسألك الشفرة أثناء التثبيت عن كلمة المرور من أجل الحصول على صلاحيات إدارية، فيكون الخرج هكذا: % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 5593 100 5593 0 0 3696 0 0:00:01 0:00:01 --:--:-- 3696 Downloading Caddy for linux/amd64... https://caddyserver.com/download/linux/amd64?plugins= Download verification OK Extracting... Putting caddy in /usr/local/bin (may require password) [sudo] password for gmolica: Caddy 0.10.6 Successfully installed
ستتغير gmolica إلى اسم المستخدم الخاص بك طبعًا، وسيكون Caddy مثبتًا وجاهزًا بمجرد انتهاء الشفرة من عملها. جدير بالذكر أن عملية التثبيت لن تطبق إعدادات أو تهيئة على مستوى النظام-system wide، لذا سيكون عليك تنفيذ هذا الجزء، كما سنرى فيما يلي.
تهيئة Caddy
سيعتبر Caddy أن المجلد الجذر للموقع هو المجلد الذي نفّذته منه، فإن نفّذت Caddy من مجلد $HOME فسيستخدمه كمجلد جذر له، وهذا يعني بعبارة أخرى أن من السهل استخدام Caddy في العمل على المواقع محلّيًا.
- لبدء Caddy:
$ caddy
- ستظهر الطرفية الرسالة التالية:
Activating privacy features... done. http://:2015 WARNING: File descriptor limit 1024 is too low for production servers. At least 8192 is recommended. Fix with "ulimit -n 8192".
لاحظ أن Caddy يعمل على مضيف محلي-localhost، في منفذ 2015.
قد يؤدي فتح صفحة http://your_server_IP:2015 -استبدل عنوان خادمك بـyour server IP-إلى صفحة خطأ 404، هذا بسبب أن المجلد الذي يستخدمه Caddy لا يحتوي على موقع، فيجب أن ننشئ تلك المجلدات المطلوبة أولًا:
إنشاء المجلدات المطلوبة
- أولًا، ننشئ مجلدًا يحتوي ملف caddyfile الأساسي:
# mkdir /etc/caddy
- نغير ملكيته إلى المستخدم الجذر ومجموعته إلى www-data:
# chown -R root:www-data /etc/caddy
- أنشئ مجلدًا ثانيًا ليخزن فيه Caddy شهادات SSL والمفاتيح الخاصة:
# mkdir /etc/ssl/caddy
- غير مالكه إلى www-data:
# chown -R www-data /etc/ssl/caddy
- غيّر صلاحياته كما يلي:
# chmod 0770 /etc/ssl/caddy
- والآن أنشئ المجلد الذي سيحتوي الموقع:
# mkdir /var/www
- وغيّر مالكه إلى www-data:
# chown www-data:www-data /var/www
تحميل ملف Caddy Unit
- لن يثبّت Caddy نفسه افتراضيًا كخدمة systemd، لكنه يوفّر رسميًا ملف unit، حمّله بالأمر التالي:
# curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service
- بفتح الملف، سنلاحظ هذه السطور:
; Letsencrypt-issued certificates will be written to this directory.
Environment=CADDYPATH=/etc/ssl/caddy
; Always set "-root" to something safe in case it gets forgotten in the Caddyfile.
ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
- لاحظ مسارات المجلدات في تلك السطور، لهذا قد أنشأنا المجلدات قبل قليل. والآن أنشئ ملفًا فارغًا باسم caddyfile:
# sudo touch /etc/caddy/Caddyfile
- نفّذ الأمر التالي كي يعمل Caddy عند الإقلاع:
# systemctl daemon-reload
# systemctl enable caddy
- تفقد حالته بهذا الأمر:
# systemctl status caddy
يجب أن يكون الخرج هكذا:
----------------------------------
â caddy.service - Caddy HTTP/2 web server
Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: en
Active: inactive (dead)
Docs: https://caddyserver.com/docs
السماح باتصالات HTTP وHTTPS
- سنسمح لاتصالات HTTP وHTTPS عبر UFW (Uncomplicated Firewall)، كي يتمكن Caddy من خدمة المستخدمين بشكل سليم، نفّذ هذه الأوامر في الطرفية للسماح بهذه الاتصالات:
# ufw allow http
# ufw allow https
اختبار Caddy
آخر خطوة هي اختبار Caddy للتأكد أن كل شيء تم بشكل سليم:
تعديل Caddyfile
لقد أنشأنا ملف caddyfile فارغ من قبل، الآن سنبدأ الكتابة فيه:
- افتح الملف باستخدام المحرر النصي الذي تفضّله:
# $EDITOR /etc/caddy/Caddyfile
- الصق هذا المحتوى في الملف:
example.com {
root /var/www
gzip
tls gmolica@example.com
}
ملاحظة: سطر tls يحتوي على عنوان بريد يستخدمه Caddy ليحصل على شهادات SSL من Let’s Encrypt.
- احفظ الملف وأغلقه.
- شغّل Caddy:
# systemctl start caddy
أنشئ صفحة ويب
- سننشئ صفحة ويب لاختبار Caddy:
$ echo '<h1>Website using Caddy</h1>' | sudo tee /var/www/index.html
استخدم نفس الجذر الذي ثبتنا فيه ملف caddyfile.
خاتمة
لقد رأينا الآن كيفية تثبيت واستخدام Caddy، ولاحظنا كيفية سهولة التثبيت وإنشاء ملف caddyfile لتخصيص سلوك الخادم. لاحظ أن سهولة الاستخدام يتبيّن فضلها في بيئات التشغيل المعقدة.
ترجمة -بتصرف- لمقال Caddy Web Server On Ubuntu 16.04 لصاحبه Giuseppe Molica
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.