خادم Caddy (أو Caddy Web) هو خادم ويب مفتوح المصدر مكتوب بلغة GoLang ويدعم HTTP/2. ويستخدم مكتبة GoLang القياسية لتوفير وظيفة HTTP. ومن الميزات البارزة في Caddy أن HTTPS ممكّن افتراضيًا، وهو أول خادم ويب يوفر ميزات HTTPS دون تكوين إضافي.

بالمقارنة مع خوادم الويب شائعة الاستخدام مثل Nginx وApache، فإن أكبر ميزة في Caddy هي أنه سهل النشر، فهو يحتوي على وحدة خادم الويب الأساسية apache أو nginx، كما أن لديه بعض الوظائف الفريدة، مثل: HTTP/. 2، HTTPS التلقائي، متعدد النواة، Websockets، Markdown، IPv6 والمزيد.

يمكن استخدام Caddy لمواقع الويب الثابتة والديناميكية. بالطبع، رأى العديد من الأشخاص أن Caddy سهل التثبيت والنشر. فهم يدمجون Caddy مع العديد من التطبيقات مثل أقراص الشبكة والتنزيلات، وهذا لا يستفيد فقط من عملية النشر والتكوين البسيطة لـ Caddy ، ولكنه يعمل أيضًا على زيادة حفظ موارد الخادم إلى الحد الأقصى والتركيز على تطوير وإدارة تطبيقات الطرف الثالث.
خادم الويب خفيف الوزن من Caddy بأعلى سعة - نشر تلقائي لـ HTTPS لمدة دقيقة واحدة لموقع الويب وتطبيقات قرص الشبكة

ستتناول هذه المقالة كيفية تثبيت خادم Caddy واستخدامه، والمزيد من أدوات إنشاء مواقع الويب والبرامج النصية، بالإضافة إلى:

  1. مقارنة بين ثلاثة مديرين ممتازين للملفات عبر الإنترنت (قائمة الأدلة) - Directory Lister وh5ai وFileRun
  2. تثبيت وتكوين التدخين - أداة مجانية لمراقبة أداء الشبكة مفتوحة المصدر، نشر مرئي رئيسي/تابع
  3. برنامج التثبيت OneinStack بنقرة واحدة - يمكنك بسهولة نشر شهادة Let's Encrypt وتكوين موقع HTTPS

ملاحظة: تم التحديث في 21 فبراير 2018 ، إذا كنت تبحث عن برنامج قرص شبكة مجاني، يمكنك أيضًا تجربة ذلك: استخدم Pydio لإنشاء مساحة تخزين سحابية خاصة مجانية - يمكن للمزامنة التلقائية متعددة المحطات تشغيل مقاطع الفيديو الموسيقية عبر الإنترنت.

1. طريقة تركيب العلبة

الموقع الرسمي لكادي :

  1. موقع الكتروني: https://caddyserver.com/
  2. التحميل: https://caddyserver.com/download
  3. جيثب: https://github.com/mholt/caddy

لا توجد سوى ثلاث خطوات لتثبيت Caddy ونشره. أولاً، حدد إصدار Caddy وفقًا لنظام تشغيل الخادم الخاص بك وقم بتنزيله (يتم دعم كل من Linux وWindows).

2. طريقة تكوين العلبة

2.1  إنشاء ملف التكوين

قم أولاً بإنشاء ملف تكوين ووضعه في /etc/caddy.

sudo mkdir /etc/caddy
sudo touch /etc/caddy/Caddyfile
sudo chown -R root:www-data /etc/caddy

بالإضافة إلى ملف التكوين، سيقوم caddy تلقائيًا بإنشاء شهادة SSL ويتطلب مجلدًا لوضع شهادة SSL.

sudo mkdir /etc/ssl/caddy
sudo chown -R www-data:root /etc/ssl/caddy
sudo chmod 0770 /etc/ssl/caddy

نظرًا لأنه سيتم وضع المفتاح الخاص في مجلد ssl، يتم تعيين الأذونات على 770 لمنع المستخدمين الآخرين من الوصول إليه. وأخيرًا، قم بإنشاء الدليل الذي يتم وضع ملفات موقع الويب فيه، إذا كان موجودًا بالفعل، فلا داعي لإنشائه.

sudo mkdir /var/www
sudo chown www-data:www-data /var/www

2.2  إعداد بدء التشغيل

بعد إنشاء هذه الملفات والأدلة، نحتاج إلى تكوين العلبة كخدمة بحيث يمكن تشغيلها تلقائيًا عند التمهيد وتكون إدارتها سهلة. نظرًا لأن معظم التوزيعات تستخدم systemd حاليًا، سأتحدث فقط عن كيفية تكوين systemd هنا.

sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service   # 从 github 下载 systemd 配置文件
sudo systemctl daemon-reload        # 重新加载 systemd 配置
sudo systemctl enable caddy.service # 设置 caddy 服务自启动
sudo systemctl status caddy.service # 查看 caddy 状态

