Web Paketleri Dağıtma

tarafından Jason Lee

Bu konuda, Internet Information Services (IIS) Web Dağıtım Aracı (Web Dağıtımı) 2.0'ı kullanarak uzak bir sunucuya web dağıtım paketlerini nasıl yayımlayabileceğiniz açıklanır.

Web paketini uzak sunucuya dağıtmanın iki ana yolu vardır:

  • MSDeploy.exe komut satırı yardımcı programını doğrudan kullanabilirsiniz.
  • Derleme işleminin oluşturduğu [proje adı].deploy.cmd dosyasını çalıştırabilirsiniz.

Sonuç, hangi yaklaşımı kullandığınızdan bağımsız olarak aynıdır. Temel olarak, .deploy.cmd dosyasının yaptığı tek şey MSDeploy.exe önceden belirlenmiş bazı değerlerle çalıştırmaktır, böylece paketi dağıtmak için çok fazla bilgi sağlamanız gerekmez. Bu, dağıtım işlemini basitleştirir. Öte yandan, MSDeploy.exe doğrudan kullanmak, paketinizin tam olarak nasıl dağıtılacağı konusunda size çok daha fazla esneklik sağlar.

Hangi yaklaşımı kullanacağınız, dağıtım işlemi üzerinde ne kadar denetime ihtiyacınız olduğu ve Web Dağıtımı Uzak Aracısı hizmetini mi yoksa Web Dağıtımı İşleyicisi'ni mi hedeflediğiniz de dahil olmak üzere çeşitli faktörlere bağlıdır. Bu konu başlığı altında her yaklaşımın nasıl kullanılacağı açıklanır ve her yaklaşımın ne zaman uygun olduğunu tanımlar.

Bu konudaki görevler ve izlenecek yollarda şunlar varsayılır:

[project name].deploy.cmd dosyasını çalıştırmak, web paketini dağıtmanın en kolay yoludur. Özellikle.deploy.cmd dosyasını kullanmak, doğrudan MSDeploy.exe kullanmaya göre şu avantajları sunar:

  • Web dağıtım paketinin konumunu belirtmeniz gerekmez; .deploy.cmd dosyası nerede olduğunu zaten bilir.
  • SetParameters.xml dosyasının konumunu belirtmeniz gerekmez; .deploy.cmd dosyası nerede olduğunu zaten bilir.
  • Kaynak ve hedef MSDeploy sağlayıcılarını belirtmeniz gerekmez; .deploy.cmd dosyası hangi değerlerin kullanılacağını zaten bilir.
  • MSDeploy işlem ayarlarını belirtmeniz gerekmez; .deploy.cmd dosyası yaygın olarak gerekli değerleri otomatik olarak MSDeploy.exe komutuna ekler.

Bir web paketini dağıtmak için .deploy.cmd dosyasını kullanmadan önce şunları yaptığınızdan emin olmalısınız:

  • .deploy.cmd dosyası, [proje adı]. SetParameters.xml dosyası ve web paketi ([proje adı].zip) aynı klasörde yer alır.
  • . deploy.cmd dosyasını çalıştıran bilgisayara Web Dağıtımı (MSDeploy.exe) yüklenir.

.deploy.cmd dosyası çeşitli komut satırı seçeneklerini destekler. Dosyayı komut isteminden çalıştırdığınızda, temel söz dizimi şöyledir:

[project name].deploy.cmd [/T | /Y]
                          [/M:<computer name>]
                          [/A:<Basic | NTLM>]
                          [/U:<user name>]
                          [/P:<password>]
                          [/L]
                          [/G:<true | false>]
                          [Additional MSDeploy.exe flags]

Sırasıyla bir deneme çalıştırması mı yoksa canlı dağıtım mı yapmak istediğinizi belirtmek için bir / T bayrağı veya /Y bayrağı belirtmeniz gerekir (aynı komutta her iki bayrağı da kullanmayın). Bu tabloda bu bayrakların her birinin amacı açıklanmaktadır.

