Composer bağımlılıkları çözer; bu da bellek ve ağ erişimi ister — ikisi de paylaşımlı barındırmada kısıtlıdır. Ayrıca kodu doğrudan bir üretim sunucusuna indirir ve bir paketin değiştiğini keşfetmek isteyeceğiniz yer orası değildir.
Daha iyi düzen
Bağımlılıkları kaynaklarınızın olduğu yerde çözün ve sonucu gönderin. Böylece sunucu Composer'ı hiç çalıştırmaz.
# on your machine or in CI
composer install --no-dev --optimize-autoloader --classmap-authoritative
rsync -az --delete vendor/ user@server:/var/www/site/vendor/
- --no-dev — sınama çatılarının ve hata ayıklayıcıların üretimde işi yoktur.
- --optimize-autoloader — dosya sistemi aramaları yerine bir sınıf haritası ve ölçülebilir bir hızlanma.
- --classmap-authoritative — hiç yedek stat çağrısı yok. Yalnızca çalışma anında sınıf üreten hiçbir şey yoksa kullanın.
Sunucuda çalıştırmak zorundaysanız
php -d memory_limit=-1 /usr/local/bin/composer install --no-dev --optimize-autoloader
Alışılmış engel bellek sınırıdır. Onu yalnızca o komut için yükseltmek, bütün site için yükseltmekten kurtarır.
Kilit dosyasını depoya koyun, vendor klasörünü asla
composer.lock'ın yeri git'tir — iki kurulumu birbirinin aynı yapan şey odur. vendor klasörünün yeri ise orası değildir: depoyu devleştirir ve birleştirmeleri olanaksız kılar.
Kırık cam bırakmadan dağıtın
Dosyaları yayındaki bir klasöre kopyalamak, bazı isteklerin yeni kodun yarısını görmesi demektir. Yeni bir klasöre derleyip bir sembolik bağı çevirin; böylece değişiklik bölünmez olur.
ln -sfn /var/www/releases/2026-09-05 /var/www/current
sudo systemctl reload php8.3-fpm # clear the opcache of the old paths
Dağıtımdan sonra PHP-FPM'i yeniden yükleyin; yoksa opcache önceki kodu bellekten sunmayı sürdürür — bkz. opcache neyi önbelleğe alır.