2.3  تحرير ملف العلبة.

يمكنك استخدام vim /etc/caddy/Caddyfile مباشرةً لتعديل ملف Caddyfile، أو يمكنك تعديله على جهاز الكمبيوتر الخاص بك وتحميله إلى الخادم. إذا قمت بتعديل ملف Caddyfile ووجدت أنه لا يسري مفعوله، فستحتاج إلى تنفيذ sudo systemctl Restart caddy.service لإعادة تشغيل العلبة.

2.4  تنسيق ملف العلبة

تنسيق Caddfile بسيط نسبيًا. أولاً، يجب أن يكون السطر الأول هو عنوان موقع الويب، على سبيل المثال:

localhost:8080

أو

wzfou.com

يمكن أن يحمل العنوان رقم منفذ، ثم سيفتح caddy خدمة http فقط على هذا المنفذ، ولكن ليس https. إذا لم تتم كتابة رقم المنفذ، فسيقوم caddy بربط المنفذين 80 و443 بشكل افتراضي، ويبدأ تشغيل خدمات http وhttps في. نفس الوقت. يمكن أن يتبع العنوان مجموعة من التعليمات. التنسيق الأساسي لملف Caddyfile هو هذا، ويتكون من عنوان موقع ويب وتعليمات.

2.5  التوجيه

الغرض من التوجيه هو تمكين وظائف معينة للموقع. هناك ثلاثة أشكال للتعليمات، دعونا نتحدث أولاً عن أبسط التعليمات بدون معلمات، مثل:

wzfou.com    
gzip

gzip في السطر الثاني عبارة عن تعليمات، مما يعني تشغيل وظيفة ضغط gzip، بحيث يمكن لموقع الويب تقليل حركة المرور عند نقل صفحات الويب. تنسيق الأمر الثاني هو أمر بمعلمات بسيطة:

wzfou.com
gzip
log /var/log/caddy/access.log
tls iwzfou@gmail.com
root /var/www/

في السطر الثالث، سيعمل أمر السجل على تمكين وظيفة السجل لموقع الويب. تخبر المعلمات بعد أمر السجل العلبة بمكان تخزين ملف السجل. يخبر الأمر tls الموجود في السطر الرابع العلبة بتمكين https لموقع الويب والتقدم تلقائيًا للحصول على شهادة. معلمة البريد الإلكتروني التالية هي إبلاغ CA بعنوان البريد الإلكتروني لمقدم الطلب. (سيستخدم العلبة Let's Encrypt افتراضيًا للتقدم بطلب للحصول على شهادة وتجديدها، وهو أمر مريح للغاية)

بالإضافة إلى ذلك، قد يكون هناك أكثر من معلمة بسيطة، مثل توجيه redir:

wzfou.com
gzip
log /var/log/caddy/access.log
tls /etc/ssl/cert.pem /etc/ssl/key.pem
root /var/www/
redir / https://wzfou.com/archive/{uri} 301

يأخذ أمر redir أعلاه ثلاث معلمات، مما يعني استخدام إعادة التوجيه 301 لجميع الطلبات. هذا الأمر مفيد جدًا عند تغيير اسم المجال لموقع الويب. بالإضافة إلى ذلك، تغير الأمر tls، فهو لا يمرر معلمة البريد الإلكتروني فحسب، بل يمرر أيضًا مسار الشهادة والمفتاح الخاص على التوالي. وبهذه الطريقة، لن يتقدم caddy تلقائيًا للحصول على شهادة، ولكنه سيستخدم الشهادة المقدمة بواسطة الطريق.

في هذا المثال، يتم استخدام العناصر النائبة مثل {uri أيضًا. يمكن العثور على قائمة مفصلة هنا: https://caddyserver.com/docs/placeholders. النوع الأخير من التعليمات يأخذ معلمات معقدة. قد يحتوي هذا النوع من التعليمات على العديد من المعلمات، لذلك يجب أن تكون محاطة بزوج من الأقواس المتعرجة، مثل تعليمات الرأس:

wzfou.com
gzip
log /var/log/caddy/access.log
tls iwzfou@gmail.com
root /var/www/
header /api {
    Access-Control-Allow-Origin  *
    Access-Control-Allow-Methods "GET, POST, OPTIONS"
    -Server
}
fastcgi / 127.0.0.1:9000 php {
    index index.php
}
rewrite {
    to {path} {path}/ /index.php?{query}
}

تمثل توجيهات الرأس في الأسطر 6-10 إضافة Access-Control-Allow-Origin وAccess-Control-Allow-Methods< إلى جميع طلبات /api/xxx > يمكن لهذين الرأسين دعم الوصول عبر نطاق جافا سكريبت. يمثل السطر 9 حذف رأس الخادم لمنع الآخرين من رؤية نوع الخادم.

تستخدم الأسطر 11-13 تعليمات fastcgi، مما يعني أن الطلب يتم تمريره إلى البرامج الخلفية مثل php وروبي من خلال fastcgi.

تستخدم الأسطر 14-15 أمر إعادة الكتابة. وظيفة هذا الأمر هي إعادة توجيه داخليًا إلى الخادم . بعد المعلمة التالية إلى ، توجد ثلاث معلمات أخرى إلى حد ما مشابه.try_files لـ nginx. أخبر العلبة أن تتحقق أولاً مما إذا كان هناك ملف يتوافق مع {path} في الدليل الجذر لعنوان URL /var/www. إذا لم يكن هناك ملف يتوافق مع {path}، فتحقق مما إذا كان هناك دليل يتوافق مع {path}. لا يوجد شيء، قم بإرساله إلى ملف الإدخال Index.php. تُستخدم هذه الميزة بشكل عام في إطار عمل MVC الخاص بـ PHP.

2.6  موقع ويب متعدد النطاقات

ما ورد أعلاه هو جميع عناوين URL لاسم نطاق واحد، فماذا لو تم نشر أسماء نطاقات متعددة على نفس الخادم؟ الأمر بسيط جدًا، كل ما عليك فعله هو توسيعه باستخدام قوس متعرج بعد اسم النطاق، كما يلي:

wzfou.com {
    gzip
    log /var/log/caddy/wzfou_com.log
    tls iwzfou@gmail.com
    root /var/www/
    header /api {
        Access-Control-Allow-Origin  *
        Access-Control-Allow-Methods "GET, POST, OPTIONS"
        -Server
   }
    fastcgi / 127.0.0.1:9000 php {
        index index.php
    }
    rewrite {
        to {path} {path}/ /index.php?{query}
    }
}
wzfou.com{
    tls iwzfou@gmail.com
    log /var/log/caddy/wzfou_com.log
    redir / https://wzfou.com/{uri} 301
}

هذا هو التكوين الأساسي للعلبة لمزيد من المعلومات، يرجى الرجوع إلى وثائق الموقع الرسمي: https://caddyserver.com/docs.

3. برنامج نصي لبناء موقع الويب بنقرة واحدة

بعد النظر إلى تكوين Caddy أعلاه، قد يتساءل بعض الأصدقاء عما إذا كان هناك برنامج نصي Caddy لإنشاء موقع ويب بنقرة واحدة؟

3.1 مثبت خادم الويب Caddy

  1. عنوان المشروع: https://github.com/sayem314/Caddy-Web-Server-Installer

متطلبات النظام: Ubuntu 14.x، 15.x، 16.x، Debian 7.x , 8.x, 9.x, CentOS 6.8, 7.2. قم بتشغيل الأمر التالي:

wget https://git.io/vra5C -O - -o /dev/null|bash

ثم استخدم الأمر التالي للقيام بذلك:

caddy start  #开启Caddy Web Server
caddy stop  #停止Caddy Web Server
caddy reload  #重载Caddy Web Server
caddy restart  #重启Caddy Web Server
caddy status  #查看Caddy Web Server状态
caddy install  #安装Caddy Web Server
caddy edit  #编辑配置文件Caddyfile
caddy service  #使Caddy Web Server成为一项服务(upstart/systemd)
caddy update  #升级Caddy Web Server
caddy delete  #卸载Caddy and data
caddy about  #关于Caddy Web Server
caddy version  #检测脚本/Caddy/PHP5-fpm版本信息

أمر تثبيت البرنامج المساعد:

caddy install http.cache,http.filemanager,http.ipfilter,http.ratelimit

عند تثبيت caddy، سيُطلب منك إدخال اسم النطاق وعنوان البريد الإلكتروني (سيتم إصدار ssl لك تلقائيًا)، ثم استخدم الأمر لبدء caddy!

虚拟主机文件夹:/var/caddywww
配置文件夹:/etc/Caddyfile

هذه هي الواجهة للتثبيت الناجح:

يمكن أيضًا إدراج الصوت والفيديو وما إلى ذلك عبر الإنترنت.

4. ملخص

يستغرق استخدام Caddy كخادم ويب بضع دقائق فقط للتثبيت والتشغيل. بالطبع، يمكن لـ Caddy أيضًا تنفيذ التخزين المؤقت والنسخ المتطابق وما إلى ذلك، كما أن قواعد تكوين Caddy بسيطة نسبيًا، ولا تحتاج إلا إلى قضاء بضع دقائق في الدراسة يمكن نسخ الوثيقة بنفسك.

سيقوم Caddy تلقائيًا بإصدار شهادة Let's Encrypt مجانًا، لكنك تحتاج إلى حل اسم المجال للخادم أولاً، وإلا فسوف تحصل على خطأ عند إضافة مضيف افتراضي. ما إذا كان يمكن استخدام Caddy كبيئة إنتاج رسمية لا يزال موضع تساؤل، ولكن لا توجد مشكلة في استخدام Caddy كخادم HTTP بسيط.

اترك رد