Bayrak Açıklama
/T Deneme çalıştırmasını gösteren –whatif bayrağıyla MSDeploy.exe çağırır. Paketi dağıtmak yerine, paketi dağıttığınızda ne olacağını belirten bir rapor oluşturur.
/Y –whatif bayrağı olmadan MSDeploy.exe çağırır. Bu, paketi yerel bilgisayara veya belirtilen hedef sunucuya dağıtır.
/M Hedef sunucu adını veya hizmet URL'sini belirtir. Burada sağlayabileceğiniz değerler hakkında daha fazla bilgi için bu konunun Uç Nokta Konuları bölümüne bakın. /M bayrağını atlarsanız paket yerel bilgisayara dağıtılır.
/A MSDeploy.exe dağıtımı gerçekleştirmek için kullanması gereken kimlik doğrulama türünü belirtir. Olası değerler NTLM ve Basic değerleridir. /A bayrağını atlarsanız, kimlik doğrulama türü varsayılan olarak Web Dağıtımı Uzak Aracı hizmetine dağıtım için NTLM'ye ve Web Dağıtımı İşleyicisi'ne dağıtım için Temel'e ayarlanır.
/U Kullanıcı adını belirtir. Bu, yalnızca temel kimlik doğrulaması kullanıyorsanız geçerlidir.
/P Parolayı belirtir. Bu, yalnızca temel kimlik doğrulaması kullanıyorsanız geçerlidir.
/L Paketin yerel IIS Express örneğine dağıtılması gerektiğini gösterir.
/G Paketin tempAgent sağlayıcı ayarı kullanılarak dağıtıldığını belirtir. /G bayrağını atlarsanız, değer varsayılan olarak false olur.

Not

Derleme işlemi her web paketi oluşturduğunda, bu dağıtım seçeneklerini açıklayan [proje adı].deploy-readme.txt adlı bir dosya da oluşturur.

Bu bayraklara ek olarak, Web Dağıtımı işlem ayarlarını ek .deploy.cmd parametreleri olarak belirtebilirsiniz. Belirttiğiniz ek ayarlar yalnızca temel alınan MSDeploy.exe komutuna geçirilir. Bu ayarlar hakkında daha fazla bilgi için bkz. Web Dağıtımı İşlem Ayarları.

.deploy.cmd dosyasını çalıştırarak ContactManager.Mvc web uygulaması projesini bir test ortamına dağıtmak istediğinizi varsayalım. Test ortamınız, Web Dağıtımı Yayımlama için Web Sunucusu Yapılandırma (Uzak Aracı) bölümünde açıklandığı gibi Web Dağıtımı Uzak Aracısı hizmetini kullanacak şekilde yapılandırılmıştır. Web uygulamasını dağıtmak için sonraki adımları tamamlamanız gerekir.

.deploy.cmd dosyasını kullanarak bir web uygulaması dağıtmak için

  1. Web Uygulaması Projelerini Derleme ve Paketleme bölümünde açıklandığı gibi web uygulaması projesini derleyin ve paketleyin.

  2. ContactManager.Mvc.SetParameters.xml dosyasını, Web Paketi Dağıtımı için Parametreleri Yapılandırma bölümünde açıklandığı gibi test ortamınız için doğru parametre değerlerini içerecek şekilde değiştirin.

  3. Bir Komut İstemi penceresi açın ve ContactManager.Mvc.deploy.cmd dosyasının konumuna gidin.

  4. Bu komutu yazın ve Enter tuşuna basın:

    ContactManager.Mvc.deploy.cmd /Y /M:TESTWEB1 /A:NTLM
    

