Berker Peksağ.

"model view controller" etiketine sahip yazılar:

13 Mart 2008, Perşembe

Symfony Kurulumu

Saat: 05:52:37

Şu sıralar CodeIgniter'dan vazgeçip, Symfony'yi incelemeye başladım. Symfony, 2005 yılından beri geliştirilen, açık kaynaklı PHP MVC(Model-view-controller) framework'ü. Evet, başlangıç için gereğinden fazla basit bir açıklama olsa da Yahoo! geliştiricilerinin projeye destek verdiğini ve güzide sosyal imleme servisi del.icio.us'ın yeni versiyonunda Symfony'den yararlandıklarını söyleyerek projenin yeteneklerini bir nebze anlatabileceğini umuyorum.

Veritabanı işlemlerini, bir O/RM(Object/Relational Mapping, ORM, O/R mapping) frameworkü olan Propel yardımıyla gerçekleştiriyoruz. O/RM, ilişkisel veritabanlarında(RDBMS) bulunan tablolar ile uygulama tarafında bulunan nesnelerin biribiriyle ilişkilendirilmesine verilen bir terimdir. O/RM için, pek çok ihtimal göz önünde bulundurularak hazırlanmış frameworkler bulunmaktadır(Java platformu için Hibernate, .Net platformu için NHibernate ve LINQ) ancak megolamaninin sınırlarında gezen biriyseniz kendi frameworkünüzü de yazabilirsiniz. O/RM araçları, MVC hiyerarşisinde persistence layer(veri erişim katmanı) olarak adlandırılırlar. Fazla uzatmadan, O/RM araçlarının görevlerini(yani Symfony için Propel'in) şöyle açıklayabiliriz: Uygulama tarafında ilişkilendirdikleri(buna mapping diyorlar) nesneler arasında veri aktarımını, geliştiriciyi SQL sorgularıyla vs. uğraştırmadan sağlar.

Ayrıca, çok methedilen dökümantasyonunun pek okunabilir olduğunu söyleyemem. Bir süre sonra gözü epey yoruyor. Bunun yerine Symfony'yi yakından tanımak için hazırlanan örnek "My First Project"'i indirip incelemek daha faydalı olabilir.

Kurulum

PHP-XSL eklentisinin aktifleştirilmesi

PHP_XSL, yukarıda ayrıntısıyla anlatığımız O/RM aracı Propel'in çalışabilmesi için gereklidir. Eğer PHP kurulumunuzun ardından herhangi bir değişiklik yapmadıysanız, PHP-XSL eklentisi kapalı olarak gelecektir. Bu sorunu, php.ini içerisinde, ";extension=php_xsl.dll" satırının başındaki noktalı virgülü(;) kaldırarak çözebiliriz.

PEAR kurulumu

Bu yazıda, Windows XP SP2 ve IIS 6.0 üzerinde nasıl kurulacağını anlatacağım. Diğer platformlar için resmi kurulum sayfasına bakabilirsiniz.

Öncelikle PEAR(PHP Extension and Application Repository)'ı kurmalıyız. Herhangi bir dağıtım kullanmadıysanız PHP kök dizininizi C:\php olarak kabul edeceğim. Kök dizinini kendi kurulumunuza göre değiştirebilirsiniz.

İlk olarak,

- Başlat > Çalıştır'a cmd yazıp, cd DOS komutuyla PHP'nin kurulu olduğu kök dizine gidiyoruz.
- go-pear.bat dosyasını çalıştırıyoruz. Kuruluma göre c:\php\pear klasörü içerisinde de olabilir.
- php.ini dosyasını açıp, include_path değişkenini buluyoruz ve PEAR kök dizininin yolunu belirtiyoruz: ";c:\php/PEAR". Eğer satır başında noktalı virgül(;) varsa kaldırmayı unutmuyoruz.

Symfony kurulumu

Komut satırını açıp, aşağıdaki komuyu yazıyor ve "symfony" kanalını ekliyoruz:

pear channel-discover pear.symfony-project.com

Paketleri listeletiyoruz:

pear remote-list -c symfony

Güncel Symfony sürümünü kuruyoruz:

pear install symfony/symfony

Ufak bir hatırlatma: php.ini dosyasında, "register_globals" ve "magic_quotes_gpc" değerleri "off" olmalı.

IIS konfigrasyonu

Symfony'nin IIS üzerinde düzgün çalışabilmesi için birkaç ayar daha yapmamız gerekli. Başlamadan önce, PHP'nin ISAPI olarak kurulduğundan emin olun.

- ISAPI_Rewrite lite sürümünü indirin.
- İlk olarak Denetim Masası > Yönetimsel Araçlar > Internet Information Services (IIS) yolunu takip ederek IIS yönetim panelini açın.
- Symfony projenizin c:\wwwroot\symfony\web dizininde olduğunu varsayalım ve yeni bir sanal dizin oluşturalım.
- php.ini dosyasını açıp, dizinimizin yolunu belirtelim.
- httpd.ini dosyası oluşturup, aşağıdaki kodları ekledikten sonra dosyayı kaydedip IIS'i yeniden başlatalım.

RewriteRule (.*) /index.php [L,U]

# Block external access to the httpd.ini and httpd.parse.errors files
RewriteRule /httpd(?:\.ini|\.parse\.errors).* / [F,I,O]

# Defend your computer from some worm attacks
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

# we skip all files with .something except .html
RewriteCond URL .*\..+$
RewriteCond URL (?!.*\.html$).*
RewriteRule (.*) $1 [L]

# we keep the .php files unchanged
RewriteRule (.*\.php)(.*) $1$2 [L]

# finally we redirect to our front web controller
RewriteRule (.*) /index.php [L]

# Defend your computer from some worm attacks
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

# we skip all files with .something except .html
RewriteCond URL /myproject/.*\..+$
RewriteCond URL (?!/myproject/.*\.html$).*
RewriteRule /myproject/(.*) /myproject/$1 [L]

# we keep the .php files unchanged
RewriteRule /myproject/(.*\.php)(.*) /myproject/$1$2 [L]

# finally we redirect to our front web controller
RewriteRule /myproject/(.*) /myproject/index.php [L]

Pfff, ve -nihayet- son adımımıza geldik. c:\wwwroot kök dizininde belirttiğimiz Symfony proje dizininin içine girip config\setting.yml dosyasını buluyoruz ve aşağıdaki kodları ekleyerek IIS konfigrasyonumuzu bitiriyoruz :P

all:
.settings:
path_info_key: HTTP_X_REWRITE_URL

all:
.settings:
relative_url_root: /myproject
path_info_key: HTTP_X_REWRITE_URL

Her ihtimale karşın, konfigrasyonu test etmek için phpinfo() fonksiyonunu kullanabilirsiniz.

Ve Askeet dökümantasyonuna gözatıp Symfony'nin yeteneklerini keşfe çıkıyoruz :)

Yararlanılan kaynaklar

  1. http://www.symfony-project.org/doc/1_1/
  2. http://en.wikipedia.org/wiki/Model-view-controller
  3. http://en.wikipedia.org/wiki/Object-relational_mapping
  4. http://pear.php.net/manual/en/installation.php
  5. http://trac.symfony-project.com/wiki/symfonyOnIIS

Bu saatte dilim döndüğünce Symfony kurulumunu anlatmaya çalışsam da yazım hatalarım ya da bilgi eksikliklerim olabilir. Surç-i lisan ettiysek affola! :)

 

5 yorum yapılmış.



Ne yapıyorum? (twitter)

 

Son yorumlar


Sık kullanılanlar


Projeler


Takip ettiklerim


En son dinlediklerim (last.fm)

 

(c) Berker PEKSAĞ. 2004-2009

Yayımlanan yazılar, kaynak gösterildiği müddetçe kullanılabilir.
Yapılan yorumların sorumluluğu yazarına aittir.