در این آموزش از سری مقالات آموزش لینوکس Centos 7 با نصب وب سرور Caddy روی سرور CentOS 7 همراه شما هستیم.
Caddy وب سرور جدیدی است که با زبان GO نوشته شده است به همین دلیل باینریهای آن کاملا مستقل بوده و روی هر پلتفرمی اجرا میشود. برخی از مزایای این وب سرور بصورت زیر میباشد.
- Caddy یک وب سرور سبک است و به منابع کمتری نیاز دارد.
- دارای کانفیگ آسان است.
- HTTP/2.0 را پشتیبانی میکند.
- این وب سرور تنها وب سروری هست که بصورت پیشفرض از HTTPS استفاده میکند.
- برای پردازش محتوای استاتیک خیلی سریع است.
در این آموزش به نصب و کانفیگ Caddy بعنوان یک سرویس روی سرور CentOS 7 میپردازیم.
نصب و کانفیگ Caddy روی سرور CentOS 7
مراحل نصب و کانفیگ Caddy روی سرور CentOS 7 بصورت زیر میباشد.
گام اول: باینری های Caddy را دانلود نمایید.
اسکریپت زیر را اجرا کنید. این اسکریپت باینریهای Caddy را دانلود کرده و آنها را در PATH اجرایی سرور شما قرار خواد داد.
curl https://getcaddy.com | bash
برای دیدن محل فایلهای باینری Caddy میتوانید از دستور زیر استفاده نمایید.
which caddy
خروجی دستور فوق باید مشابه خروجی زیر باشد.
/usr/local/bin/caddy
گام دوم: ایجاد سرویس Caddy
Caddy خودش را مانند یک سرویس نصب نمیکند. این به این معنی هست که در زمان ریبوت سیستم بصورت اتوماتیک استارت نمیشود. در مراحل زیر یک کاربر اختصاصی برای Caddy ایجاد کرده و فایلهای کانفیگ آن را در مکان های مناسب قرار داده و مجوزهای فایلها را بدرستی ست میکنیم.
در صورتی که فایلهای باینری را با کاربر روت دانلود نکرده اید باید مجوزهای فایلهای باینری را با استفاده از دستورات زیر تغییر دهید.
chown root:root /usr/local/bin/caddy
chmod 755 /usr/local/bin/caddy
با استفاده از دستور زیر به باینریها امکان کار با پورتهایی با شماره کمتر از 1024 را بدهید.
setcap 'cap_net_bind_service=+ep' /usr/local/bin/caddy
حال برای Caddy یوزر و گروهی را ایجاد مینماییم.
groupadd caddy
useradd \
> -g caddy \
> --home-dir /var/www --no-create-home \
> --shell /usr/sbin/nologin \
> --system caddy
حال باید تعدادی دایرکتوری ایجاد نموده و دسترسیها و مالک آنها را ست نماییم.
دستورات زیر را برای ایجاد دایرکتوری اصلی Caddy که فایل های کانفیگ را در این دایرکتوری قرار خواهیم داد اجرا نمایید و مجوزهای لازم را اعمال نمایید.
mkdir /etc/caddy
chown -R root:caddy /etc/caddy
برای نگهداری تنظیمات SSL دایرکتوری SSL را ایجاد مینماییم.
mkdir /etc/ssl/caddy
chown -R caddy:root /etc/ssl/caddy
chmod 770 /etc/ssl/caddy
برای Caddy دایرکتوری home ایجاد کرده و مجوز دسترسی را اضافه نمایید.
mkdir /var/www
chown -R caddy:caddy /var/www
chmod -R 555 /var/www
در نهایت میتوانیم فایل caddy.service را ایجاد کنیم. برای ایجاد فایل به دایرکتوری زیر بروید.
cd /etc/systemd/system/
فایلی با نام “caddy.service” ایجاد نمایید.
nano caddy.service
تنظیمات زیر را داخل فایل قرار داده و ذخیره کرده و خارج شوید.
[Unit]Description=Caddy HTTP/2 web serverDocumentation=https://caddyserver.com/docsAfter=network-online.targetWants=network-online.target systemd-networkd-wait-online.service [Service]Restart=on-failureStartLimitInterval=86400StartLimitBurst=5 ; User and group the process will run as.User=caddyGroup=caddy ; 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/tmpExecReload=/bin/kill -USR1 $MAINPID ; Limit the number of file descriptors; see `man systemd.exec` for more limit settings.LimitNOFILE=1048576; Unmodified caddy is not expected to use more than that.LimitNPROC=64 ; Use private /tmp and /var/tmp, which are discarded after caddy stops.PrivateTmp=true; Use a minimal /devPrivateDevices=true; Hide /home, /root, and /run/user. Nobody will steal your SSH-keys.ProtectHome=true; Make /usr, /boot, /etc and possibly some more folders read-only.ProtectSystem=full; … except /etc/ssl/caddy, because we want Letsencrypt-certificates there.; This merely retains r/w access rights, it does not add any new. Must still be writable on the host!ReadWriteDirectories=/etc/ssl/caddy ; The following additional security directives only work with systemd v229 or later.; They further retrict privileges that can be gained by caddy. Uncomment if you like.; Note that you may have to add capabilities required by any plugins in use.;CapabilityBoundingSet=CAP_NET_BIND_SERVICE;AmbientCapabilities=CAP_NET_BIND_SERVICE;NoNewPrivileges=true [Install]WantedBy=multi-user.target
با استفاده از دستور زیر مجوزهای لازم را ست نمایید.
chown root:root /etc/systemd/system/caddy.service
chmod 644 /etc/systemd/system/caddy.service
برای اعمال تغییرات، systemd را ریست نمایید.
systemctl daemon-reload
حال میتوانید با استفاده از دستورات زیر Caddy را بعنوان سرویس استفاده نمایید.
systemctl enable caddy
systemctl start caddy
systemctl status caddy
گام سوم: کانفیگ ساده Caddy
حال که سرویس Caddy را ایجاد کردیم میخواهیم Caddy را کانفیگ نماییم تا روی پورت 80 پروتکل HTTP برای ما سرویس دهی نماید. برای انجام اینکار باید در فایل Caddyfile تنظیماتی را اضافه نماییم. این فایل در دایرکتوری /etc/caddy/ قرار دارد. با دستور زیر فایل را باز کنید.
nano /etc/caddy/Caddyfile
با کانفیگ زیر سرویس Caddy را وادار به اجرا روی پورت 80 کرده و var/www/ را بعنوان دایرکتوری ریشه آن تعریف مینماییم.
نکته: مقدار قرمر زا با آدرس IP یا نام دامنه خود جایگزین نمایید.
Your_Domain_Or_IP_Address:80root /var/www
فایل را ذخیره کرده و خارج شوید.
با دستور زیر سرویس Caddy را ریستارت نمایید.
systemctl restart caddy
با استفاده از دستور زیر به داریکتوری ریشه Caddy میرویم.
cd /var/www
با استفاده از دستور زیر یک فایل index.html برای تست ایجاد نمایید.
nano index.html
کد زیر را داخل آن قرار داده و ذخیره نموده و خارج شوید.
!OOOps Caddy is installed and works correctly
حال برای تست کارکرد درست Caddy میتوانید نام دامنه یا آدرس IP خود را در مرورگر وارد نموده تا صفحه Welcome وب سرور Caddy را مشاهده نمایید.
نکته : در صورتی که صفحه Welcome نمایش داده نشد ، فایروال Centos خود را تنظیم و پورت 80 و 443 را بر روی آن باز کنید.
در این آموزش موفق به نصب وب سرور Caddy روی سرور CentOS 7 شدید. امیدوارم این آموزش برای شما مفید بوده باشد.
در آموزشهای آینده در مورد کار با این وب سرور بیشتر توضیح خواهیم داد.
کاربر گرامی شما میتوانید سؤالات مربوط به این آموزش را در بخش کامنتها عنوان کرده و در همین قسمت پاسخ خود را دریافت کنید.