Pazar, 10 Mayıs 2015

CodeIgniter 3.0

 

CodeIgniter 3.0 uzun süren bir bekleyişten sonra resmi olarak yayınlandı.

Ellis Lab'ın CodeIgniter üzerindeki tüm hakların British Columbia Institute of Technology üzerine devretmesinin ardından, uzunca bir süredir github üzerinden sürdürülen geliştirme çalışmalarının artık daha derli toplu bir şekilde devam edeceğini umuyoruz.

CodeIgniter 3.0 kullanım kılavuzundan da takip edeceğiniz üzere yeni özellikler ve kütüphaneler (unit testing vs) eklenerek, diğer geliştirme çatılarıyla rekabet edecek hale getirilmeye çalışılmaktadır.

CodeIgniter 3.0 versiyonu Türkçe dil dosyası Birol Kahraman tarafından çevrilip kullanıma sunuldu. Sitedeki linkten de indirebilirsiniz.

Çarşamba, 29 Ocak 2014

Paylaşımlı Sunucularda Tek System Altında Çoklu Uygulama Kurulması

 

Öncelikle, CodeIgniter`ın durumu hakkında bir gelişme olmadığını belirterek yazıya başlamak isterim. Bildiğiniz gibi Temmuz 2013 tarihinden itibaren Ellis Lab. devredecek birilerini aradığını belirtmiş olmasına karşın, henüz yeni sahibi olarak kimseyi seçmediler.

Herçeyin çok hızla değiştiği ve geliştiği günümüzde altı aylık bir bekleme süresinin çok anlamsız olmasına rağmen, firmanın CodeIgniter`ın hakkını başkasına teslim etmek konusunda bile hevesinin kalmadığı ortadadır. Bu nedenle, işinizi gördüğü yerde CodeIgniter kullanmanızı, yetmediği yerler için de yeni uygulama çatılarını öğrenmenizi tavsiye ederim. Sonuçta hangi konu olursa olsun, körü körüne fanatik derecesinde bağlı olmanın zararı, sadece size dokunacaktır. Bana en çok sorulan sorulardan biri olan "CodeIngiter ne olacak?" sorusuna böylelikle yanıt verdiğimi umud ediyorum.

Bugün anlatacağım konu: paylaşımlı sunucularda (shared hosting) iki farklı uygulamayı, tek CodeIgniter kurulum ve alt-isimler ile (subdomain) yönetmek.

Paylaşımlı sunucular, ucuz olmaları nedeniyle halen çoğumuzun tercih ettiği bir hizmettir. Ucuz olmaları nedeniyle kullanıcılarına shell erişimi imkanı tanınmaz. Bu nedenle kullanıcının yapabileceği işlemler sınırlıdır. Bu yazıda, ğaylaşımlı sunucu kullanım yetkileri dahilinde bu konuyu nasıl çözeceğimizi göreceğiz.

Önce yapıyı görelim: Diyelim ki, iki farklı uygulamayı tek bir sunucu üzerinde çalıştırmak istiyorsunuz. Birinci uygulama, sitedadi.com domain adresi ile erişilen, şirketinizin/ürününüzün tanıtım sayfası olsun (application1 isimli uygulama dizini). İkinci uygulamanız ise, online.siteadi.com adresi olarak bir sub-domain adresi ile eriştiğiniz, asıl ürününüzün gösterildiği site olsun (application2 isimli uygulama dizini).

Her iki site de CodeIgniter üzerinde çalıştığı için, iki farklı CodeIgniter kurulumu yapmanız yerine her ikisinin de ortak çalıştırdığı (system dizini) bir kurulum olmalıdır. Böylece güncelleme gerekirse tek system dizinini güncellemeniz yeterlidir.

Yapımızın dizin görüntüsü şöyledir:

-main
--assets
--application1
----cache ~ views
--application2
----cache ~ views
--system
-online

Yukarıdaki yapıyı paylaşımlı sunucumuzun www (public_html) dizini altına oluşturuyor, dosyaları yüklüyoruz. Öncelikle www dizini altına (public_html) bir .htaccess dosyası yazmalıyız ki, bu adrese gelen kullanıcılar main dizini altına kurduğumuz yapıya erişsin:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /

 RewriteCond %{HTTP_HOST} ^([^\.]+)\.siteadi\.com$ [NC]
 RewriteCond %1 !^(www|ftp|mail|ssl)$ [NC]
 RewriteRule ^.*$ http://www.siteadi.com/%1 [R,L] 
 RewriteCond %{REQUEST_URI} !^main/index.php/$1
 RewriteRule (.*) main/$1 [L]

