Benim ilk fikrim:
# deploy into public_html_new, and then:
rsync -vaH --delete public_html_new/ public_html/
İyi bir çözüm rsync kullanmaktı. Sadece gerçekten değiştirilen dosyaları değiştirdi. Dikkat edin, yolun sonundaki eğik çizgiler yolların burada önemli olduğunu unutmayın.
Normalde apache'nin yeniden başlatılması gerekmez, java dünyası değildir. İstek üzerine her php dosyasının değişimini kontrol eder ve değişimin üzerine otomatik olarak yeniden okur (ve yeniden belirtir).
Git çekme benzer verimli, ancak komut dosyası biraz zor olsa da. Tabii ki, farklı birleşme / değişim tespit olanakları geniş yelpazesinde olanak sağlamıştır.
Bu çözüm sorunsuz bir şekilde ancak gerçekten büyük değişiklikler olmazsa - dağıtımda büyük değişiklikler varsa, kodun kısmen değiştirileceği zaman ihmal edilemez bir zaman aralığı olmadığından, bir miktar tehlike kapatılamaz ve kısmen değil.
Büyük değişiklikler varsa, önerim ilk çözümünüzdü (iki yeniden adlandırma).
İşte biraz sert ama% 100 atomik çözüm:
(1) magento'nuzun gerçekleştiği bazı dosya sisteminizi, alternatif bir montaj yapın:
mount /dev/sdXY /mnt/tmp
(2) --bind
public_html_new ile public_html arasında bir bağlantı yapın:
mount --bind /path/to/public_html_new /path/to/public_html
Bu noktadan itibaren, apache yeni dağıtımınızı görecektir. 404'te herhangi bir değişiklik yapılması mümkün değildir.
(3) senkronizasyonu rsync ile fakat alternatif bağlama noktasında yapın):
rsync -vaH --delete /mnt/tmp/path/to/public_html_new/ /mnt/tmp/path/to/public_html/
(4) bağlama düzeneğini çıkarın
umount /path/to/public_html