Bu örnekte:

  • /Y bayrağı, deneme çalıştırması yapmak yerine paketi gerçekten dağıtmak istediğinizi gösterir.
  • /M bayrağı, paketi TESTWEB1 adlı sunucuya dağıtmak istediğinizi gösterir. Bu değerden MSDeploy.exe paketi şu konumdaki Web Dağıtımı Uzak Aracı hizmetine dağıtmayı deneyecektir: http://TESTWEB1/MSDeployAgentService.
  • /A bayrağı, NTLM kimlik doğrulamasını kullanmak istediğinizi gösterir. Bu nedenle, kullanıcı adı ve parola belirtmeniz gerekmez.

.deploy.cmd dosyasının kullanılmasının dağıtım işlemini nasıl basitleştirdiğini göstermek için, yukarıda gösterilen seçenekleri kullanarak ContactManager.Mvc.deploy.cmd dosyasını çalıştırdığınızda oluşturulan ve yürütülen MSDeploy.exe komutuna göz atın.

msdeploy.exe 
-source:package='C:\Users\matt.FABRIKAM\Desktop\ContactManager-03\ContactManager\
 Publish\Out\_PublishedWebsites\ContactManager.Mvc_Package\ContactManager.Mvc.zip' -dest:auto,computerName='TESTWEB1.fabrikam.net', authtype='NTLM',
 includeAcls='False' 
-verb:sync 
-disableLink:AppPoolExtension 
-disableLink:ContentExtension 
-disableLink:CertificateExtension 
-setParamFile:"C:\Users\matt.FABRIKAM\Desktop\ContactManager-03\ContactManager\
 Publish\Out\_PublishedWebsites\ContactManager.Mvc_Package\
 ContactManager.Mvc.SetParameters.xml"

Bir web paketini dağıtmak için .deploy.cmd dosyasını kullanma hakkında daha fazla bilgi için bkz . Nasıl yapılır: Deploy.cmd Dosyasını Kullanarak Dağıtım Paketi Yükleme.

MSDeploy.exe kullanma

.deploy.cmd dosyasının kullanılması genellikle dağıtım işlemini basitleştirse de, MSDeploy.exe doğrudan kullanmanın tercih edileceği bazı durumlar vardır. Örnek:

  • Web Dağıtımı İşleyicisi'ne yönetici olmayan bir kullanıcı olarak dağıtmak istiyorsanız.deploy.cmd dosyasını kullanamazsınız. Bunun nedeni, Uç Nokta Konuları altında açıklandığı gibi Web Dağıtımı 2.0'daki bir hatadır.
  • Farklı konumlardaki farklı SetParameters.xml dosyaları arasında el ile geçiş yapmak istiyorsanız, doğrudan MSDeploy.exe kullanmayı tercih edebilirsiniz.
  • Birkaç MSDeploy.exe komut satırı bağımsız değişkenlerini geçersiz kılmak istiyorsanız, doğrudan MSDeploy.exe kullanmayı tercih edebilirsiniz.

MSDeploy.exe kullanırken üç önemli bilgi parçası sağlamanız gerekir:

  • Verilerinizin nereden geldiğini gösteren bir –source parametresi.
  • Verilerinizin nereye gittiğini gösteren bir –dest parametresi.
  • Gerçekleştirmek istediğiniz işlemi gösteren bir –fiil parametresi.

MSDeploy.exe, kaynak ve hedef verileri işlemek için Web Dağıtımı sağlayıcılarını kullanır. Web Dağıtımı, çalışabileceği uygulama ve veri kaynakları aralığını temsil eden çok sayıda sağlayıcı içerir; örneğin, SQL Server veritabanları, IIS web sunucuları, sertifikalar, genel derleme önbelleği (GAC) derlemeleri, çeşitli farklı yapılandırma dosyaları ve çok sayıda başka veri türü için sağlayıcılar vardır. Hem –source parametresi hem de –dest parametresi –source:[providerName]=[location] biçiminde bir sağlayıcı belirtmelidir. Iis web sitesine bir web paketi dağıtırken şu değerleri kullanmanız gerekir:

  • –source sağlayıcısı her zaman pakettir. Örnek:

    -source:package='[path to web package]'
    
  • –dest sağlayıcısı her zaman otomatiktir. Örneğin:

    -dest:auto='[server name or service URL]'
    
  • –fiil her zaman eşitlenir.

    -verb:sync
    

