اذهب إلى المحتوى

نحن نبني أغلب أعمالنا على خوادم مبنية على 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


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...