</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule> 

main dizini altındaki .htaccess dosyamızın içeriği, kullandığımız normal CI dosyası gibi olmalıdır:

#Options +FollowSymlinks

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ index.php/$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(application1|system) index.php/$1 [L]

Burada dikkat etmemiz gereken bir nokta, main dizini altındaki index.php dosyasında geçen $application_folder değişkeni applicaiton1 isimli ana sayfayı işaret etmelidir.

 $application_folder = 'application1';

Buraya kadar, siteadi.com adresine gelen kullanıcıların application1 uygulamasına yönlendirdir. Sıra online.siteadi.com alt-ismine gelenleri tespit ederek applicaiton2 uygulamasına yönelendirmekte. Bu amaçla açtığımız online isimli dizinin altına .htaccess dosyasını ekliyoruz:

#Options +FollowSymlinks

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ index.php/$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(application2|system) index.php/$1 [L]

Yine online dizini altına index.php dosyasını ekliyoruz. Ancak buradaki $application_folder değişkenini application2 olarak değiştirmeyi unutmuyoruz:

 $application_folder = 'application2';

Şimdi paylaşımlı sunucularda yapılması gerekli olan püf noktası: online dizini altına, sadece bir kere çalıştıracağımız symlink.php isimli bir dosya ekliyoruz.

symlink('/home/siteadi/public_html/main/system', '/home/siteadi/public_html/online/system');
symlink('/home/siteadi/public_html/main/application2', '/home/siteadi/public_html/online/application2');
symlink('/home/siteadi/public_html/main/assets', '/home/siteadi/public_html/online/assets');

Daha sonra online.siteadi.com/symlink.php adresi ile bu dosyayı çalıştırıyoruz. Bunun ardından online dizini altına üç tane sembolik link oluşturulur. Böylece online.siteadi.com adresine gelenler, application2 yi kullanmak için yönlendirilirler. Bu işlemin bir kere yapılması yettiğinden, symlink.php dosyası dizinin altından silinebilir.

Her iki uygulama aynı veritabanına bağlanabileceği gibi, farklı veritabanlarına da erişebilirler. application altındaki config dizinleri farklı olduğundan iki farklı ayar ile çalıştırmak mümkündür. System dizinleri ortak olduğu için de sadece bir defa güncellemek yeterlidir.

Fırsatım oldukça yeni konuları burada paylaşmaya devam edeceğim.

Çarşamba, 10 Temmuz 2013

CodeIgniter Yeni Sahibini Bekliyor

 

CodeIgniter, bir kaç gün önce çıkardığı 2.1.4 güncellemesi ardından, 9 Temmuz 2013 tarihli EllisLab açıklaması ile yeni bir geleceğe doğru yola çıktı.

Bir süredir yayınlanması beklenen 3.0 versiyonu geliştirmeleri sürerken EllisLab tarafından beklenmedik bir açıklama yapıldı. Bu açıklamada, CodeIgniter`ın artık şirket iş planlarına uygun olmadığını ve topluluğun yönetilmesi, yeni versiyon çıkartılması işinin kendileri için bir külfet meydana getirdiğinden bahsedilmektedir.

Blog yazısına gelen görüşlere verilen cevaplar arasında CodeIgniter kurucusu Rick Ellis`in özetlediği durum aslında bir çok şeyi özetler nitelikte. CodeIgniter`in kendine ait özel bir proje ile yola çıktığını ancak geldikleri noktada, artık yönetemediklerini ve isteklilere devretmek istedilerinden bahsetmektedir.

Hızı ve kullanımının basitliği kadar, komünitesi bu kadar gelişmiş bir PHP framework`ünün kullanıcı beklentilerine cevap verememesi nedeniyle atıl kalması üzücüydü. Ben EllisLab`ın verdiği bu kararın çok olumlu olduğunu düşünüyorum. CodeIgntier gelişimini komüniteye devretmeleri durumunda dahi çok hızlı bir şekilde, tüm isteklerin karşılanacağı yeni versiyona geçileceğini düşünüyorum.

CodeIgniter şu haliyle dahi bir çok projede sorunsuzca çalışmaktadır. Şimdiye kadar yapılan geliştirmeler de komünitenin gücünü bizlere göstermiştir. Ellislab`in bu kararıyla, CodeIgniterìn daha avantajlı bir framework olacağını umuyorum.

CodeIgniter`ın gelişmekte olan haline github üzerinden erişebilirsiniz.