PHP Site Dağıtım Öneri [kapalı]

3 Cevap php

Ben şu anda oldukça benim takımım benimsiyor dağıtım yoluyla rahatsız ediyor ... Bu çok eski moda ve ben çok iyi çalışmıyor biliyorum. Ama ben tam olarak bunu değiştirmek için biliyorum, bu yüzden bu konuda bazı öneriler veriniz bilmiyorum ...

Burada mevcut kurulum:

  • 2 websunucu
  • 1 veritabanı sunucusu
  • 1 test sunucusu

Akım dağıtım adaptasyon

  1. Biz geliştirmek ve test sunucusu üzerinde çalışmak, her değişiklik sınama sunucusuna elle yüklenir.
  2. Bir değişiklik veya özellik tamamlandığında, biz o zaman SVN depo değişiklikleri taahhüt.
  3. Değişiklikleri yapılıyor, biz sonra sunucuları arasında dosyaları senkronize etmek için her dakika çalışan bir cronjob olacak ilk webserver, bizim değişiklikleri karşıya.

Biz senkronizasyon işi başlar gibi bir dosya upload zaman çok can sıkıcı bir şey, sadece yarım-yüklenen beri senkron-ed, bozuk görünür olan dosyadır. Başka bir şey dağıtım arıza olduğunda, o geri dönmek için son derece zor olacaktır. Bu temelde ben bakan değilim sorun, ben ne yapmalıyım nelerdir?

Buna ek olarak, dosyaları her zaman diğer sunuculara senkron-ed olması gerekir 1 webserver, bu nedenle bu yana cronjob nedeni vardı.

P / S: Ben söylemeyi unutmuşum özür dilerim, SVN sunucusu barındırılmaktadır. Biz bunun üzerinde çok fazla denetim yok, ama ben kanca düzenleyebilirsiniz inanıyorum ...

3 Cevap

Phing webserverlarda için dağıtım yönetmek ve cron kurtulmak gibi bir dağıtım çerçeve kullanın. Temelde, üretim sisteminde bir sürüm otomatik olarak gerçekleşmesi gerektiğini, ancak mevcut yapı kırık olmadığı belli olduktan sonra. Ve bu dev sistemde bir bağımlılık olmamalıdır.

Phing dağıtım süreci yapılandırmak ve kontrol etmek için XML ve PHP kullanır, sürüm sürecini kontrol edebilirsiniz. Eğer spesifik bağlı dağıtım uygulamanın inşa tutmak gibi bu, bir yararı olduğunu.

Dağıtım işlemi tarafından etkilenen olmaktan üretim sitesi önlemek için, ayrı bir dizine yeni bir yapı yükleme düşünün ve sonra sadece sembolik olarak bağlayacaktır. Bir şey yanlış giderse, kolayca bir önceki sürüme sembolik bir link olabilir.

Ayrıca düşünün using a CI server.

Benim son yerde aynı şeyi yaptı. Ne vardı:

  • web sitesi başına bir depo
  • canlı sitesinde (yani /branches/live) ve test sitesine adanmış her web sitesi için bir dal (yani /branches/testing)
  • SVN konuşabilirsin 2 webserverların
  • SVN konuşabilirsin bir test sunucusu
  • Tüm sunucular SVN komut satırı istemcisi yüklü vardı

Her webserver bağımsız çalışan, bu yüzden gerçekten birbirleri hakkında bilmiyordum - yük dengeleyici bırakıldı söyledi. Her sunucu, her 3 saatte bir ve dosya sistemi üzerinde doğru klasöre her web sitesini live dalı exported son sürümünü koştu cronjob vardı.

Bizim test sunucusu üzerinde, bir checkout her web sitesi için testing şube ve hiçbir cronjob oldu. Onlar canlı gitmeden önce kullanıcıların test etmek için bir şey koymak istedim her Geliştiriciler klasörleri güncellendi.

Gelişmeler esnasında, commits trunk sitesinin yapılmıştır. Değişiklikleri test etmek için hazır olduğunda, onlar test şube ve test sunucusu üzerinde elle güncellenen kasada birleştirilmiştir. Değişiklikleri canlı gitmek için hazır olduğunda, onlar canlı şubesine birleşti ve sunucular günün sonunda güncellenmiş olurdu.

3 yıl içinde sadece bir geliştirici yanlış bir şey taahhüt ve geri siteyi rulo vardı bir sorun vardı.

Kısmi bir düzeltme olarak, onu ziyaret ettiğinizde bu URL'yi maruz rsync çalışır (Açıkçası, bu URL ile sunucuyu 1 vurmak için emin olmak için gerektiğinde kontrol edemez ve böylece, rsync komutunu tetikleyen web sitesinde bir URL oluşturmak halka). Daha da iyisi, kullanmak ne olursa olsun yükleme komut sonunda rsync URL'sini çağırmak için kıvırmak kullanın.