Ağ YönetimiLinux Sistemleri

      Ubuntu 22.04 Üzerinde Composer Yapılandırması

      PHP tabanlı projeler, harici kütüphanelerle birlikte çalışır. Bu kütüphanelerin doğru sürümlerle kurulması uygulamanın sağlıklı çalışması açısından gereklidir. Composer, proje gereksinimlerine göre gerekli paketleri otomatik olarak yönetir ve yapılandırmanın sunucular arasında tutarlı kalmasını sağlar. Bu içerik Ubuntu 22.04 üzerinde Composer kurulumunu ele alır.

      Composer İçin Gerekli Bileşenler

      Composer kullanımı, PHP komut satırı arayüzünün sistemde bulunmasını gerektirir. Paketlerin indirilmesi ve açılması sürecinde curl, zip ve unzip yardımcı araçları devreye girer. Kurulum öncesinde sistem paketlerinin güncel olması, ileride yaşanabilecek uyumluluk sorunlarını azaltır.

      sudo apt update
      sudo apt install -y php-cli php-zip unzip curl

      Kurulum tamamlandıktan sonra PHP çalışıyor mu kontrol edelim.

      php -v

      PHP sürümünün eski olması, Composer bağımlılıklarında hata oluşmasına neden olabilir. Bu durumda PHP 7.4.3’ten PHP 8.x sürümüne geçiş sürecini ele alan ilgili yazı referans alınabilir.

      Composer Kurulum Paketinin İndirilmesi

      Kurulum sürecinde güvenlik açısından Composer dosyasının doğrudan resmi kaynaktan alınması tercih edilir. Geçici bir çalışma dizini kullanılması, kurulum sırasında oluşabilecek kalıntıların önüne geçer.

      cd /tmp

      Kurulum dosyasını indirelim.

      curl -sS https://getcomposer.org/installer -o composer-setup.php

      Kurulum Dosyası Doğrulama

      HASH="$(curl -sS https://composer.github.io/installer.sig)"
      php -r "if (hash_file('sha384', 'composer-setup.php') === '$HASH') { echo 'Installer doğrulandı'; } else { echo 'Installer bozuk'; unlink('composer-setup.php'); } echo PHP_EOL;"

      Composer’ın Global Erişime Açılması

      Composer’ın global erişime açılması, proje dizininden bağımsız olarak kullanılmasını sağlar. Böylece composer komutu sistem genelinde standart bir araç haline gelir.

      sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

      Kurulum tamamlandıktan sonra kurulum dosyasını silelim.

      rm -f composer-setup.php

      Şimdi Composer’ın düzgün çalıştığını kontrol edelim.

      composer --version

      Global Kurulumu Kontrol Edelim

      Composer’ın hangi dizinden çalıştığını görmek, ileride yaşanabilecek sürüm çakışmalarını önler.

      which composer

      Beklenen çıktı genellikle /usr/local/bin/composer şeklindedir.

      Yeni Bir Composer Projesi Oluşturalım

      Şimdi küçük bir test projesi oluşturalım. Bunun için yeni bir dizin açalım ve Composer’ı başlatalım.

      mkdir composer-deneme
      cd composer-deneme
      composer init

      Bu komut bize proje adı, açıklama ve bağımlılıklarla ilgili sorular sorar. Varsayılan değerlerle ilerleyebiliriz. Bu işlem sonunda proje dizininde composer.json dosyası oluşur.

      Bir Paket Kuralım ve Test Edelim

      Örnek olarak yaygın kullanılan monolog paketini kuralım.

      composer require monolog/monolog

      Bu komut

      • composer.json dosyasını günceller
      • composer.lock oluşturur
      • vendor/ dizinini meydana getirir

      Autoload ile Paketi Kullanalım

      Composer ile kurulan paketleri kullanmak için vendor/autoload.php dosyasını dahil edelim. Basit bir test dosyası oluşturalım.

      nano test.php

      İçeriği aşağıdaki gibi olsun.

      <?php
      require __DIR__ . '/vendor/autoload.php';
      
      use Monolog\Logger;
      use Monolog\Handler\StreamHandler;
      
      $log = new Logger('demo');
      $log->pushHandler(new StreamHandler(__DIR__ . '/app.log', Logger::WARNING));
      $log->warning('Composer test log');
      
      echo "Çalışıyor\n";

      Dosyayı çalıştıralım.

      php test.php
      cat app.log

      Log dosyası oluşuyorsa Composer doğru şekilde çalışıyor demektir.

      Canlı Sunucuda Hangi Komutu Kullanalım

      Geliştirme ortamında paket eklemek için composer require kullanılır. Canlı sunucuya geçildiğinde ise genellikle şu komut tercih edilir:

      composer install

      Geliştirme bağımlılıklarını kurmamak için

      composer install --no-dev

      Performans için autoload optimizasyonu ekleyebiliriz.

      composer install --no-dev --prefer-dist --optimize-autoloader
      

      composer.json ve composer.lock Arasındaki Fark Nedir?

      composer.json, projenin hangi paketlere ihtiyaç duyduğunu ve bu paketler için kabul edilen sürüm aralıklarını tanımlar. Hangi paketin ekleneceği ve hangi sürüm aralığında çalışılacağı bu dosyada belirlenir.

      Basit bir composer.json dosyası aşağıdaki gibi görünebilir.

      {
        "require": {
          "monolog/monolog": "^3.0"
        }
      }

      Bu tanım, Monolog paketinin 3.x sürüm ailesiyle uyumlu olan en güncel sürümün kullanılabileceğini ifade eder. Ancak bu aşamada hangi alt sürümün yükleneceği netleşmiş değildir. composer.lock dosyası ise Composer tarafından otomatik olarak oluşturulur ve projede kullanılan paketlerin kesin sürüm bilgilerini içerir. Bu dosya sayesinde proje farklı bir sunucuya aktarıldığında veya başka bir ortamda kurulduğunda aynı paket sürümleri birebir olarak yüklenir. composer.lock içinde ilgili paketin aşağıdaki şekilde sabitlendiği görülebilir.

      {
        "name": "monolog/monolog",
        "version": "3.5.0"
      }

      Sık Sorulan Sorular

      Composer kurulumu için PHP’nin hangi sürümü gerekir?

      Composer, çalıştığı PHP sürümüne bağlıdır. Kullanılan paketlerin gereksinimlerine göre PHP 7.4, 8.0, 8.1 veya 8.2 gibi sürümler gerekebilir. Composer çalışıyor olsa bile, paket kurulumu sırasında PHP sürümü yetersizse hata alınabilir.

      composer install ile composer update arasındaki fark nedir?

      composer install, varsa composer.lock dosyasını esas alarak aynı sürümleri kurar ve genellikle canlı sunucularda kullanılır. composer update ise bağımlılıkları günceller, yeni sürümleri çözer ve composer.lock dosyasını değiştirir. Bu nedenle update işlemi daha çok geliştirme ortamlarında tercih edilir.

      composer.lock dosyası silinirse ne olur?

      composer.lock silinirse Composer bağımlılıkları composer.json içindeki sürüm aralıklarına göre yeniden çözer. Bu da farklı paket sürümlerinin kurulmasına ve beklenmeyen hatalara yol açabilir. Özellikle production ortamlarında bu dosyanın silinmesi önerilmez.

      vendor dizini versiyon kontrolüne eklenmeli mi?

      Genellikle vendor/ dizini Git gibi versiyon kontrol sistemlerine eklenmez. Bunun yerine composer.json ve composer.lock dosyaları repoya dahil edilir ve gerekli paketler composer install ile sunucuda yeniden kurulur.

      Hi, I’m Spesifik

      Bir yanıt yazın

      E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir