Nasıl webserverlarda için bir web sitesi dağıtmak?

8 Cevap php

Benim şirkette bizim iş web sitesi için 8 web geliştiricileri bir grup var (tamamen PHP ile yazılmış, ama bu önemli değil). Gruptaki herkesin aynı anda farklı projeler üzerinde çalışıyor ve onların görevi ile bitti zaman, hemen (neden iş bu gün hızlı hareket ediyor) dağıtın.

Şu anda gelişme tüm geliştiricileri (uzakta diğerlerinden dosyaları "kilitlemek" için RCS kullanarak) aynı kod tabanı üzerinde çalışan ile bir paylaşılan bir sunucuda olur. Dağıtım zamanı geldiğinde, değişen dosyaları bir "hazırlama" sunucu üzerine kopyalanır ve daha sonra bir senkronizasyon script diğer 9 sunuculara dağılmış nerede bizim ana sunucunuza dosyaları yükler vardır.

Oldukça mutlu, web dev takım (Bize bir süre için şikayet sonra) sürecini iyileştirmek amacıyla yardım için bize sordu ve şöyle şimdi dev ortamı kurmak için bizim fikir:

  • Sanal dizinleri ile bir dev sunucu, herkes kendi kod temeli vardır ki
  • SVN (veya başka bir VCS) değişiklikleri izlemek için
  • kodunda teslim son tutan test için merkezi bir sunucu

Şimdi soru şudur: Nasıl diğer projelerden arızî yükleme hata olmadan sunucuya değiştirilmiş dosyaları dağıtmak için yönetirim? Benim ilk fikir basitçe deposundan son revizyon ihracat, ancak bu dosyaları üzerinde tam kontrol vermezdim oldu.

Nasıl böyle bir durum yönetirim? Eğer eylem dağıtım komut ne tür var mı?

(Özel bir meydan okuma olarak: web sitesi organik son 10 yılda büyüdü, bu yüzden projeleri küçük parçalar halinde bölmek değil, belirli bir özelliği dosyaların tüm dizin ağacı yayılmıştır.)

8 Cevap

Cassy - Açıkçası sizin sırayla tamamen kaynak kodu yönetimi alırsınız önce gitmek için uzun bir yol var, ama size yolda gibi geliyor!

Bireysel kum havuzuna sahip kesinlikle şeyler yardımcı olacaktır. Sonraki ardından web sitesi DAİMA devirmenin belirli bir revizyon etiketi veya şube sadece temiz bir çıkış olduğundan emin olun.

Biz budala kullanabilirsiniz, ancak biz benzer bir kurulum var. Biz bir sürüm numarası (! Git içinde biz de etiketine bir açıklama eklemek için olsun, sürüm notları için iyi) ile belirli bir sürümünü etiketlemek ve sonra biz erişimi olan herkes bu iki alır çalıştırabilirsiniz "bir çıkış yapmak" bir komut dosyası var parametreler - (biz test veya üretim sunucu güncelleme eğer veri merkezini ve) ve daha sonra sürüm numarası (etiket) sistemi güncellenmiş olacak.

Komut dosyası daha sonra paylaşılan bir hesapta serbest komut dosyasını çalıştırmak için sudo kullanır. Bu sürümüyle alakalı bir ödeme yapar, javascript en aza indirir ve CSS [1], çevre için ilgili sunuculara kodu iter ve daha sonra yeniden başlatılması gerekenleri yeniden başlatır. Serbest yazısının son satırı webserverların birine bağlanır ve hata günlüğünü azalır.

our websites biz geçerli sunucu adı ve sürümü ile her sayfanın alt kısmında bir html yorum kapsamaktadır - "şu anda çalışan Neler" kolay görmek için yapar

[1] ve bunun gibi diğer temizlik görevleri bir demet ...

Onların ortak kod temeli büyük değişiklikler yaparsanız, dallanma kullanarak ve (aynı kod temeli üzerinde) bireysel projeler için birleştirme düşünmelisiniz.

