Debian 7 ve Ubuntu 13 Üzerinde Kohana PHP Uygulamalarını Nginx ve PHP-FPM ile Yayınlama Rehberi
Bu makale, Debian 7 (Wheezy) ve Ubuntu 13 (Saucy Salamander) gibi kararlı Linux dağıtımları üzerinde, yüksek performanslı Nginx web sunucusu ve PHP-FPM kullanarak Kohana PHP framework tabanlı uygulamaların nasıl profesyonelce kurulacağını ve yapılandırılacağını adım adım açıklamaktadır. Modern web mimarilerinde hız ve verimlilik arayan geliştiriciler için bu kılavuz, HMVC yapısına sahip Kohana’nın tüm potansiyelini sunucu tarafında nasıl açığa çıkaracağınızı detaylandıracaktır.
Giriş: Kohana, Nginx ve PHP-FPM Üçlüsünün Gücü
Kohana, PHP için geliştirilmiş, nesne yönelimli ve HMVC (Hierarchical Model View Controller) mimarisini benimseyen hafif ama güçlü bir framework’tür. Özellikle yüksek trafikli projelerde modüler yapısı sayesinde büyük avantaj sağlar. Ancak, bu performansı sunucu tarafında desteklemek için Apache gibi geleneksel sunucular yerine Nginx ve PHP-FPM (FastCGI Process Manager) kombinasyonu sıklıkla tercih edilir.
Nginx, olay tabanlı (event-driven) yapısı sayesinde binlerce eşzamanlı bağlantıyı çok düşük bellek kullanımıyla yönetebilir. PHP-FPM ise PHP süreçlerini yönetmek için optimize edilmiş bir FastCGI arayüzüdür; bu ikili bir araya geldiğinde, Kohana uygulamaları hem daha hızlı yanıt verir hem de sunucu kaynaklarını daha verimli kullanır. Debian 7 ve Ubuntu 13, günümüz standartlarına göre eski sürümler olsa da, birçok kurumsal sistemde ve legacy (miras) projelerde hala aktif olarak kullanılmaktadır. Bu rehber, bu spesifik sürümlerin paket yönetim sistemlerine uygun şekilde hazırlanmıştır.
Adım 1: Sistemin Hazırlanması ve Güncellenmesi
Kuruluma başlamadan önce, işletim sistemindeki paket listelerinin güncel olduğundan emin olmalısınız. Bu, güvenlik yamalarının ve en son kararlı paket sürümlerinin yüklenmesi için kritik bir adımdır.
Terminal üzerinden aşağıdaki komutları sırasıyla çalıştırın:
apt-get update
apt-get upgrade
Debian 7 veya Ubuntu 13 üzerinde çalışırken, sistemin paket depolarının hala ulaşılabilir olduğundan emin olun. Eğer depolar “End of Life” (Ömür Sonu) durumundaysa, “archive.debian.org” veya Ubuntu’nun eski sürüm depolarını kaynak listenize (sources.list) eklemeniz gerekebilir.
Adım 2: Nginx Web Sunucusunun Kurulumu
Nginx, statik dosyaları sunmakta son derece hızlıdır ve PHP isteklerini PHP-FPM’e yönlendirmek için mükemmel bir ters vekil (reverse proxy) görevi görür. Nginx’i kurmak için şu komutu kullanın:
apt-get install nginx
Kurulum tamamlandıktan sonra Nginx hizmetini başlatın:
service nginx start
Tarayıcınızdan sunucu IP adresine gittiğinizde “Welcome to nginx” mesajını görüyorsanız, sunucu başarıyla kurulmuş demektir. Nginx’in varsayılan yapılandırma dosyaları /etc/nginx dizini altında bulunur. Ana yapılandırma dosyası nginx.conf iken, site bazlı ayarlar sites-available dizininde saklanır.
Adım 3: PHP-FPM ve Gerekli Modüllerin Kurulumu
Kohana, çalışabilmek için PHP 5.3.3 veya daha yüksek bir sürüme ihtiyaç duyar. Debian 7 ve Ubuntu 13, varsayılan olarak PHP 5.4 veya 5.5 sürümleriyle gelir ki bu Kohana için idealdir. PHP-FPM ile birlikte Kohana’nın ihtiyaç duyacağı yaygın PHP eklentilerini de kurmalıyız.
Aşağıdaki komut ile temel PHP bileşenlerini yükleyin:
apt-get install php5-fpm php5-cli php5-gd php5-mysql php5-curl php5-mcrypt
Buradaki eklentilerin görevleri şunlardır:
– php5-fpm: PHP süreç yöneticisi.
– php5-cli: PHP’yi komut satırından çalıştırmak için (Kohana Minion görevleri için gereklidir).
– php5-gd: Resim işleme kütüphanesi.
– php5-mysql: Veritabanı bağlantısı için.
– php5-mcrypt: Şifreleme işlemleri için (Kohana’nın Encrypt modülü bunu kullanır).
Kurulumdan sonra PHP-FPM’in çalıştığından emin olun:
service php5-fpm start
Adım 4: PHP-FPM Yapılandırması ve Güvenlik Optimizasyonu
PHP-FPM’in Nginx ile güvenli ve performanslı bir şekilde haberleşmesi için bazı ayarların yapılması gerekir. Öncelikle, PHP-FPM’in bir Unix soketi üzerinden mi yoksa TCP portu üzerinden mi dinleme yapacağını belirlemeliyiz. Performans açısından Unix soketleri genellikle daha hızlıdır.
Yapılandırma dosyasını düzenleyin:
nano /etc/php5/fpm/pool.d/www.conf
Dosya içinde şu satırı bulun ve Unix soketinin doğru tanımlandığından emin olun:
listen = /var/run/php5-fpm.sock
Ayrıca, güvenlik için php.ini dosyasında “cgi.fix_pathinfo” ayarını değiştirmeliyiz. Bu ayar, PHP’nin dosya yollarını yanlış yorumlamasını ve potansiyel güvenlik açıklarını engeller.
nano /etc/php5/fpm/php.ini
Dosya içinde cgi.fix_pathinfo satırını bulun, başındaki noktalı virgülü kaldırın ve değeri 0 yapın:
cgi.fix_pathinfo=0
Değişikliklerin etkili olması için PHP-FPM’i yeniden başlatın:
service php5-fpm restart
Adım 5: Kohana İçin Nginx Sanal Sunucu (Virtual Host) Yapılandırması
Nginx’in Kohana uygulamasına gelen istekleri nasıl karşılayacağını ve PHP-FPM’e nasıl ileteceğini tanımlamamız gerekiyor. Kohana, tüm isteklerin tek bir giriş noktası olan index.php üzerinden geçmesini gerektiren bir yapıya sahiptir.
Varsayılan yapılandırma dosyasını yedekleyip yeni bir dosya oluşturalım:
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/kohana_app
nano /etc/nginx/sites-available/kohana_app
Dosya içeriğini aşağıdaki gibi düzenleyin (alan adınızı ve dizin yolunuzu kendinize göre uyarlayın):
server {
listen 80;
server_name example.com;
root /var/www/kohana_app;
index index.php index.html index.htm;
access_log /var/log/nginx/kohana_access.log;
error_log /var/log/nginx/kohana_error.log;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
Bu yapılandırmadaki en önemli kısım “try_files” satırıdır. Eğer istenen dosya (resim, CSS, JS) mevcut değilse, istek otomatik olarak Kohana’nın ana dosyası olan index.php’ye yönlendirilir. Bu, temiz URL’lerin (Pretty URLs) çalışmasını sağlar.
Yapılandırmayı aktif hale getirmek için bir sembolik bağlantı oluşturun ve Nginx’i test edip yeniden başlatın:
ln -s /etc/nginx/sites-available/kohana_app /etc/nginx/sites-enabled/
nginx -t
service nginx restart
Adım 6: Kohana Uygulamasının Kurulumu ve İzinlerin Ayarlanması
Şimdi Kohana dosyalarını sunucuya aktarma zamanı. Genellikle bu işlem Git veya FTP üzerinden yapılır. Biz örneğimizde /var/www/kohana_app dizinini kullanacağız.
Dizini oluşturun ve Kohana dosyalarını buraya yerleştirin. Ardından, Kohana’nın yazma iznine ihtiyaç duyduğu dizinleri ayarlayın. Kohana; logları tutmak ve önbellek dosyalarını saklamak için “application/cache” ve “application/logs” dizinlerine yazabilmelidir.
chown -R www-data:www-data /var/www/kohana_app
chmod -R 755 /var/www/kohana_app
chmod -R 777 /var/www/kohana_app/application/cache
chmod -R 777 /var/www/kohana_app/application/logs
Not: Güvenlik açısından 777 izni yerine, bu dizinlerin sahipliğini www-data (Nginx ve PHP-FPM kullanıcısı) olarak ayarlayıp 755 veya 775 izinlerini vermek daha profesyonel bir yaklaşımdır.
Adım 7: Kohana Bootstrap ve Veritabanı Yapılandırması
Kohana’nın çalışabilmesi için application/bootstrap.php dosyasında temel ayarların yapılması gerekir.
Dosyayı açın:
nano /var/www/kohana_app/application/bootstrap.php
Aşağıdaki ayarları kontrol edin:
1. Zaman Dilimi: Kohana::init içinde ‘timezone’ => ‘Europe/Istanbul’ ayarını yapın.
2. Base URL: Kohana::init içindeki ‘base_url’ değerini uygulamanızın çalıştığı yol olarak belirleyin (örneğin ‘/’).
3. Modüller: İhtiyacınız olan modülleri (database, orm, auth vb.) Kohana::modules içinde aktif hale getirin.
Veritabanı bağlantısı için application/config/database.php dosyasını (eğer yoksa sistem dizininden kopyalayın) düzenleyin. MySQL/MariaDB kullanıyorsanız, host, username, password ve database adı bilgilerini girin.
Adım 8: Kohana Çevresel Ayarlar ve Install.php Temizliği
Kohana ilk kurulduğunda kök dizinde bir install.php dosyası ile gelir. Bu dosya sistem gereksinimlerini kontrol eder. Tarayıcınızdan uygulamanıza eriştiğinizde tüm kontrollerin “Passed” (Geçti) olduğundan emin olun.
Eğer her şey yolundaysa, güvenlik nedeniyle install.php dosyasını mutlaka silin veya adını değiştirin:
rm /var/www/kohana_app/install.php
Ayrıca, Kohana’nın çalışma ortamını (Environment) belirlemek önemlidir. Geliştirme aşamasında “Kohana::DEVELOPMENT”, canlıya geçtiğinizde ise “Kohana::PRODUCTION” modunu kullanmalısınız. Bu ayar genellikle bootstrap.php dosyasının en başında şu şekilde yapılır:
if (isset($_SERVER[‘KOHANA_ENV’])) {
Kohana::$environment = constant(‘Kohana::’.strtoupper($_SERVER[‘KOHANA_ENV’]));
} else {
Kohana::$environment = Kohana::PRODUCTION;
}
Nginx yapılandırmanızda fastcgi_param ile KOHANA_ENV değişkenini göndererek bu süreci otomatize edebilirsiniz.
Adım 9: Performans ve Önbellekleme Stratejileri
Nginx ve Kohana kombinasyonundan maksimum verim almak için bazı ek adımlar atılabilir:
1. FastCGI Caching: Nginx, PHP-FPM’den gelen yanıtları önbelleğe alabilir. Bu, veritabanı yoğunluklu sayfalarda milisaniyeler bazında hızlanma sağlar.
2. Gzip Sıkıştırma: Nginx üzerinde gzip’i aktif ederek, tarayıcıya gönderilen HTML, CSS ve JS dosyalarının boyutunu %70’e kadar azaltabilirsiniz. /etc/nginx/nginx.conf dosyasında gzip on; satırının aktif olduğundan emin olun.
3. Kohana Internal Cache: Kohana’nın kendi Cache modülünü kullanarak (Memcached veya Redis sürücüleri ile), sık kullanılan verileri bellek üzerinde saklayabilirsiniz.
Hata Ayıklama ve Log Yönetimi
Eğer uygulamanız çalışmıyorsa veya “502 Bad Gateway” hatası alıyorsanız, bakmanız gereken iki temel yer vardır:
1. Nginx Hata Logları: /var/log/nginx/kohana_error.log
2. PHP-FPM Logları: /var/log/php5-fpm.log
3. Kohana Logları: application/logs dizini altındaki tarih bazlı dosyalar.
Nginx logları genellikle izin hatalarını veya yanlış dosya yollarını gösterirken, PHP-FPM logları PHP scriptlerindeki hataları veya zaman aşımı (timeout) sorunlarını raporlar.
Sonuç
Debian 7 veya Ubuntu 13 üzerinde Kohana PHP uygulamalarını Nginx ve PHP-FPM ile yayınlamak, uygulamanızın kararlılığını ve hızını önemli ölçüde artırır. Bu kurulum süreci, sadece paketleri yüklemekten ibaret olmayıp, her bir bileşenin birbiriyle uyumlu çalışacak şekilde ince ayarlarının yapılmasını gerektirir. Nginx’in esnek yönlendirme kuralları ve PHP-FPM’in süreç yönetim kabiliyeti, Kohana’nın HMVC yapısıyla birleştiğinde, ölçeklenebilir ve yönetilebilir bir web platformu oluşturmanıza olanak tanır.
Bu rehberdeki adımları takip ederek, eski nesil ancak güvenilir bu Linux dağıtımları üzerinde modern bir çalışma ortamı kurabilir, Kohana projelerinizi güvenle yayına alabilirsiniz. Unutmayın ki, sunucu güvenliği için düzenli olarak güncellemeleri takip etmek ve gereksiz servisleri kapatmak her zaman en iyi uygulamadır.