Buna ek olarak, sağlayıcıya özgü diğer çeşitli ayarları ve genel işlem ayarlarını belirtmeniz gerekir. Örneğin, ContactManager.Mvc web uygulamasını bir hazırlama ortamına dağıtmak istediğinizi varsayalım. Dağıtım, Web Dağıtımı İşleyicisi'ni hedefler ve temel kimlik doğrulamasını kullanmalıdır. Web uygulamasını dağıtmak için sonraki adımları tamamlamanız gerekir.

MSDeploy.exekullanarak web uygulaması dağıtmak için

  1. Web Uygulaması Projelerini Oluşturma ve Paketleme bölümünde açıklandığı gibi web uygulaması projesini derleyin ve paketleyin.

  2. ContactManager.Mvc.SetParameters.xml dosyasını, Web Paketi Dağıtımı için Parametreleri Yapılandırma bölümünde açıklandığı gibi hazırlama ortamınız için doğru parametre değerlerini içerecek şekilde değiştirin.

  3. Bir Komut İstemi penceresi açın ve MSDeploy.exe konumuna göz atın. Bu genellikle %PROGRAMFILES%\IIS\Microsoft Web Deploy V2\msdeploy.exe konumundadır.

  4. Bu komutu yazın ve Enter tuşuna basın (satır sonlarını göz ardı edin):

    MSDeploy.exe
      -source:package="[path]\ContactManager.Mvc.zip"
      -dest:auto,
            computerName="https://stageweb1:8172/MSDeploy.axd?site=DemoSite",
            username="FABRIKAM\stagingdeployer",
            $CREDENTIAL_PLACEHOLDER$,
            authtype="Basic",
            includeAcls="False"
      -verb:sync
      -disableLink:AppPoolExtension
      -disableLink:ContentExtension
      -disableLink:CertificateExtension
      -setParamFile:"[path]\ContactManager.Mvc.SetParameters.xml"
      -allowUntrusted
    

Bu örnekte:

  • –source parametresi paket sağlayıcısını belirtir ve web paketinin konumunu belirtir.
  • –dest parametresi otomatik sağlayıcıyı belirtir. computerName ayarı, hedef sunucudaki Web Dağıtımı İşleyicisinin hizmet URL'sini sağlar. Kimlik doğrulaması ayarı, temel kimlik doğrulamasını kullanmak istediğinizi belirtir ve bu nedenle bir kullanıcı adı ve parola sağlamanız gerekir. Son olarak includeAcls="False" ayarı, kaynak web uygulamanızdaki dosyaların erişim denetim listelerini (ACL) hedef sunucuya kopyalamak istemediğinizi gösterir.
  • –verb:sync bağımsız değişkeni, kaynak içeriği hedef sunucuda çoğaltmak istediğinizi gösterir.
  • –disableLink bağımsız değişkenleri, hedef sunucuda uygulama havuzlarını, sanal dizin yapılandırmasını veya Güvenli Yuva Katmanı (SSL) sertifikalarını çoğaltmak istemediğinizi gösterir. Daha fazla bilgi için bkz. Web Dağıtımı Bağlantı Uzantıları.
  • –setParamFile parametresi ,SetParameters.xml dosyasının konumunu sağlar.
  • –allowUntrusted anahtarı, Web Dağıtımı'nın güvenilen bir sertifika yetkilisi tarafından verilmemiş SSL sertifikalarını kabul etmesi gerektiğini belirtir. Web Dağıtımı İşleyicisi'ne dağıtıyorsanız ve hizmet URL'sinin güvenliğini sağlamak için otomatik olarak imzalanan bir sertifika kullandıysanız, bu anahtarı eklemeniz gerekir.

