From 80132311a9cc4ffe2215c199f62195d823d8b56f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20G=C3=B6r?= Date: Tue, 4 Jul 2023 17:39:22 +0300 Subject: [PATCH] =?UTF-8?q?FreeBSD=2013=20=C3=9Czerinde=20PHP-FPM=20ve=20A?= =?UTF-8?q?pache=20Yap=C4=B1land=C4=B1rmas=C4=B1=20yazar=20Bedreddin=20?= =?UTF-8?q?=C5=9Eahbaz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-development/freebsd13-php-fpm-apache.md | 94 ++++++++++++++++++ ...response-in-php-e1542398057451-768x346.jpg | Bin 0 -> 27437 bytes 2 files changed, 94 insertions(+) create mode 100644 web-development/freebsd13-php-fpm-apache.md create mode 100644 web-development/img/request-response-in-php-e1542398057451-768x346.jpg diff --git a/web-development/freebsd13-php-fpm-apache.md b/web-development/freebsd13-php-fpm-apache.md new file mode 100644 index 0000000..ccc26e0 --- /dev/null +++ b/web-development/freebsd13-php-fpm-apache.md @@ -0,0 +1,94 @@ +# FreeBSD 13 Üzerinde PHP-FPM ve Apache Yapılandırması + +Bu dökümanda FreeBSD 13 sistemimiz üzerinde kurulu Apache sunucumuzu php-fpm kullanarak PHP çalıştırır hale getireceğiz. Malum bu işi yapmanın diğer yolu; Apache'yi PHP modülü ile kullanmak. Bu dökümanda daha performanslı çalıştığı söylenen php-fpm ile Apache ve PHP'yi birbiri ile bağlayacağız. + +Öncelikle Apache ve PHP paketlerini uygun modüller ve ayarlarla kurmamız lazım. Kurulumu ports ile yapıyorsanız ön tanımlı ayarlarda ihtiyacınız olan seçenekler seçili halde oluyor. Apache ve PHP için ön tanımlı değerlerle devam edebilirsiniz. Kurulumlar yapıldıktan sonra düzenleyeceğimiz ilk dosya httpd.conf olacak. Dosyayı açarak aşağıdaki satırları bulun ve örneğe göre düzenleyin. FreeBSD'de ports üzerinden kurulmuş Apache 2.4 için httpd.conf dosyasının yolu; ```/usr/local/etc/apache24/httpd.conf``` + +``` +# + +# Dynamic Shared Object (DSO) Support + +# ... LoadModule mpm_event_module libexec/apache24/mod_mpm_event.so + +# LoadModule mpm_prefork_module libexec/apache24/mod_mpm_prefork.so + +# LoadModule mpm_worker_module libexec/apache24/mod_mpm_worker.so + +... LoadModule proxy_module libexec/apache24/mod_proxy.so ... + +LoadModule proxy_fcgi_module libexec/apache24/mod_proxy_fcgi.so + +``` + +Gerekli modülleri aktif hale getirmiş olduk. Modüllerle ilgili yaptığımız ayarın geçerli hale gelmesi için Apache servislerini yeniden başlatalım: + +``` +service apache24 start +``` + +## PHP-FPM + +PHP-FPM (FastCGI Process Manager), ağır yüklü siteler için yararlı olabilen bazı ek özelliklere sahip alternatif bir PHP FastCGI uygulamasıdır. Yazının giriş bölümünde de bahsettiğimiz Apache web sunucusunun PHP modülü ile kullanımı aşağıda şematize edilmiştir. + +![Apache](img/request-response-in-php-e1542398057451-768x346.jpg) + +İstemci (browser), sunucudan bir PHP sayfası talep ettiğinde Apache bu sayfayı PHP modülüne yorumlatıp sonucu istemciye gönderir. Burada PHP yorumlama işinin Apache servisi içinde yapıldığına dikkat edin. PHP-FPM kullandığımızda ise aşağıda bulunan yapı oluşacaktır. + +![PHP-FM](img/setup-apache-php-frpm-ubuntu.png) + +Gördüğünüz gibi Apache bu sefer PHP kodlarının yorumlanmasını kendi içerisindeki PHP modülü yerine, bağımsız bir servis olarak çalışan FPM uygulamasına yaptırıyor. İşin mantığı genel olarak bu. Şimdi gerekli düzenlemeleri yapalım. PHP-FPM bir servis olarak çalışıyor demiştik. Öncelikle bu servisi çalıştırabilmek için ```/etc/rc.conf``` içerisine gerekli satırı ekleyelim: + +``` +php_fpm_enable="YES" +``` + +ve servisi çalıştıralım: + +``` +service php-fpm start +``` + +Ön tanımlı olarak php-fpm, arka planda 9000 numaralı TCP portunu dinleyecek ve yalnızca yerel makineden gelecek bağlantı isteklerini kabul edecek şekilde ayarlıdır. Eğer php-fpm servisini başka bir makinede çalıştırmayı planlamıyorsanız TCP yerine Unix soketi dinlemek daha hızlı ve daha güvenli bir yol olacaktır. Bu şekilde yapılandırmak için ```/usr/local/etc/php-fpm.d/www.conf``` dosyasını açalım ve aşağıdaki şekilde düzenleyelim: + +``` +user = www +group = www +listen = /tmp/php-fpm.sock +listen.owner = www +listen.group = www +listen.mode = 0660 +``` + +Bu değişikliklerin etkili olabilmesi için php-fpm servisini yeniden başlatmak gerektiğini unutmayın. Aynı durum PHP ile ilgili yapacağınız tüm değişimlerde geçerli. mod_php kullandığınız zamanlarda Apache servisini yeniden başlatmak PHP ayarlarında yaptığınız değişimleri etkin hale getiriyordu ancak şu anda bu işi php-fpm servisi yaptığı için PHP ve php-fpm üzerinde yaptığımız tüm değişikliklerde php-fpm servisini yeniden başlatmayı unutmayalım. + +``` +service php-fpm restart +``` + +Son olarak Apache üzerinde küçük bir ayar yapmamız lazım. ```/usr/local/etc/apache24/Includes/php-fpm.conf``` dosyasını açalım ve şu içeriği ekleyelim: + +``` + + SetHandler proxy:unix:/tmp/php-fpm.sock|fcgi://localhost/ + # use the following line instead if you didn't set PHP-FPM to listen on a Unix socket + #SetHandler proxy:fcgi://127.0.0.1:9000 + +``` + +Tüm ayarlamaları yaptık. Apache servisini yeniden başlatalım: + +``` +apachectl restart +``` + +Yaptığımız konfigürasyonu test edebiliriz. Web sunucumuzda bir php dosyası oluşturup kodlarını bu sayfamıza yerleştirelim. Sayfayı ziyaret edelim: + +![PHP Info](img/phpinfo.png) + +Server API satırında FPM/FastCGI görüyorsanız tebrikler, sunucunuzda Apache+PHP-FPM yapılandırmasını doğru şekilde yapmışsınız.. + +# Lisans + +Bu makale Bedreddin Şahbaz tarafından yazılmıştır. BSD-3-Clause ile ruhsatlanmıştır. + diff --git a/web-development/img/request-response-in-php-e1542398057451-768x346.jpg b/web-development/img/request-response-in-php-e1542398057451-768x346.jpg new file mode 100644 index 0000000000000000000000000000000000000000..752f5f3eb6afbb565d56822186aae4eb22acb60c GIT binary patch literal 27437 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