Giriş
Symfony, PHP ile web uygulamaları geliştirmek için kullanılan güçlü ve esnek bir PHP framework’üdür. Modüler yapısı, yeniden kullanılabilir bileşenleri ve geniş topluluk desteği sayesinde, küçük kişisel projelerden büyük kurumsal uygulamalara kadar her türlü ihtiyaca cevap verebilir. Bu rehberde, özellikle Ubuntu 14.04 işletim sistemi üzerinde Symfony 2’nin nasıl kurulacağını ve temel seviyede nasıl kullanılmaya başlanacağını adım adım inceleyeceğiz. Ubuntu 14.04, uzun süreli destek (LTS) sunan popüler bir dağıtım olduğundan, bu platformda Symfony 2 kurulumu birçok geliştirici için hala geçerli ve önemlidir. Symfony 2 sürümleri genellikle PHP 5.3.x ila PHP 5.6.x aralığını destekler, bu da Ubuntu 14.04’ün varsayılan PHP 5.5.9 sürümü ile uyumlu olduğu anlamına gelir.
Bu rehberin amacı, Symfony 2 projenizi hızlı ve sorunsuz bir şekilde ayağa kaldırmak için gerekli tüm adımları, pratik bilgiler ve kod örnekleriyle sunmaktır. Apache web sunucusu, PHP ve MySQL gibi temel bileşenlerin kurulumundan başlayarak, Composer ile Symfony projesi oluşturmaya ve ilk basit uygulamanızı çalıştırmaya kadar her şeyi kapsayacağız.
Ön Gereksinimlerin Kurulumu ve Ortam Hazırlığı
Symfony 2 projenizi kurmadan önce, Ubuntu 14.04 sisteminizde bir web sunucusu, PHP ve bir veritabanı yönetim sistemi gibi temel ön gereksinimleri hazırlamamız gerekiyor. Bu bölümde bu bileşenlerin kurulumunu ve temel yapılandırmasını ele alacağız.
Sistem Güncellemesi
Kuruluma başlamadan önce sistem paket listelerini güncelleyelim:
sudo apt-get update
sudo apt-get upgrade -y
Apache Web Sunucusu Kurulumu
Apache, dünyada en çok kullanılan web sunucularından biridir. Symfony uygulamalarımızı çalıştırmak için onu kullanacağız.
sudo apt-get install apache2 -y
Kurulumdan sonra Apache’nin çalıştığını kontrol edebilirsiniz:
sudo service apache2 status
Tarayıcınızda http://localhost adresine giderek “It works!” mesajını görmelisiniz.
PHP ve Gerekli Uzantıların Kurulumu
Symfony 2, PHP ile yazılmıştır ve belirli PHP uzantılarına ihtiyaç duyar. Ubuntu 14.04’te varsayılan PHP sürümü 5.5.9’dur ve Symfony 2 için oldukça uygundur.
sudo apt-get install php5 libapache2-mod-php5 php5-cli php5-mysql php5-intl php5-curl php5-gd php5-json php5-mcrypt php5-xsl -y
php5: PHP yorumlayıcısı.libapache2-mod-php5: Apache için PHP modülü.php5-cli: Komut satırından PHP çalıştırmak için (Composer ve Symfony konsol komutları için gerekli).php5-mysql: MySQL veritabanı bağlantısı için.php5-intl: Uluslararasılaştırma (Internationalization) desteği için (Symfony Form bileşeni için gerekli).php5-curl: cURL desteği için (bazı HTTP istekleri ve API entegrasyonları için).php5-gd: Görsel işleme (resim, captcha vb.) için.php5-json: JSON desteği için.php5-mcrypt: Şifreleme işlemleri için (Symfony Security bileşeni tarafından kullanılabilir).php5-xsl: XSL dönüşümleri için (bazı XML işlemleri için).
PHP uzantılarını kurduktan sonra Apache’yi yeniden başlatmalısınız:
sudo service apache2 restart
PHP Yapılandırması (php.ini)
Symfony’nin sorunsuz çalışması için bazı PHP ayarlarını düzenlememiz gerekebilir. Özellikle memory_limit ve date.timezone ayarları önemlidir.
PHP yapılandırma dosyasını (php.ini) açın:
sudo nano /etc/php5/apache2/php.ini
Aşağıdaki ayarları bulun ve gerektiğinde güncelleyin:
memory_limit = 256Mveya daha yüksek bir değer (varsayılan 128M olabilir).date.timezone = Europe/Istanbul(veya bulunduğunuz bölgeye uygun bir saat dilimi).
Değişiklikleri kaydettikten sonra Apache’yi tekrar başlatın:
sudo service apache2 restart
MySQL Veritabanı Kurulumu
Çoğu web uygulaması bir veritabanına ihtiyaç duyar. MySQL, Symfony ile yaygın olarak kullanılan bir seçenektir.
sudo apt-get install mysql-server -y
Kurulum sırasında root kullanıcısı için bir parola belirlemeniz istenecektir. Bu parolayı unutmayın.
Kurulum tamamlandıktan sonra MySQL’i güvence altına almak için şu komutu çalıştırabilirsiniz:
sudo mysql_secure_installation
Burada root parolası belirleme, anonim kullanıcıları kaldırma, uzaktan root girişini devre dışı bırakma ve test veritabanını silme gibi seçenekler sunulacaktır. Genellikle tüm sorulara ‘Y’ (Evet) yanıtı vermek iyi bir uygulamadır.
Composer Kurulumu
Composer, PHP için bir bağımlılık yöneticisidir. Symfony ve birçok PHP kütüphanesi bağımlılıklarını yönetmek için Composer’ı kullanır.
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
Composer’ın başarıyla kurulduğunu kontrol edin:
composer -V
Bu komut Composer sürümünü göstermelidir.
Symfony 2 Kurulumu ve İlk Yapılandırma
Tüm ön gereksinimleri kurduktan sonra, artık Symfony 2 projemizi oluşturmaya ve temel yapılandırmaları yapmaya hazırız.
Symfony 2 Projesi Oluşturma
Composer kullanarak yeni bir Symfony 2 projesi oluşturalım. Symfony 2’nin son stabil sürümü 2.8’dir ve bu sürüm PHP 5.5.9 ile uyumludur.
Projenizi oluşturmak istediğiniz dizine gidin (örneğin, /var/www/html veya /home/kullanici/projeler).
cd /var/www/html
sudo composer create-project symfony/framework-standard-edition my_symfony_app "2.8.*"
my_symfony_app: Projenizin adı olacak dizin."2.8.*": Symfony 2.8’in en son stabil sürümünü yükler.
Bu komut, Symfony Framework Standard Edition’ı indirecek ve gerekli tüm bağımlılıkları kuracaktır. Bu işlem biraz zaman alabilir.
Dosya İzinlerini Ayarlama
Symfony, app/cache ve app/logs dizinlerine yazma iznine ihtiyaç duyar. Bu dizinlerin web sunucusu kullanıcısı (genellikle www-data) tarafından yazılabilir olması gerekir.
cd my_symfony_app
sudo chown -R www-data:www-data app/cache app/logs
sudo chmod -R 775 app/cache app/logs
Alternatif ve daha güvenli bir yöntem olarak setfacl kullanabilirsiniz:
sudo apt-get install acl -y
sudo setfacl -R -m u:www-data:rwX -m u:$(whoami):rwX app/cache app/logs
sudo setfacl -R -m o:rX app/cache app/logs
Bu komutlar, www-data kullanıcısına ve mevcut kullanıcınıza ($(whoami)) bu dizinlere tam erişim sağlar.
Apache Virtual Host Yapılandırması
Symfony uygulamanızı tarayıcıdan erişilebilir hale getirmek için Apache’de bir Virtual Host yapılandırması oluşturmalısınız. Bu, uygulamanızın web/ dizinini belge kökü olarak işaret eder.
Yeni bir Virtual Host dosyası oluşturalım:
sudo nano /etc/apache2/sites-available/my_symfony_app.conf
İçine aşağıdaki içeriği yapıştırın (ServerName ve DocumentRoot değerlerini kendi projenize göre düzenleyin):
ServerName my_symfony_app.local
DocumentRoot /var/www/html/my_symfony_app/web
AllowOverride All
Order Allow,Deny
Allow from All
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
ErrorLog ${APACHE_LOG_DIR}/my_symfony_app_error.log
CustomLog ${APACHE_LOG_DIR}/my_symfony_app_access.log combined
Apache’nin mod_rewrite modülünü etkinleştirmemiz gerekiyor:
sudo a2enmod rewrite
Yeni Virtual Host’u etkinleştirin ve varsayılan Virtual Host’u devre dışı bırakın (çakışmaları önlemek için):
sudo a2ensite my_symfony_app.conf
sudo a2dissite 000-default.conf
Apache’yi yeniden başlatın:
sudo service apache2 restart
Son olarak, my_symfony_app.local alan adını yerel IP adresinize yönlendirmek için /etc/hosts dosyanızı düzenlemeniz gerekebilir:
sudo nano /etc/hosts
Dosyanın sonuna aşağıdaki satırı ekleyin:
127.0.0.1 my_symfony_app.local
Veritabanı Yapılandırması
Symfony projenizin veritabanı bağlantı bilgilerini app/config/parameters.yml dosyasında yapılandırmanız gerekir. Bu dosya varsayılan olarak zaten mevcuttur.
nano app/config/parameters.yml
Aşağıdaki satırları kendi MySQL ayarlarınıza göre düzenleyin:
# app/config/parameters.yml
parameters:
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: ~
database_name: symfony_db # Kendi veritabanı adınızı belirleyin
database_user: root # MySQL root kullanıcısı veya özel bir kullanıcı
database_password: your_mysql_root_password # MySQL root parolanız
# ... diğer parametreler
Veritabanını oluşturmak için Symfony konsolunu kullanabilirsiniz:
php app/console doctrine:database:create
Yapılandırma Denetleyicisini Çalıştırma
Symfony, ortamınızın tüm gereksinimleri karşılayıp karşılamadığını kontrol eden bir denetleyici sağlar. Tarayıcınızda veya komut satırında çalıştırabilirsiniz:
Tarayıcıdan: http://my_symfony_app.local/config.php adresine gidin. Her şey yeşil olmalıdır.
Komut satırından:
php app/check.php
Herhangi bir hata veya uyarı varsa, bunları düzeltmeye çalışın.
Symfony 2 ile İlk Adımlar
Symfony projenizi başarıyla kurduğunuza göre, şimdi temel bileşenleri anlayarak ve basit bir sayfa oluşturarak ilk adımlarınızı atalım.
Uygulamaya Erişme
Tarayıcınızda http://my_symfony_app.local/app_dev.php adresine giderek Symfony karşılama sayfasını görmelisiniz. Bu, geliştirme ortamıdır ve hata ayıklama araçlarını içerir. Üretim ortamı için http://my_symfony_app.local/app.php adresini kullanabilirsiniz.
Temel Dizin Yapısı
Symfony projenizin ana dizinleri şunlardır:
app/: Uygulama yapılandırması, önbellek ve günlük dosyaları.src/: Uygulamanızın ana kodunu (Bundle’lar) içerir.web/: Web sunucusu tarafından erişilebilen genel dizin (CSS, JS, resimler,app.php).vendor/: Composer tarafından yönetilen tüm kütüphaneler.
Basit Bir Controller ve Route Oluşturma
Symfony’de uygulamalar Bundle’lar halinde organize edilir. Varsayılan olarak AppBundle bulunur. Şimdi bu Bundle içinde basit bir sayfa oluşturalım.
src/AppBundle/Controller/DefaultController.php dosyasını açın (eğer yoksa oluşturun) ve aşağıdaki içeriği ekleyin:
* @Route("/", name="homepage")
*/
public function indexAction()
{
// Twig şablonunu render edin
return $this->render('default/index.html.twig', array(
'name' => 'Symfony 2 Rehberi',
));
}
/
* @Route("/merhaba/{name}", name="merhaba_sayfasi")
*/
public function merhabaAction($name)
{
return new Response('Merhaba ' . $name . '!');
}
}
Yukarıdaki kodda iki action (metot) tanımladık:
indexAction: Ana sayfa (/) için bir Twig şablonu render eder.merhabaAction: Dinamik bir isimle (/merhaba/{name}) bir “Merhaba” mesajı döndürür.
indexAction metodu için bir Twig şablonu oluşturalım: app/Resources/views/default/index.html.twig
{% extends '::base.html.twig' %}
{% block title %}Hoş Geldiniz!{% endblock %}
{% block body %}
{{ name }}'ne Hoş Geldiniz!
Bu sizin ilk Symfony 2 uygulamanız.
Merhaba Dünya! diyin.
{% endblock %}
Şimdi tarayıcınızdan http://my_symfony_app.local/app_dev.php/ adresine giderek ana sayfanızı ve http://my_symfony_app.local/app_dev.php/merhaba/Ali adresine giderek dinamik “Merhaba” sayfanızı görebilirsiniz.
Konsol Komutları
Symfony konsol komutları geliştirme sürecinde çok önemlidir. Bazı sık kullanılan komutlar:
- Önbelleği Temizleme:
php app/console cache:clear --env=dev php app/console cache:clear --env=prod - Route’ları Görüntüleme:
php app/console router:debug - Veritabanı Şemasını Güncelleme (Doctrine ORM kullanıyorsanız):
php app/console doctrine:schema:update --force
Sonuç ve Sıkça Sorulan Sorular (SSS)
Bu rehberde, Ubuntu 14.04 üzerinde Symfony 2 geliştirme ortamını kurmaktan, Composer ile proje oluşturmaya, temel dosya izinlerini ve Apache Virtual Host’unu yapılandırmaya kadar tüm adımları detaylı bir şekilde ele aldık. Ayrıca basit bir Controller ve Twig şablonu oluşturarak Symfony ile ilk adımlarınızı atmanızı sağladık. Artık kendi Symfony 2 uygulamalarınızı geliştirmeye hazırsınız.
Sıkça Sorulan Sorular (SSS)
S: Symfony 2 ile Symfony 3/4/5 arasındaki fark nedir? Neden Symfony 2 kullanmalıyım?
C: Symfony 2, PHP 5.3.x’ten 5.6.x’e kadar olan sürümleri desteklerken, Symfony 3+ sürümleri PHP 7 ve üzeri gereksinimlere sahiptir. Ubuntu 14.04’ün varsayılan PHP sürümü 5.5.9 olduğu için, bu rehber özellikle Symfony 2 için hazırlanmıştır. Eğer daha güncel bir PHP sürümü (PHP 7+) kullanabiliyorsanız, Symfony’nin daha yeni sürümlerini tercih etmeniz önerilir, çünkü daha iyi performans, daha modern özellikler ve uzun süreli destek sunarlar. Ancak mevcut bir Ubuntu 14.04 sisteminde kalmanız gerekiyorsa, Symfony 2.8 LTS (Long Term Support) iyi bir seçenektir.
S: app/cache ve app/logs dizinleri için izin hatası alıyorum, ne yapmalıyım?
C: Bu, en yaygın sorunlardan biridir. Web sunucusu kullanıcısının (genellikle www-data) bu dizinlere yazma izni olması gerekir. Rehberde belirtilen sudo chown -R www-data:www-data app/cache app/logs ve sudo chmod -R 775 app/cache app/logs veya daha güvenli olan setfacl komutlarını doğru şekilde uyguladığınızdan emin olun. Komutları çalıştırdıktan sonra Apache’yi yeniden başlatmayı unutmayın.
S: php app/check.php çalıştırdığımda kırmızı uyarılar görüyorum, ne anlama geliyor?
C: Bu uyarılar, Symfony’nin optimum şekilde çalışması için önerilen veya gerekli olan PHP ayarlarının veya uzantılarının eksik olduğunu gösterir. Rehberdeki PHP ve uzantı kurulum adımlarını kontrol edin ve php.ini dosyasındaki memory_limit, date.timezone gibi ayarları doğru yaptığınızdan emin olun. Her değişiklikten sonra Apache’yi yeniden başlatmayı unutmayın.
S: Önbelleği nasıl temizlerim?
C: Symfony önbelleğini temizlemek için konsol komutunu kullanın: php app/console cache:clear --env=dev (geliştirme ortamı için) veya php app/console cache:clear --env=prod (üretim ortamı için). Bazen --no-warmup parametresiyle kullanmak da gerekebilir: php app/console cache:clear --env=dev --no-warmup.
S: Sanal host (Virtual Host) ayarlarını yaptım ama tarayıcıda hala “It works!” sayfası görünüyor veya “Sayfa Bulunamadı” hatası alıyorum.
C: Aşağıdaki adımları kontrol edin:
sudo a2ensite my_symfony_app.confile Virtual Host’unuzu etkinleştirdiğinizden emin olun.sudo a2dissite 000-default.confile varsayılan Virtual Host’u devre dışı bıraktığınızdan emin olun.sudo a2enmod rewriteile Apache’nin rewrite modülünü etkinleştirdiğinizden emin olun.- Her değişiklikten sonra
sudo service apache2 restartile Apache’yi yeniden başlattığınızdan emin olun. /etc/hostsdosyasındamy_symfony_app.localalan adını doğru IP adresine yönlendirdiğinizden emin olun.- Virtual Host dosyanızdaki
DocumentRootyolunun doğru olduğundan ve projenizinweb/dizinine işaret ettiğinden emin olun.