biz genellikle uncommited kodunu (tüm sigara işleyen kod işlemek istemiyorum) test etmek için test için bir yerel dev ortamı (anlamı, yerel web sunucusu) var, ama bu dev çevre hatta paylaşılan klasörleri kullanarak bir separeate sunucu üzerinde olabilir.

Ancak, kod taahhüt, üretim koymadan önce test için bir hazırlama sunucusuna konuşlanmış olması gerekir.

Yakut bazı articles PHP için nasıl kullanılacağını açıklayan daha var olsa bile muhtemelen Capistrano kullanabilirsiniz

Ben Phing CVS ile kullanmak olabilir düşünüyorum ama değil SVN ile (dün okudum en azından ne olduğunu)

Orada bazı proje, taklit Capistranoda etrafında da vardır ama PHP ile yazılmış.

Aksi bir ölçüye çözüm de var:

  1. dağıtmak istediğiniz dosyaları etiketlemek.
  2. checkout files using the tag in a
    specific directory
  3. symlink the directory to the current document root (easy to rollback to the previous version)

Doğal depo için SVN check out, Trac şeyleri izlemek, ve Apache Ant dağıtmak için.

Temel işlem Trac repositroy ve geliştiriciler izleme ve gerekli ayarları ile sitenizi itmek için Ant dağıtım komut kullanarak, Subversion yönetiyor. Ant kolayca belirli bir konuma bir proje dağıtmak sağlar. (Dev / test / eşya vb)

Sen bakmak gerekir:

  • Sürekli Entegrasyon
  • Bunu kontrol etmek için kod check-in üzerinde birim testleri çalışan hatasız
  • Bir hata varsa, potansiyel kodu reddetme
  • Having gece oluşturur
  • Ücretsiz hata oldu sadece son yapı ibra

Özellikle ilk başta değil, mükemmel bir çözüm alamayabilirsiniz, ama daha seçtiğiniz çözümü kullanmak, daha rahat herkes almak ve bunu geliştirmeye önerilerde bulunmak mümkün olacak.

Biz ant, her gece ile istikrar için kontrol edin. Ve dağıtmak için ant komut dosyası kullanabilirsiniz. Bu yapılandırmak ve kullanmak çok kolaydır.

Ben başka soruya bir similar answer dün verdi. Temelde şubelerde çalışmak ve canlı gitmeden önce entegre edebilirsiniz.

Eğer yuvarlak başını almak zorunda kalacaklar büyük şey yerine tek tek dosyalar yerine, dosyaları changes ile ilgili olmasıdır. Eğer şubeleri var sonra içeri farklı değişiklikler ile sadece sürümler orada gerçekten bir güncel sürümü yok

Biz (4 kişi ... bazen 5 veya 6) daha sonra geliştirme ve test için SourceGear en Vault (ve o bunun çok eski bir sürümünü) kullanın ve biz üretim için her şeyi ftp çünkü ben ilgi ile bu yazı okuyorum.

Zayıf. Biliyorum. Windows kullanıyorsanız, ancak ben bir Mac üzerinde çalışmak ve yalnızca Windows GUI istemci sunduğu en kullanışlı özelliklerinden hepsini keser komut satırından kullanmak zorunda kalırsam Vault gayet iyi. (Ben tercih ettiği bütün ve bütün bunlar komut satırından çok daha fazla güç sunacak) biz Subversion veya Git veya cıva veya nezih başka bir şey kullanılan diliyorum ama bu benim kararım değil. Sonra biz "üretim sunucu üzerine bu dosyaları FTP ve bir spin için götürün ... Eğer herhangi bir sorun bulursanız bakın" kenara bazı "gerçek" dağıtım çözümü olsaydı.

Ben, non-cludgy, çözümler insanlar burada yayınlamak gerçek dünyada ne tür görmek için sabırsızlanıyoruz.