Web Paketi Dağıtımlarını Otomatikleştirme

Birçok kurumsal senaryoda, web paketlerinizi daha büyük bir tek adımlı veya otomatik dağıtım kapsamında dağıtmak isteyeceksiniz. .deploy.cmd dosyasını çalıştırarak veya doğrudan MSDeploy.exe kullanarak web paketlerinizi dağıtmayı seçmenize bakılmaksızın, komutlarınızı parametreleştirebilir ve bir Microsoft Build Engine (MSBuild) proje dosyasındaki hedeften çağırabilirsiniz.

Contact Manager örnek çözümünde Publish.proj dosyasındaki PublishWebPackages hedefini inceleyin. Bu hedef, PublishPackages adlı öğe listesi tarafından tanımlanan her .deploy.cmd dosyası için bir kez çalışır. Hedef, her .deploy.cmd dosyası için tam bir bağımsız değişken değerleri kümesi oluşturmak üzere özellikleri ve öğe meta verilerini kullanır ve ardından komutu çalıştırmak için Exec görevini kullanır.

<Target Name="PublishWebPackages" Outputs="%(PublishPackages.Identity)">
  ...
  <PropertyGroup>
    <_WhatIfSwitch>/Y</_WhatIfSwitch>
    <_WhatIfSwitch Condition=" '$(_WhatIf)'=='true' ">/T</_WhatIfSwitch>
    <_Cmd>
      %(PublishPackages.FullPath) $(_WhatifSwitch) /M:$(MSDeployComputerName) 
      /U:$(MSDeployUsername) /P:$(Password) /A:$(MSDeployAuth) 
      %(PublishPackages.AdditionalMSDeployParameters)
    </_Cmd>
  </PropertyGroup>
  <Exec Command="$(_Cmd)"/>
</Target>

Not

Örnek çözümdeki proje dosyası modeline daha geniş bir genel bakış ve genel olarak özel proje dosyalarına giriş için bkz. Proje Dosyasını Anlama ve Derleme sürecini anlama.

Uç Nokta Konuları

Web paketinizi .deploy.cmd dosyasını çalıştırarak veya doğrudan MSDeploy.exe kullanarak dağıtsanız da, dağıtımınız için bir bilgisayar adı veya hizmet uç noktası belirtmeniz gerekir.

Hedef web sunucusu Web Dağıtımı Uzak Aracı hizmeti kullanılarak dağıtım için yapılandırıldıysa, hedef hizmet URL'sini hedefiniz olarak belirtirsiniz.

http://[server name]/MSDeployAgentService

Alternatif olarak, hedef olarak sunucu adını tek başına belirtebilirsiniz ve Web Dağıtımı uzak aracı hizmeti URL'sini çıkarsar.

[server name]

Hedef web sunucusu Web Dağıtımı İşleyicisi kullanılarak dağıtım için yapılandırıldıysa, hedefiniz olarak IIS Web Yönetim Hizmeti'nin (WMSvc) uç nokta adresini belirtmeniz gerekir. Varsayılan olarak, şu forma geçer:

https://[server name]:8172/MSDeploy.axd

.deploy.cmd dosyasını kullanarak veya doğrudan MSDeploy.exe kullanarak bu uç noktalardan herhangi birini hedefleyebilirsiniz. Ancak, Web Dağıtımı İşleyicisi'ne yönetici olmayan bir kullanıcı olarak dağıtmak istiyorsanız, Web Dağıtımı Yayımlama için Web Sunucusu Yapılandırma (Web Dağıtımı İşleyicisi) bölümünde açıklandığı gibi, hizmet uç noktası adresine bir sorgu dizesi eklemeniz gerekir.

https://[server name]:8172/MSDeploy.axd?site=[IIS website name]

