Caddy ile Ubuntu 18.04 Üzerinde Web Sitesi Barındırma: Kapsamlı Bir Rehber
Web siteleri ve uygulamaları barındırmak için geleneksel olarak Nginx veya Apache gibi sunucular tercih edilse de, son yıllarda Caddy gibi modern alternatifler, özellikle basitlikleri ve otomatik HTTPS desteği ile dikkat çekmektedir. Bu kapsamlı rehberde, Ubuntu 18.04 sunucusu üzerinde Caddy web sunucusunu kullanarak bir web sitesini nasıl barındıracağınızı adım adım öğreneceksiniz. Caddy’nin kurulumundan yapılandırmasına, güvenlik duvarı ayarlarından gelişmiş özelliklerine kadar her detayı inceleyeceğiz.
Caddy, Go dilinde yazılmış, hızlı, kullanımı kolay ve performans odaklı bir web sunucusudur. Özellikle otomatik HTTPS (Let’s Encrypt aracılığıyla) özelliği sayesinde, SSL/TLS sertifikalarıyla uğraşma yükünü tamamen ortadan kaldırır. Bu, hem geliştiriciler hem de sistem yöneticileri için büyük bir kolaylık sağlar. Ubuntu 18.04, uzun süreli destek (LTS) sunan stabil bir işletim sistemi olduğu için, Caddy ile güçlü ve güvenilir bir web sunucusu altyapısı oluşturmak için ideal bir platformdur.
Caddy ve Neden Caddy?
Caddy, web sunucuları dünyasında nispeten yeni bir oyuncu olmasına rağmen, sunduğu benzersiz özelliklerle hızla popülerlik kazanmıştır. Geleneksel web sunucuları olan Nginx ve Apache, geniş özellik setleri ve esneklikleri ile bilinirken, Caddy özellikle kurulum ve yapılandırma kolaylığına odaklanmıştır.
Caddy’nin en belirgin avantajı, web siteniz için otomatik olarak Let’s Encrypt sertifikaları sağlaması ve bunları otomatik olarak yenilemesidir. Bu, HTTPS’i varsayılan olarak etkinleştirir ve manuel sertifika yönetimiyle ilişkili karmaşıklığı ortadan kaldırır. Geleneksel sunucularda HTTPS yapılandırması genellikle birden fazla adım ve dikkatli dosya düzenlemesi gerektirirken, Caddy’de bu işlem tek bir satır yapılandırma ile halledilebilir.
Ayrıca Caddy, tek bir ikili dosya olarak dağıtılır ve bu da onu oldukça hafif ve taşınabilir kılar. Modüler yapısı sayesinde ihtiyaç duymadığınız özellikleri yüklemenize gerek kalmaz, bu da kaynak tüketimini minimize eder. Özellikle küçük ve orta ölçekli projeler, API’ler, tek sayfalık uygulamalar veya geliştirme ortamları için Caddy, kurulum ve bakım kolaylığı açısından rakipsizdir. Caddy, statik dosya sunumundan ters proxy (reverse proxy) işlevlerine, yük dengeleyiciden HTTP/2 desteğine kadar modern web uygulamalarının ihtiyaç duyduğu tüm temel özellikleri sunar. Tüm bu özellikler, Caddy’yi hem yeni başlayanlar hem de deneyimli profesyoneller için cazip bir seçenek haline getirmektedir.
Ön Gereksinimler
Bu rehbere başlamadan önce, aşağıdaki ön gereksinimleri karşıladığınızdan emin olun:
* Ubuntu 18.04 Sunucusu: İnternet erişimi olan ve SSH üzerinden bağlanabileceğiniz bir Ubuntu 18.04 sunucusu. Bu bir sanal makine (VM), bir bulut sunucusu (AWS, DigitalOcean, Azure, Vultr vb.) veya fiziksel bir sunucu olabilir.
* SSH Erişimi: Sunucunuza SSH ile bağlanabilmeniz gerekmektedir. Genellikle ssh kullanıcıadı@sunucu_ip_adresi komutuyla yapılır.
* Sudo Yetkileri: Kurulum ve yapılandırma adımları için sudo yetkisine sahip bir kullanıcı hesabınız olmalıdır. Root kullanıcısı olarak doğrudan çalışmak yerine, sudo kullanmak daha güvenli bir yaklaşımdır.
* Alan Adı (Domain Name): Web sitenizi barındırmak için bir alan adına ihtiyacınız olacak (örneğin, example.com). Caddy’nin otomatik HTTPS özelliğini kullanabilmek için bu alan adının gerçek bir alan adı olması ve genel internet üzerinden erişilebilir olması gerekmektedir.
* DNS Yapılandırması: Alan adınızın DNS kayıtlarının (A kaydı), Ubuntu sunucunuzun genel IP adresini işaret ettiğinden emin olun. Bu, Caddy’nin Let’s Encrypt ile sertifika alabilmesi için kritik öneme sahiptir. DNS değişikliklerinin internet genelinde yayılması (propagation) biraz zaman alabilir (birkaç dakika ile birkaç saat arası). Bu nedenle, DNS ayarlarınızı önceden yapmanız önerilir.
Bu ön gereksinimleri tamamladıktan sonra, Caddy kurulumuna ve yapılandırmasına geçmeye hazır olacaksınız.
Caddy Kurulumu
Caddy’yi Ubuntu 18.04 üzerine kurmak oldukça basittir. Caddy geliştiricileri, APT deposu aracılığıyla kolay kurulum sağlamaktadır.
Sistem Güncelleme
Kuruluma başlamadan önce, sunucunuzdaki paket listelerini güncelleyip mevcut paketleri yükseltmek iyi bir uygulamadır. Bu, herhangi bir uyumluluk sorununu önlemeye yardımcı olur.
sudo apt update
sudo apt upgrade -y
Caddy Deposu Ekleme
Caddy’nin resmi APT deposunu sisteminize eklemeniz gerekmektedir. Bu, en güncel Caddy sürümünü doğrudan apt komutuyla kurmanızı sağlar.
İlk olarak, Caddy’nin GPG anahtarını indirin ve APT anahtar zincirinize ekleyin:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Ardından, Caddy deposunu kaynak listenize ekleyin:
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
Depoyu ekledikten sonra, yeni paketi bulabilmek için paket listesini tekrar güncelleyin:
sudo apt update
Caddy Kurulumu
Artık Caddy’yi apt komutuyla kolayca kurabilirsiniz:
sudo apt install caddy -y
Bu komut, Caddy web sunucusunu ve gerekli bağımlılıkları sisteminize kuracaktır. Kurulum tamamlandığında, Caddy otomatik olarak bir sistem hizmeti olarak yapılandırılır ve başlatılır.
Caddy Hizmetini Kontrol Etme
Caddy’nin başarıyla kurulup çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
systemctl status caddy
Çıktıda active (running) ibaresini görmelisiniz. Bu, Caddy hizmetinin başarıyla çalıştığı anlamına gelir. Eğer çalışmıyorsa, systemctl start caddy komutuyla başlatmayı deneyebilirsiniz.
Caddy’nin sürümünü kontrol etmek için:
caddy version
Bu adımlarla Caddy’yi Ubuntu 18.04 sunucunuza başarıyla kurmuş oldunuz. Bir sonraki adım, güvenlik duvarını yapılandırmak ve web sitenizin dosyalarını hazırlamaktır.
Güvenlik Duvarı Yapılandırması (UFW)
Sunucunuzda UFW (Uncomplicated Firewall) etkinse, web trafiğinin sunucunuza ulaşabilmesi için HTTP (80) ve HTTPS (443) portlarını açmanız gerekmektedir. Bu adımı atlamak, web sitenize dışarıdan erişimi engelleyecektir.
Öncelikle, UFW’nin durumunu kontrol edin:
sudo ufw status
Eğer UFW etkin değilse, etkinleştirmeniz önerilir:
sudo ufw enable
UFW etkinse, aşağıdaki komutlarla gerekli portları açın:
sudo ufw allow http
sudo ufw allow https
Bu komutlar, sırasıyla 80 (HTTP) ve 443 (HTTPS) portlarından gelen tüm trafiğe izin verir. Değişikliklerin uygulandığını doğrulamak için UFW durumunu tekrar kontrol edebilirsiniz:
sudo ufw status
Çıktıda 80/tcp ALLOW Anywhere ve 443/tcp ALLOW Anywhere gibi satırları görmelisiniz. Bu, web sunucunuzun artık gelen HTTP ve HTTPS isteklerini kabul etmeye hazır olduğu anlamına gelir.
Web Sitesi Dosyalarını Hazırlama
Caddy’nin bir web sitesini sunabilmesi için, web sitesi dosyalarınızın sunucunuzda bir dizinde bulunması gerekir. Bu rehberde basit bir statik HTML sitesi oluşturacağız.
Örnek Bir Statik HTML Sitesi Oluşturma
Varsayılan olarak, Caddy’nin sistem hizmeti /var/www/html dizinini kullanır. Bu dizini kullanabilir veya kendi tercih ettiğiniz bir dizini oluşturabilirsiniz. Güvenlik ve düzenlilik açısından /var/www/ altında alan adınıza özel bir dizin oluşturmak iyi bir uygulamadır.
Örneğin, example.com alan adınız için bir dizin oluşturalım:
sudo mkdir -p /var/www/example.com
Şimdi bu dizine basit bir index.html dosyası oluşturalım:
sudo nano /var/www/example.com/index.html
Açılan editöre aşağıdaki HTML içeriğini yapıştırın:
Caddy ile Web Sitesi
Bu web sitesi Caddy sunucusu üzerinde başarıyla barındırılıyor.
Ubuntu 18.04 ve Caddy ile harika bir kombinasyon!
Dosyayı kaydedip kapatın (CTRL+X, Y, Enter).
Dosya İzinleri ve Sahipliği
Web sunucusunun bu dosyalara erişebilmesi için doğru dosya izinleri ve sahipliği ayarlamak önemlidir. Caddy, genellikle caddy adında bir sistem kullanıcısı ve grubu altında çalışır. Bu nedenle, web sitesi dosyalarının bu kullanıcı tarafından okunabilir olması gerekir.
Web sitesi dizininin sahipliğini caddy kullanıcısına ve grubuna atayın:
sudo chown -R caddy:caddy /var/www/example.com
Dosya izinlerini de uygun şekilde ayarlayın. Genellikle dizinler için 755 ve dosyalar için 644 izinleri yeterlidir:
sudo chmod -R 755 /var/www/example.com
Bu adımlarla web sitesi dosyalarınızı hazırlamış oldunuz. Artık Caddy’yi bu dosyaları sunacak şekilde yapılandırmaya geçebiliriz.
Caddyfile Yapılandırması
Caddy’nin ana yapılandırma dosyası Caddyfile olarak adlandırılır. Bu dosya, Caddy’ye hangi alan adları için hangi dizinlerden dosya sunacağını, hangi ters proxy’leri yöneteceğini ve diğer tüm ayarları bildirir.
Caddyfile’ın Konumu ve Temel Yapısı
Caddy’nin sistem hizmeti olarak çalıştığında varsayılan Caddyfile konumu /etc/caddy/Caddyfile şeklindedir. Bu dosyayı düzenleyerek web sitenizin yapılandırmasını yapacaksınız.
Bir Caddyfile’ın temel yapısı genellikle aşağıdaki gibidir:
{
}
Örneğin, example.com alan adı için /var/www/example.com dizininden statik dosyaları sunan basit bir Caddyfile şu şekilde görünür:
example.com {
root * /var/www/example.com
file_server
}
Bu yapılandırma, example.com adresine gelen tüm istekler için /var/www/example.com dizinini kök dizin olarak belirler ve file_server direktifi ile bu dizindeki dosyaları sunar. Caddy, bu yapılandırmayı gördüğünde otomatik olarak Let’s Encrypt aracılığıyla example.com için bir HTTPS sertifikası alır ve HTTPS üzerinden hizmet verir.
Basit Bir Statik Site İçin Caddyfile Örneği
Şimdi, daha önce oluşturduğumuz index.html dosyasını sunmak için /etc/caddy/Caddyfile dosyasını düzenleyelim:
sudo nano /etc/caddy/Caddyfile
Dosyanın içeriğini tamamen silin ve aşağıdaki yapılandırmayı yapıştırın (alan adınızı kendi alan adınızla değiştirmeyi unutmayın):
# Global ayarlar (isteğe bağlı, ama faydalı olabilir)
{
# Loglama formatını ve seviyesini ayarlayabilirsiniz.
log {
output file /var/log/caddy/access.log
format json
}
# Email adresi Let's Encrypt için kullanılır, sertifika yenileme bildirimleri için.
email admin@example.com
}
example.com {
# Web sitesi dosyalarının kök dizini
root * /var/www/example.com
# Statik dosyaları sunmak için direktif
file_server
# Hata sayfaları (isteğe bağlı)
# handle_errors {
# rewrite * /404.html
# file_server
# }
# Gzip sıkıştırmayı etkinleştir (performans için önerilir)
# encode gzip
# Loglama (global olarak ayarlanmadıysa veya farklı bir log istiyorsanız)
# log {
# output file /var/log/caddy/example.com-access.log
# format json
# }
}
Dosyayı kaydedip kapatın.
Bu yapılandırma ile Caddy:
* example.com alan adına gelen istekleri dinleyecek.
* /var/www/example.com dizinindeki dosyaları sunacak.
* Otomatik olarak Let’s Encrypt üzerinden example.com için bir SSL/TLS sertifikası alacak ve HTTPS’i etkinleştirecek.
* HTTP’den HTTPS’e otomatik yönlendirme yapacak.
* Belirtilen yola logları yazacak.
Caddyfile’ı güncelledikten sonra, Caddy hizmetini yeniden başlatmanız veya yeniden yüklemeniz gerekir ki değişiklikler uygulansın:
sudo systemctl reload caddy
Eğer bir hata oluşursa, Caddy hata mesajını gösterecektir. Hata yoksa, web tarayıcınızdan alan adınıza (örneğin https://example.com) giderek sitenizin çalıştığını kontrol edebilirsiniz. Tarayıcınızda “Merhaba Caddy!” yazısını görmelisiniz ve bağlantının güvenli (HTTPS) olduğunu fark edeceksiniz.
Birden Fazla Site İçin Caddyfile
Tek bir Caddyfile içinde birden fazla web sitesi yapılandırabilirsiniz. Her site için ayrı bir blok tanımlamanız yeterlidir.
{
email admin@example.com
log {
output file /var/log/caddy/global-access.log
format json
}
}
example.com {
root * /var/www/example.com
file_server
encode gzip
}
sub.example.com {
root * /var/www/sub.example.com
file_server
encode gzip
}
anotherdomain.net {
root * /var/www/anotherdomain.net
file_server
encode gzip
# Başka direktifler
}
Her alan adı bloğu kendi root dizinini ve diğer direktifleri içerebilir.
Otomatik HTTPS (Let’s Encrypt)
Caddy’nin en güçlü özelliklerinden biri, Let’s Encrypt ile entegre çalışarak otomatik HTTPS sağlamasıdır. Caddyfile’da sadece alan adınızı belirtmeniz yeterlidir, Caddy gerisini halleder:
* Alan adınız için bir sertifika talebi oluşturur.
* Alan adı sahipliğini doğrular (genellikle HTTP-01 challenge ile).
* Sertifikayı alır ve sunucunuza kurar.
* Sertifika süresi dolmadan önce otomatik olarak yeniler.
Bu süreç, manuel sertifika yönetimiyle uğraşma ihtiyacını tamamen ortadan kaldırır ve web sitenizin her zaman güvenli bir HTTPS bağlantısı üzerinden erişilebilir olmasını sağlar.
Gelişmiş Caddyfile Direktifleri
Caddy, statik dosya sunumundan çok daha fazlasını yapabilir. İşte bazı yaygın ve gelişmiş Caddyfile direktifleri:
Reverse Proxy (Ters Proxy)
Caddy’yi bir ters proxy olarak kullanmak, Node.js, Python (Django, Flask), Ruby on Rails veya Go gibi uygulama sunucularını Caddy’nin arkasında çalıştırmanıza olanak tanır. Caddy, gelen istekleri uygulama sunucunuza iletir ve yanıtları istemciye geri gönderir. Bu, Caddy’nin HTTPS’i yönetirken uygulamanızın sadece HTTP üzerinden çalışabilmesini sağlar.
Örnek bir Node.js uygulaması için ters proxy yapılandırması:
myapp.example.com {
# Bu, Node.js uygulamanızın çalıştığı adres ve porttur.
reverse_proxy localhost:3000
}
Bu yapılandırma, myapp.example.com adresine gelen tüm istekleri localhost:3000 adresinde çalışan Node.js uygulamanıza yönlendirecektir. Caddy, bu işlem sırasında otomatik HTTPS’i sağlamaya devam edecektir.
Loglama
Caddy, gelen istekleri ve diğer olayları günlüğe kaydetmek için esnek loglama seçenekleri sunar. Global olarak veya her site için ayrı ayrı loglama yapılandırabilirsiniz.
# Global loglama ayarı
{
log {
output file /var/log/caddy/access.log {
roll_size 10MB
roll_keep 5
}
format json # veya console
level INFO # veya DEBUG, WARN, ERROR
}
}
Siteye özel loglama (global ayarı geçersiz kılar)
anotherdomain.net {
root * /var/www/anotherdomain.net
file_server
log {
output file /var/log/caddy/anotherdomain.net-access.log
format json
}
}
roll_size ve roll_keep direktifleri, log dosyalarının boyutunu ve kaç tanesinin saklanacağını kontrol eder, bu da disk alanını yönetmek için önemlidir.
Gzip Sıkıştırma
Web sitenizin performansını artırmak için Caddy ile giden verileri sıkıştırabilirsiniz. Bu, özellikle statik dosyalar için bant genişliği kullanımını azaltır ve yükleme sürelerini hızlandırır.
example.com {
root * /var/www/example.com
file_server
encode gzip zstd # gzip ve zstd sıkıştırmalarını etkinleştirir
}
encode direktifi, tarayıcının desteklediği sıkıştırma algoritmalarını kullanır. gzip yaygın olarak desteklenirken, zstd daha modern ve verimli bir alternatiftir.
Yeniden Yönlendirmeler (Redirects)
Caddy, URL’leri yeniden yönlendirmek için güçlü ve esnek araçlar sunar. Bu, eski URL’leri yeni URL’lere yönlendirmek veya www olmayan alan adını www’ye yönlendirmek gibi durumlar için kullanışlıdır.
# HTTP'den HTTPS'e Caddy tarafından otomatik olarak yapılır.
Ancak, özel bir yönlendirme yapmanız gerekirse:
www.example.com'u example.com'a yönlendirme
www.example.com {
redir https://example.com{uri} permanent
}
Eski bir URL'yi yeni bir URL'ye yönlendirme
example.com {
root * /var/www/example.com
file_server
# Eski blog gönderisi URL'sini yeniye yönlendirme
redir /old-blog-post /new-blog-post permanent
# Tüm /blog/ isteklerini /articles/ altına yönlendirme
redir /blog/* /articles/{uri} permanent
}
permanent anahtar kelimesi, 301 (kalıcı) yeniden yönlendirmesi yapar.
Statik Dosya Sunumu
file_server direktifi, belirtilen root dizinindeki dosyaları sunar. Bu, Caddy’nin en temel işlevlerinden biridir.
example.com {
root * /var/www/example.com
file_server {
hide .git .env # Bazı dosyaları gizle
browse # Dizin listelemeyi etkinleştir (güvenlik riski taşıyabilir, dikkatli kullanın)
}
}
hide alt direktifi, belirli dosyaların veya dizinlerin listelenmesini veya doğrudan erişilmesini engeller. browse ise dizin listelemeyi etkinleştirir, bu da genellikle güvenlik nedeniyle önerilmez.
PHP-FPM ile Entegrasyon (Örn: WordPress)
Dinamik PHP uygulamalarını (WordPress, Laravel vb.) Caddy ile çalıştırmak için PHP-FPM (FastCGI Process Manager) kullanmanız gerekir. Caddy, gelen PHP isteklerini PHP-FPM’e iletir, PHP-FPM kodu çalıştırır ve çıktıyı Caddy’ye geri gönderir.
1. PHP-FPM Kurulumu:
Öncelikle, sunucunuza PHP-FPM ve gerekli PHP uzantılarını kurmanız gerekir. Ubuntu 18.04 için PHP 7.2 veya 7.4 kullanabilirsiniz. Bu örnekte PHP 7.2 kullanacağız:
sudo apt install php7.2-fpm php7.2-mysql php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl php7.2-zip -y
Kurulumdan sonra PHP-FPM hizmetinin çalıştığından emin olun:
sudo systemctl status php7.2-fpm
2. Caddyfile Yapılandırması:
Şimdi Caddyfile’ı PHP uygulamalarını yönetecek şekilde yapılandırın. WordPress için tipik bir yapılandırma örneği:
wordpress.example.com {
root * /var/www/wordpress.example.com
php_fastcgi unix//run/php/php7.2-fpm.sock
file_server
# WordPress'in permalink'leri için yeniden yazma kuralı
# index.php bulunamazsa, index.php'ye yönlendir
try_files {path} {path}/ /index.php?{query}
}
Bu yapılandırmada:
root /var/www/wordpress.example.com: WordPress dosyalarının bulunduğu dizini belirtir.
* php_fastcgi unix//run/php/php7.2-fpm.sock: Caddy’ye PHP isteklerini PHP-FPM’in UNIX soketine yönlendirmesini söyler. Ubuntu’da varsayılan soket genellikle /run/php/phpX.X-fpm.sock şeklindedir.
* file_server: Statik dosyaları (CSS, JS, resimler) sunar.
* try_files {path} {path}/ /index.php?{query}: Bu, WordPress gibi uygulamaların permalink yapısı için kritik bir yeniden yazma kuralıdır. Eğer istenen dosya veya dizin bulunamazsa, isteği index.php‘ye yönlendirir.
Caddyfile’ı kaydettikten sonra, Caddy hizmetini yeniden yükleyin:
sudo systemctl reload caddy
Artık wordpress.example.com adresine gelen istekler Caddy tarafından karşılanacak, statik dosyalar doğrudan sunulacak ve PHP dosyaları PHP-FPM tarafından işlenecektir. WordPress kurulumunuzu /var/www/wordpress.example.com dizinine yerleştirdiğinizde, Caddy otomatik olarak HTTPS ile sitenizi barındırmaya başlayacaktır.
Caddy Hizmetini Yönetme
Caddy bir sistem hizmeti olarak çalıştığı için, systemctl komutuyla kolayca yönetilebilir.
* Caddyfile Değişikliklerini Uygulama:
Caddyfile’da herhangi bir değişiklik yaptığınızda, bu değişikliklerin Caddy tarafından uygulanması için hizmeti yeniden yüklemeniz gerekir:
sudo systemctl reload caddy
reload komutu, Caddy’yi durdurup yeniden başlatmadan yapılandırmayı yeniden okumasını sağlar, bu da kesintisiz hizmet anlamına gelir.
* Caddy’yi Başlatma:
Eğer Caddy hizmeti çalışmıyorsa veya durdurulmuşsa, aşağıdaki komutla başlatabilirsiniz:
sudo systemctl start caddy
* Caddy’yi Durdurma:
Caddy hizmetini tamamen durdurmak için:
sudo systemctl stop caddy
* Caddy’yi Yeniden Başlatma:
Bazen reload yeterli olmayabilir veya tamamen yeni bir başlangıç gerekebilir. Bu durumda restart komutunu kullanın:
sudo systemctl restart caddy
* Caddy’nin Durumunu Kontrol Etme:
Caddy hizmetinin mevcut durumunu (çalışıyor mu, durduruldu mu, hatalar var mı) kontrol etmek için:
sudo systemctl status caddy
* Caddy Loglarını İnceleme:
Caddy’nin çıktılarını ve hatalarını incelemek için journalctl kullanabilirsiniz:
sudo journalctl -u caddy --since "5 minutes ago"
Bu komut, son 5 dakikadaki Caddy hizmetinin günlüklerini gösterir. --since parametresini değiştirerek daha eski günlükleri de inceleyebilirsiniz.
Eğer Caddyfile’da özel log dosyaları belirttiyseniz (örneğin /var/log/caddy/access.log), bu dosyaları doğrudan tail komutuyla da izleyebilirsiniz:
sudo tail -f /var/log/caddy/access.log
* Caddyfile Sözdizimini Doğrulama:
Caddyfile’da bir değişiklik yapmadan önce sözdiziminin doğru olup olmadığını kontrol etmek için caddy validate komutunu kullanabilirsiniz:
sudo caddy validate --config /etc/caddy/Caddyfile
Bu komut, yapılandırma dosyasındaki olası hataları tespit etmenize yardımcı olur ve reload veya restart sırasında sorun yaşamanızı engeller.
Bu yönetim komutları, Caddy sunucunuzu verimli bir şekilde izlemenizi ve bakımını yapmanızı sağlar.
Sorun Giderme ve İpuçları
Caddy ile bir web sitesi barındırırken karşılaşabileceğiniz bazı yaygın sorunlar ve bunların çözümleri:
* Caddyfile Sözdizimi Hataları:
* Belirti: Caddy hizmeti yeniden yüklenmiyor veya başlamıyor, systemctl status caddy çıktısında hatalar görünüyor.
* Çözüm: sudo caddy validate --config /etc/caddy/Caddyfile komutunu çalıştırarak Caddyfile’daki sözdizimi hatalarını kontrol edin. Caddy genellikle hatanın hangi satırda olduğunu belirtir.
* İpucu: Her Caddyfile değişikliğinden sonra validate komutunu kullanmayı alışkanlık haline getirin.
* DNS Sorunları:
* Belirti: Web sitenize alan adınızla erişemiyorsunuz, ancak sunucunuzun IP adresiyle erişebiliyorsunuz (eğer Caddy’yi IP adresiyle de yapılandırdıysanız). Caddy, Let’s Encrypt sertifikasını alamıyor.
* Çözüm: Alan adınızın A kaydının sunucunuzun genel IP adresini doğru bir şekilde işaret ettiğinden emin olun. DNS değişikliklerinin yayılması biraz zaman alabilir (24 saate kadar). dig alanadiniz.com veya nslookup alanadiniz.com komutlarıyla DNS kayıtlarını kontrol edebilirsiniz.
* İpucu: ping alanadiniz.com komutu da IP adresini doğru gösteriyorsa DNS doğru çalışıyor demektir.
* Güvenlik Duvarı Engelleri:
* Belirti: Web sitenize hiç erişilemiyor veya sadece HTTP üzerinden erişilebiliyor (HTTPS çalışmıyor).
* Çözüm: UFW veya başka bir güvenlik duvarının 80 (HTTP) ve 443 (HTTPS) portlarını engellemediğinden emin olun. sudo ufw status komutuyla kontrol edin ve gerekirse sudo ufw allow http ve sudo ufw allow https komutlarıyla portları açın.
* Let’s Encrypt Limitleri:
* Belirti: Caddy, “too many certificates already issued” (çok fazla sertifika zaten verilmiş) gibi bir hata mesajı gösteriyor.
* Çözüm: Let’s Encrypt’in belirli bir zaman diliminde (genellikle bir hafta) bir alan adı için alabileceğiniz sertifika sayısına ilişkin limitleri vardır. Genellikle bu, çok sık sertifika denemesi yapıldığında ortaya çıkar. Bir süre beklemek ve tekrar denemek en iyi çözümdür. Geliştirme ortamlarında example.com yerine localhost veya .test gibi alan adları kullanarak bu limitlerden kaçınabilirsiniz.
* İpucu: Caddy, varsayılan olarak Let’s Encrypt’in üretim ortamını kullanır. Testler için Let’s Encrypt’in staging ortamını kullanabilirsiniz. Bunu Caddyfile’ın global bloğuna acme_ca https://acme-staging-v02.api.letsencrypt.org/directory ekleyerek yapabilirsiniz.
* Caddy Logları:
* Belirti: Bir sorun yaşıyorsunuz ancak nedenini belirleyemiyorsunuz.
* Çözüm: Caddy’nin günlüklerini detaylı bir şekilde inceleyin. sudo journalctl -u caddy veya Caddyfile’da belirttiğiniz log dosyalarını (/var/log/caddy/access.log gibi) kontrol edin. Hata mesajları veya uyarılar sorunun kaynağına işaret edebilir.
* İpucu: Caddyfile’daki loglama seviyesini DEBUG olarak ayarlayarak daha ayrıntılı bilgi alabilirsiniz, ancak bunu üretimde sürekli açık bırakmak performans düşüşüne neden olabilir.
* Dosya İzinleri:
* Belirti: Web siteniz “403 Forbidden” hatası veriyor veya dosyalar yüklenmiyor.
* Çözüm: Web sitesi dosyalarınızın ve dizinlerinizin Caddy kullanıcısı (caddy) tarafından okunabilir olduğundan emin olun. sudo chown -R caddy:caddy /var/www/yourdomain.com ve sudo chmod -R 755 /var/www/yourdomain.com komutlarını kullanarak izinleri düzeltin.
Bu sorun giderme ipuçları, Caddy ile web sitesi barındırma sürecinde karşılaşabileceğiniz çoğu sorunu çözmenize yardımcı olacaktır.
Sonuç
Bu kapsamlı rehberde, Ubuntu 18.04 sunucusu üzerinde Caddy web sunucusunu kullanarak bir web sitesini nasıl barındıracağınızı adım adım öğrendiniz. Caddy’nin kurulumundan güvenlik duvarı yapılandırmasına, temel ve gelişmiş Caddyfile direktiflerinden PHP-FPM entegrasyonuna kadar birçok konuyu ele aldık.
Caddy, modern web projeleri için sunduğu basitlik, otomatik HTTPS, hızlı performans ve esnek yapılandırma seçenekleri ile öne çıkan güçlü bir araçtır. Özellikle Let’s Encrypt ile entegre otomatik SSL/TLS sertifikası yönetimi, Caddy’yi manuel sertifika yenileme zahmetinden kurtulmak isteyen herkes için cazip bir seçenek haline getirir. İster statik bir web sitesi sunun, ister bir Node.js API’si için ters proxy görevi görsün, ister WordPress gibi dinamik bir PHP uygulamasını çalıştırın, Caddy tüm bu senaryolarda güvenilir ve verimli bir çözüm sunar.
Caddy’nin sağladığı bu kolaylıklar ve performans avantajları, web sitesi barındırma sürecini daha erişilebilir ve daha az karmaşık hale getirir. Bu rehberde edindiğiniz bilgilerle, kendi web projelerinizi Caddy ve Ubuntu 18.04 üzerinde başarıyla hayata geçirebilirsiniz. İleriye dönük olarak, Caddy’nin diğer özelliklerini (yük dengeleme, kimlik doğrulama, HTTP/3 desteği gibi) keşfederek sunucunuzun yeteneklerini daha da genişletebilirsiniz. Unutmayın, Caddy topluluğu oldukça aktif ve Caddy dokümantasyonu, daha fazla bilgi ve gelişmiş yapılandırma örnekleri için harika bir kaynaktır.