Caddy Server ve PHP-FPM ile Çalışma

Selam. Bu yazıda Caddy Server ve PHP-FPM ile Çalışma hakkında bilgiler sunacağım. Sistemimde PHP kurulu değil henüz. Bu yazıyı yazarken kuruyor olacağım. Yani kurulu olmayanlarda da aynı şekilde olacaktır. Yazayım mı diyordum Flask yazısını gören Emir Karşıkayalı bunun bir de PHP-FPM olanı yaz demişti :P.

Caddy Server ve PHP-FPM ile Çalışma

Caddy Server ve PHP-FPM ile Çalışma İçin Gereksinimler

Öncelikle Caddy baş gereklilik. Bir diğer gereksinim ise PHP7-FPM. Bende henüz kurulu değil. Öncelikle bu işlemi yapalım.

PHP7-FPM Kurulumu

sudo apt install php7.0-fpm

Kuracağımız php-fpm varsayılan olarak unix socketlerine gelen FastCGI isteklerini dinliyormuş. Dilersek UDP soketi üzerine gelen istekleri de dinleyebiliriz. Kurulum 2 saniyede tamamlandı bende 15 MB bir şey kuruldu. Ama ben ekstra özellikler katmadım.

Kurulum bu aşamada hızlı bir şekilde tamamlandıktan sonra Caddyfile dosyasına ekleme yapacağız. Bu sefer herhangi bir servis oluşturmamız gerekmiyor.

Caddyfile Düzenlemesi

Sitemizin ayağa kalkması için Caddyfile üzerinde bazı değişiklikler yapacağız. Ben yine 80 portunu dinleyeceğim. Öncelikle bu web sitesi için root dizinin neresi olduğunu belirtmemiz gerekiyor:

phpsitemiz.com:80 {
   root /var/www/phpsitem
}

Bu directive ile phpsitem klasörünü yayına çıkacağımız domain için root folder olarak atıyoruz. Ardından en önemli konuya geliyoruz. Yukarıda bahsettiğim FastCGI isteklerini dinleme işlemini yapmamız gerekiyor. Burada kafanız karışabilir belki çünkü sock file nerede bilmeniz mümkün olmayabilir. Kullandığım makinede yol şöyle “/var/run/php“. Dilerseniz ls çekerek sock dosyasını alabilirsiniz. FastCGI listen için bir directive eklememiz gerekiyor. Şöyle yapalım:

phpsitemiz.com:80 {
   root /var/www/phpsitem

   fastcgi / /var/run/php/php7.0-fpm.sock php
}

Yok ben UDP soketini dinleyeyim diyorsanız yöntem şu olacak:

phpsitemiz.com:80 {
   root /var/www/phpsitem

   fastcgi / 127.0.0.1:9000 php
}

Ardından yapacağımız iş caddy servisini yeniden başlatmak olacaktır. Bunu da bildiğimiz gibi şöyle yapacağız:

systemctl restart caddy

Hata aldıysanız şu komutu çalıştırmanız gerekiyor

systemctl daemon-reload

Eğer localde çalışıyorsanız muhtemelen caddyfile’da yer alan dosyadaki domaini localli bir şekilde vermişsinizdir. Oradan test edebilirsiniz. Ben phpsample.test adresini kullanarak test gerçekleştirdim.

Bir problem daha ortaya çıkıyor. Burada url rewriting işlemi wordpress kullanıcılarında ve özel projelerde büyük öneme sahip olabiliyor. Bu yüzden rewrite işlemini de yapalım. İki aşamalı olarak göstereceğim. Birisi WordPress için. Bir diğeri de bize özel proje için.

Rewrite İşlemi Nasıl Yapılır?

Öncelikle WordPress kullanıcıları için yöntem şöyle olmalı:

phpsitemiz.com:80 {
   root /var/www/phpsitem

   fastcgi / /var/run/php/php7.0-fpm.sock php

   rewrite {
        if {path} not_match ^\/wp-admin
        to {path} {path}/ /index.php?_url={uri}
    }
}

Bu şekilde WordPress sitenizin url rewrite işleminin çalıştığını söyleyebilirim. Bazı eklentiler ki bunu ben de deneyimledim .htaccess ya da nginx.conf dosyası ile çalışıyor. Burada bir bilgim yok maalesef.

Kişisel projelerde ise rewrite işlemi için şöyle bir yapı kullanabilirsiniz:

phpsitemiz.com:80 {
   root /var/www/phpsitem

   fastcgi / /var/run/php/php7.0-fpm.sock php

   rewrite {
     to {path} {path}/ /index.php?p={uri}
   }
}

Ardından tekrar restart işlemi yapalım:

systemctl restart caddy

Dilerseniz gzip aktif etme işlemini gzip direktifini ekleyerek yapabilirsiniz:

phpsitemiz.com:80 {
   root /var/www/phpsitem
   gzip
   fastcgi / /var/run/php/php7.0-fpm.sock php

   rewrite {
     to {path} {path}/ /index.php?p={uri}
   }
}

Evet hepsi bu kadar. Dilerseniz rewrite ile alakalı daha geniş dokümana bu linkten ulaşabilirsiniz.

Okuduğunuz için teşekkür ederim.