Bunun nedeni yönetici olmayan kullanıcının IIS'ye sunucu düzeyinde erişimi olmamasıdır; yalnızca belirli bir IIS web sitesine erişebilir. Yazma sırasında, Web Yayımlama İşlem Hattı'ndaki (WPP) bir hata nedeniyle sorgu dizesi içeren bir uç nokta adresi kullanarak .deploy.cmd dosyasını çalıştıramazsınız. Bu senaryoda, doğrudan MSDeploy.exe kullanarak web paketinizi dağıtmanız gerekir.

Not

Web Dağıtımı Uzak Aracı hizmeti ve Web Dağıtımı İşleyicisi hakkında daha fazla bilgi için bkz. Web Dağıtımına Doğru Yaklaşımı Seçme. Ortama özgü proje dosyalarınızı bu uç noktalara dağıtmak üzere yapılandırma hakkında yönergeler için bkz. Hedef Ortam için Dağıtım Özelliklerini Yapılandırma.

Kimlik DoğrulamasıNda Dikkat Edilmesi Gerekenler

Web paketinizi .deploy.cmd dosyasını çalıştırarak mı yoksa doğrudan MSDeploy.exe kullanarak mı dağıttığınızdan bağımsız olarak, bir kimlik doğrulama türü belirtmeniz gerekir. Web Dağıtımı iki olası değeri kabul eder: NTLM veya Basic. Temel kimlik doğrulamasını belirtirseniz, bir kullanıcı adı ve parola da sağlamanız gerekir. Bir kimlik doğrulama türü seçerken bilmeniz gereken çeşitli faktörler vardır:

  • Web Dağıtımı Uzak Aracı hizmetine dağıtıyorsanız NTLM kimlik doğrulamasını kullanmanız gerekir. Uzak aracı hizmeti temel kimlik doğrulaması kimlik bilgilerini kabul etmez.
  • Web Dağıtımı İşleyicisi'ne dağıtıyorsanız NTLM veya temel kimlik doğrulamasını kullanabilirsiniz. Varsayılan ayar temel kimlik doğrulamasıdır. Temel kimlik doğrulaması, kullanıcı adlarının ve parolaların düz metin olarak iletilmesine bağlı olsa da, Web Dağıtım İşleyicisi her zaman SSL şifrelemesi kullandığından kimlik bilgileriniz korunur.
  • Web paketiniz bir veritabanı içeriyorsa ve web sunucusu ile veritabanı sunucusu ayrı makinelerse, NTLM "çift atlama" sınırlaması nedeniyle NTLM kimlik doğrulamasını kullanarak veritabanını dağıtamazsınız. Dağıtım bağlantı dizenizde SQL Server kimlik bilgilerini kullanmanız veya Web Dağıtımı için temel kimlik doğrulama kimlik bilgilerini sağlamanız gerekir. Bu sorun, Üyelik Veritabanlarını Kurumsal Ortamlara Dağıtma başlığında daha ayrıntılı olarak açıklanmıştır.

Sonuç

Bu konuda, .deploy.cmd dosyasını çalıştırarak veya doğrudan MSDeploy.exe kullanarak bir web paketini nasıl dağıtabileceğiniz açıklanmıştır. Her yaklaşımın ne zaman uygun olabileceğini ve daha büyük bir tek adımlı veya otomatik derleme işleminin parçası olarak bir dağıtım komutunu nasıl parametreleştirebileceğinizi ve çalıştırabileceğinizi açıklamaktadır.

Daha Fazla Bilgi

Web dağıtım paketi oluşturma ve parametreleştirme hakkında yönergeler için bkz. Web Uygulaması Projeleri Oluşturma ve Paketleme ve Web Paketi Dağıtımı için Parametreleri Yapılandırma. Team Foundation Server (TFS) örneğinden web paketleri oluşturma ve dağıtma hakkında yönergeler için bkz. Team Foundation Server'ı Otomatik Web Dağıtımı için Yapılandırma. Dağıtım işlemini özelleştirme ve sorun giderme hakkında bilgi için bkz. Dosya ve Klasörleri Dağıtımdan Dışlama.