Caddy kurulumu ve kullanımı

Imagem de capa

Merhaba arkadaşlar, bugün Caddy isimli developer dostu bir yazılımdan bahsedeceğim. Caddy, HTTPS’nin default açık geldiği bir HTTP/2 web sunucusudur. Kaynak kodları Go diliyle yazılmıştır ve altyapısında da Go’nun standart kütüpheneleri bulunuyor. Caddy ayrıca Let’s Encrypt sayesinde HTTPS’yi otomatik olarak aktif edip kullanıma hazır hale getiriyor. Kendisinde bir web sunucusunda olması gereken pek çok özellik bulunmaktadır. Linux, macOS ve Windows platformlarını desteklemektedir.

Caddy’nin kurulumuna resmi sitesinden de ulaşabilirsiniz.

Platformunuza özel kurulumu başlatmak için tek bu komutu giriniz:

curl https://getcaddy.com | bash -s personal

Yükleme tamamlandıktan sonra konsola caddy yazarak yükleme işlemini onaylayabilirsiniz. Caddy’nin default portu 2015‘dir. Bu Caddy’nin ortaya çıktığı yıldır aynı zamanda. Sunucunuzun :2015 portuna girdiğinizde “404 Not Found” mesajı sizi karşılamalı. Şimdi Caddy process’ini kapatabilirsiniz.

Caddy’nin config dosyasının adı Caddyfile‘dır. Yolunu parametrede belirtmez iseniz varsayılan yol olarak Caddy’i çalıştırdığınız yer baz alınacaktır.

Caddy’i çözmek için, Caddyfile’ı öğrenmek zorundasınız. Caddyfile aslında çok basit bir yapıya sahiptir. Zaten Caddy’nin de amacı sanal alanları hızlıca açmaktır.

İlk örnekte bir label‘ı, belirlediğimiz root dizininde çalıştıralım (‘ornek.com’ olarak yazdığımız bölüm, label olarak adlandırılıyor):

ornek.com {
  root /var/www/ornek
}

Bu config bize, ornek.com’a gelen istekleri /var/www/ornek dizinine yönlendiriyor. Aynı zamanda yazının başında bahsettiğimiz gibi, varsayılan olarak HTTPS de aktif hale geldi.

İkinci örnekte bir local portu Caddy üzerinden proxy ettiriyoruz:

ornek.com {
  proxy / localhost:2368 
}

Bu örnekte FastCGI protokolüne sahip bir işlemi çalıştırmaya çalışalım. fastcgi komutundan sonra istek yolu, ardından da FastCGI dinleme portu geliyor.

ornek.com {
  fastcgi / 127.0.0.1:9000
  root /var/www/ornek
}

Eğer FastCGI’yi PHP destekli istiyorsanız config’iniz bu şekilde olmalı:

ornek.com {
  fastcgi / /run/php/php7.0-fpm.sock php {
    ext .php
    split .php
    index index.php
  }
  root /var/www/ornek
}

Şimdi de bazı komutları da hızlıca anlatıp geçelim.

# Gelen istek (header dahil) en fazla 2 megabayt olabilir 
limits 2mb

# Limiti header ve body bazında ayarlama
limits {
  header 100KB
  body   /upload 100MB
  body   /profile 25KB
}

# Caddy başlatılırken komut çalıştırma
on startup /etc/init.d/php-fpm start

# Caddy kapatılırken komut çalıştırma
on shutdown /etc/init.d/php-fpm stop

# Gzip sıkıştırmasını aktifleştir
gzip

# Tüm istekleri index.php'ye yönlendir
rewrite .* /index.php

Peki Caddy’i arkaplanda çalıştırmak için ne yapmalıyız? systemd destekleyen tüm Linux sunucuları için gereken config, Caddy’nin kaynak kodlarında da bulunuyor. Buradan systemd kodlarına erişebilirsiniz. Kopyaladığınız kodları /etc/systemd/system/caddy.service dosyasına yapıştırdıktan sonra;

systemctl daemon-reload
systemctl enable caddy
systemctl start caddy

Yukarıdaki komutlarla Caddy’i daemonize edebilirsiniz. Kodlarda default config dosyası /etc/caddy/Caddyfile olarak belirlenmiştir.

Daha detaylı bilgiler için Caddy’nin resmi dökümanlarına bakabilirsiniz.