Nasıl üretim IIS web sitesi depoys yapmak?


15

Bu nedenle, bunun bir Yığın Taşması mı yoksa bir Sunucu Hatası sorusu mu olduğundan emin olun. Üretim ortamına dağıtmak istediğim bir .NET web sitem varsa, bunu yapmanın en iyi yolu nedir? MSI olarak paketlemeli ve yüklemeli miyim? Gerekli dosyaları yukarı itmek için nant kullanın. Sadece ötesinde karşılaştırma kullanarak dosyaları FTP?

Üretim kodunu nasıl dağıtırsınız? Bu, burada baktığım Windows'a özgü bir durum.

Yanıtlar:


15

IIS, xcopy dağıtımını destekler, bu nedenle özel gereksinimleriniz olmadığı sürece yalnızca dosyaları kopyalamanız yeterlidir.

Bunu yapmanın bir yolu , yeni dosyaları sunucuya kopyalamak için ROBOCOPY kullanan basit bir komut dosyasıdır .

Site büyükse ve bu çok uzun sürüyorsa, bir sürüm kontrol sistemi kullanın. Mercurial'ı bu amaçla seviyorum , ancak sürüm kontrol sisteminin yapılandırma dosyalarının halka sunulmamasına dikkat etmelisiniz. Bu durumda, dağıtmak sadece değişiklikleri yapmak ve daha sonra sunucudaki en son sürümü kontrol etmekle ilgilidir. Verimli olmanın yanı sıra, en son ve en büyüğünüzde bir showtopper hatası olması durumunda hızlı geri dönüşlere (son iyi sürümü etiketlediyseniz) izin verir.

Arıza süresini en aza indirmek için, komut dosyasının dosyaları yeni bir dizine kopyalamasını ve ardından hızlı bir şekilde dizinleri yeniden adlandırmasını veya IIS'nin yeni dizini işaret ettiği yeri değiştirmesini sağlayabilirsiniz.


1
Sürüm kontrol sistemi çekici ancak derleme gerektiren web siteleri için çok iyi çalışmayabilir. Derlenmiş bir sürüm tabii ki sürüm kontrolü altında tutulmazsa.
Jonathon Watney

1
Üretime kaynak kontrol sistemi koymayı hiç düşünmemiştim. İlginç emin beats tonlarca ekstra zip dosyaları tutmak zorunda.
JoshBerke

Subversion ile bunu her zaman yaparım. Apache'de kullanıcıların .svn dizinlerine erişemediğinden emin olmak için mod_rewrite kullanırsınız. Dağıtım için sürüm kontrolünü kullanmak kesinlikle yoludur.
Luke

13

Microsoft Web Dağıtım Aracı'nı kullanmayı düşünün . Web uygulamalarının ve bu web uygulamalarındaki güncelleştirmelerin IIS 6 ve 7 web sunucularını üretmesine yardımcı olması için özel olarak tasarlanmıştır ve MSI (Windows Installer), IMHO'dan daha iyi bir iş çıkarır.

Normalde, bir yere bir "altın ana" sitesi kurarak ve sonra araca değişiklikleri oradan paketlemesini söyleyerek kullanırsınız. Daha sonra dağıtım için bir hedef sunucuya bakacak ve altın yöneticisi gibi görünmesi için gerekli değişiklikleri yapacaktır (sonraki güncellemeler için yararlıdır). Birden fazla web sunucusuna (yani bir gruba) dağıtıyorsanız özellikle yararlıdır ve yalnızca dosyalardan daha fazlasını dağıtma desteği vardır (ayrıca kayıt defteri değişiklikleri yapma, sertifikalar, SQL veritabanları vb.


+ sonsuz. Bu araç bir cankurtaran ve daha ilginç sorunlar üzerinde çalışmak için tüm bölümleri (la tsilb) serbest bırakır.
Portman

4

Joel'in cevabını, sürekli bir Entegrasyon sunucusunun değişikliklerinizi kaynak kontrol sisteminizden almasını önererek yanıtlarım. Daha sonra projeyi inşa edecektir. Sonra yeni bir klasöre yapı çıkış xcopy olun. Daha sonra bazı hızlı yapılandırma değişiklikleri yapabilirsiniz (web.config ve app.config). Voila, Xcopy için hazır!

CruiseControl.NET'e göz atın


3

Temelde çok fazla kesintiye izin veremediğimiz bir açık artırma / e-ticaret sitesi olan önceki işverenimde ne yaptım:

  • Derleme sunucusunda dağıtmak için sürümün sıkıştırılmış derleme sürümünü alın
  • Üretim veritabanının bir kopyası olan ve üretim yazılımı ile aynı yazılım sürümüne sahip bir hazırlama sunucusunda test edin. Her şeyin yolunda gittiğini test edin. Değilse hazırlama sunucusunun dağıtımını yeniden başlatın (ancak önce bir yedeklemeyi geri yükleyin).
  • Her şey yolunda giderse: derleme ve veritabanı yükseltme komut dosyalarını yerel bir klasöre üretim sunucusuna kopyalayın. Veritabanının ve ASP.NET dosyalarının belirli bir yedeğini alın (bir şeyler hala yanlış giderse). Her şeyi hazırlayın, böylece yükseltme komut dosyasını ve veritabanı dosyalarının kopyalanmasını başlatmak için enter tuşuna basmam gerekiyor (bunun için bir komut dosyası oluşturabileceğimi unutmayın). Sonra her şeyi başlatın. Bu normalde birkaç saniyedir ve kullanıcılar kesinti olduğunu pek fark etmez.

Bir web geliştirici olarak yapmak için çok daha komik şeyler var. Ama bu işimin en önemli parçasıydı.


1

oh jeeez, işte bunun için bütün bir ekibimiz var. Bir sunucuyu küme / çiftlikten alan, dosyaları yayınlayan, NUnits'i çalıştıran ve kümeye / gruba geri ekleyen bir şirket içi araca sahiptirler. Bunu 16 sunucunun her biri için yaparlar. Saatler sürüyor. Geri kalanımızın "erişim etrafına bak" bile yoktur.

Kişisel projelerim için VS2005'ten doğrudan web sunucuma yayın yapıyorum. Kinda'nin güvenliği daha az.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.