İçeriğe geç

Ubuntu 22.04′ da Composer Kurulumu Nasıl Yapılır ?

Kategori: Linux Sistemleri, ve Sunucu Sistemleri

PHP projelerinde bir uygulama tek başına çalışmaz. Kullandığı ek kütüphanelerle birlikte çalışır. Bu kütüphanelerin doğru sürümde ve eksiksiz şekilde kurulması gerekir.

Composer, bu kütüphaneleri tek tek indirip ayarlamak yerine, proje için gerekli olanları otomatik olarak kurmamızı ve aynı yapıyı her sunucuda tekrar oluşturabilmemizi sağlar. Bu yazımızda Ubuntu 22.04 üzerinde Composer’ı nasıl kurabileceğimizi inceleyeceğiz.

Kurulum Öncesi Hazırlık

Composer çalıştırabilmek için sistemde PHP CLI bulunmalıdır. Ayrıca paketlerin indirebilmesi ve açılabilmesi için curl, zip ve unzip araçlarına ihtiyaç vardır.

Önce sistemi güncelleyelim ve gereken paketleri kuralım.

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üz eskiyse Composer bazı paketlerde hata verebilir, bu durumda PHP 7.4.3’ü PHP 8.x’e yükseltme adımlarını anlattığımız rehberimize göz atabilirsiniz.

Composer Kurulum Dosyasını İndirelim

Güvenli bir kurulum için Composer’ı resmi kaynaktan indirelim. Geçici bir dizinde çalışmak daha temiz olacaktır.

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’ı Global Olarak Kuralım

Composer’ı sistem genelinde kullanılabilir hale getirelim. Böylece her dizinde composer komutunu getirebiliriz.

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 yapı, Monolog paketinin 3.x sürümleriyle uyumlu olan en güncel versiyonunun kullanılabileceğini ifade eder. Ancak hangi alt sürümün kurulacağı bu aşamada kesinleşmiş değildir.

composer.lock dosyası ise Composer tarafından otomatik olarak oluşturulur ve kurulan paketlerin net sürümlerini içerir. Bu dosya sayesinde proje farklı bir sunucuya taşındığında ya da başka biri projeyi kurduğunda, birebir aynı paket sürümleri yüklenir.

composer.lock içinde aynı paketin şu şekilde sabitlendiğini görebiliriz.

{
  "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.

İlk Yorumu Siz Yapın

Bir yanıt yazın

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