وب سرور caddy چیست؟ + آشنایی با مراحل نصب سرور کدی
وب سرور caddy چیست؟ چگونه میتوان به سادهترین شکل به نصب کدی سرور اقدام کرد؟ در ادامه ما با پاسخ به تمامی این سوالات، به شما آموزش میدهیم که با نصب این برنامه از ویژگیهای و امتیازات آن استفاده نمایید؛ با ما همراه باشید.
وب سرور caddy چیست؟
وب سرور کدی به دلیل ویژگیهایی که دارد، میتواند گزینهی مناسبی برای میزبانی سایتها باشد؛ از جمله ویژگیها و امتیازات کدی سرور میتوان به مواردی که در ادامه عنوان میکنیم، اشاره کرد:
- دریافت و مدیریت خودکار گواهیهای TLS از Let’s Encrypt جهت فعال کردن HTTPS
- پشتیبانی از HTTP/2
نکتهای که لازم میدانیم در این نقطه به آن اشاره کنیم این است که در حال حاضر HTTPS به یک امر الزامی برای هر سیستم عاملی تبدیل شده است. بدین صورت که بدون استفاده از آن، در صورت ورود کاربر به وب سایت، موتورهای جستجو مانند کروم و فایرفاکس هشدار میدهند که وبسایت موردنظر ایمن نیست.
به طورکلی در دنیای امروزی وب و اینترنت، پروتکلهای امنی نقش مهمی را برعهده دارند. یکی از جمله مهمترین این پروتکلها که از آن نام بردیم، HTTPS است. اگر قصد دارید اطلاعات خود را محفوظ نگه دارید و نمیخواهید شخص ثالثی به دادههای شما و کاربرانتا دسترسی پیدا کند، پیشنهاد میکنیم فرصت مطالعهی مقالهی پروتکل https چیست را از دست ندهید.
پیش نیازها برای نصب وب سرور caddy
در این مقاله، ما به شما آموزش میدهیم که چگونه وب سرور caddy را از منبع با استفاده از xcaddy (یک ابزار سفارشی سازنده Caddy) ساخته و از آن برای میزبانی سایتی که توسط پروتکل HTTPS ایمن شده است، استفاده نمایید.
به یاد داشته باشید که برای نصب و کامپایل کردن آن به استفاده از Caddyfile و نصب افزونه نیاز است. در پایان مراحل نصب، دامنهی شما صفحات استاتیک را ارائه میدهد، در حالیکه با گواهینامههای رایگان TLS از Let’s Encrypt ایمن شده است. (اگر با معنا، مفهوم و کارایی وب سرور آشنایی ندارید،پیشنهاد میکنیم مقالهی وب سرور چیست را مطالعه نمایید)
موارد مورد نیاز برای نصب کدی سرور
- یک سرور اوبونتو 18.04 با دسترسی root
- یک نام دامنه یک رکورد dns
روش اول ساخت وب سرور caddy
در این مرحله، ما تلاش میکنیم تا Caddy را با استفاده از افزودن افزونهها و بدون تغییر کد منبع Caddy نصب نماییم. این کار، با استفاده از xcaddy انجام میشود که وب سرور caddy و افزونههای آن را بر اساس نیاز شما دانلود کرده و به ساخت آن اقدام مینماید.
cd /tmp
سپس، آخرین نسخه را با استفاده از این لینک دانلود کرده و پس از دانلود، تنها فایل باینری را استخراج کنید:
tar xvf xcaddy_0.1.8_linux_amd64.tar.gz xcaddy
در نهایت، فایل اجرایی xcaddy را به /usr/bin منتقل کنید:
sudo mv xcaddy /usr/bin
اکنون که xcaddy نصب شده است، Caddy آماده است:
mkdir ~/caddy
با اجرای دستور زیر به دایرکتوری بروید:
cd ~/caddy
برای ساخت آخرین نسخه Caddy از دستور زیر استفاده کنید:
xcaddy build
پس از اتمام آن، فایل اجرایی caddy در پوشه فعلی در دسترس شماقرار خواهد گرفت. برای نصب، آن را به /usr/bin منتقل کنید:
sudo mv caddy /usr/bin
میتوانید caddy را اجرا کنید تا مطمئن شوید که درست نصب شده است:
caddy version
خروجی شامل نسخهای از Caddy است که به تازگی کامپایل کردهاید:
Output v2.3.0 h1:fnrqJLa3G5vfxcxmOH/+kJOcunPLhSBnjgIvjXV/QTA=
با اجرای درست و دقیق تمامی این مراحل، شما caddyسرور را نصب و اجرا کردهاید. شما الان Caddy را ساخته و اجرا کردهاید.
روش دوم ساخت وب سرور caddy
sudo groupadd --system caddy
سپس یک کاربر جدید به نام caddy ایجاد کنید که متعلق به گروه caddy است:
sudo useradd --system \ --gid caddy \ --create-home \ --home-dir /var/lib/caddy \ --shell /usr/sbin/nologin \ --comment "Caddy web server" \ Caddy
کاربر جدید caddy
directory اصلی خود را ایجاد کرده و Ownership دایرکتوری را عوض کنید.
sudo chown root:root /usr/bin/caddy
با این کار، دیگر حسابها از تغییر فایل اجرایی جلوگیری میکنند. با این حال، حتی در حالی که کاربر ریشه، صاحب Caddy است، توصیه میشود آن را فقط با استفاده از سایر حسابهای غیرریشهای موجود در سیستم اجرا کند؛ همانطور که در مورد سرویس systemd چنین خواهد بود. این موضوع سبب میشود تا شما اطمینان حاصل کنید که در صورت به خطر افتادن وب سرور caddy (یا برنامه دیگری)، مهاجم و هکر نمیتواند باینری را تغییر دهد یا دستورات را به عنوان root اجرا کند.
در مرحله بعد، مجوزهای فایل باینری را روی 755 تنظیم کنید؛ این به root مجوزهای کامل خواندن، نوشتن و اجرای فایل را میدهد، در حالی که سایر کاربران فقط میتوانند آن را بخوانند و اجرا کنند:
sudo chmod 755 /usr/bin/caddy
یک دایرکتوری ایجاد کنید که در آن فایلهای پیکربندی سرور کدی را با اجرای دستور زیر ذخیره کنید:
sudo mkdir /etc/caddy
سپس، مجوزها را ست کنید:
sudo chown -R root:caddy /etc/caddy
تنظیم کاربر بهعنوان root
تنظیم کاربر بهعنوان root و گروه بهعنوان سرور کدی تضمین میکند که Caddy دسترسی خواندن و نوشتن به پوشه (از طریق گروه caddy) را خواهد داشت و تنها حساب کاربری superuser از حقوق یکسانی برای خواندن و تغییر برخوردار است.
در مرحله بعد، باید ارائه خودکار گواهی TLS را از طریق Let’s Encrypt فعال کنید. در زمان آمادهسازی برای ssl، یک دایرکتوری برای ذخیره هر گونه گواهینامه TLS که وب سرور caddy بدست میآورد ایجاد کرده و قوانین مالکیت مشابه دایرکتوری /etc/caddy را به آن بدهید:
sudo mkdir /etc/ssl/caddy sudo chown -R root:caddy /etc/ssl/caddy
Caddy باید بتواند گواهیها را در این فهرست نوشته و از آن بخواند تا در نهایت درخواستها را رمزگذاری کند. به همین دلیل، مجوزهای دایرکتوری /etc/ssl/caddy را تغییر دهید تا فقط توسط root و سرور کدی قابل دسترسی باشد:
sudo chmod 0770 /etc/ssl/caddy
سپس یک دایرکتوری برای ذخیره فایلهایی که Caddy میزبانی میکند، ایجاد کنید:
sudo mkdir /var/www
سپس، مالک و گروه دایرکتوری را روی سرور کدی قرار دهید:
sudo chown caddy:caddy /var/www
وب سرور caddy پیکربندی خود را از فایلی به نام Caddyfile که در /etc/caddy ذخیره شده است، میخواند. با اجرای دستور زیر فایل را ایجاد کنید:
sudo touch /etc/caddy/Caddyfile
اجرای فایل systemd unit در وب سرور caddy
برای نصب سرویس Caddy، فایل systemd unit را از مخزن Caddy GitHub به /etc/systemd/system با اجرای دستور زیر دانلود کنید:
sudo sh -c 'curl https://raw.githubusercontent.com/caddyserver/dist/master/init/caddy.service > /etc/systemd/system/caddy.service'
مجوزهای فایل service را تغییر دهید:
sudo chmod 644 /etc/systemd/system/caddy.service
سپس، برای شناسایی سرویس سرور کدی، systemd را دوباره راهاندازی کنید:
sudo systemctl daemon-reload
بررسی کنید که آیا systemd با اجرای وضعیت systemctl سرویس Caddy را شناسایی کرده است یا خیر:
sudo systemctl status caddy
در نهایت خروجی مشابه زیر را خواهید دید:
Output: caddy.service - Caddy Loaded: Loaded (/etc/systemd/system/caddy.service; disabled; preset vendor: enabled) Active: Disabled (Dead)
اگر همین خروجی را مشاهده کردید، سرویس جدید به درستی توسط systemd شناسایی شده است.
فایروال را راهاندازی کنید.
sudo ufw allow proto tcp from any to any port 80,443 Output Rule added Rule added (v6)
روش سوم: پیکربندی کدی سرور
در این بخش، پیکربندی اولیه Caddy را برای ارائه فایلهای استاتیک از خود مینویسیم.
با ایجاد یک فایل HTML اصلی در /var/www به نام index.html شروع کنید:
sudo nano /var/www/index.html <!DOCTYPE html> <html> <head> <title>Hello from Caddy!</title> </head> <body> <h1 style="font-family: sans-serif">This page is being served via Caddy</h1> </body> </html>
هنگامی که این فایل در یک مرورگر وب نشان داده میشود، عنوانی با متن This page is being served via Caddy نشان میدهد. تنیمات خود را ذخیره کرده و فایل را ببندید.
sudo nano /etc/caddy/Caddyfile http:// { root * /var/www encode gzip file_server }
این یک پیکربندی اولیه Caddy است و اعلام میکند که تمام ترافیک HTTP به سرور شما باید با فایلهای (file_server) از /var/www (که بهعنوان root مشخص شده است) ارائه و با استفاده از gzip فشرده شود تا زمان بارگذاری صفحه در سمت مشتری کاهش یابد. وقتی کارتان تمام شد، فایل را ذخیره و ببندید.
برای آزمایش اینکه همه چیز به درستی کار میکند، سرویس Caddy را راهاندازی کنید:
sudo systemctl start caddy
در مرحله بعد، systemctl status را اجرا کنید تا اطلاعاتی در مورد وضعیت سرویس Caddy پیدا کنید:
sudo systemctl status caddy