Hedef Ortam için Dağıtım Özelliklerini Yapılandırma

tarafından Jason Lee

Bu konuda, örnek Contact Manager çözümünü belirli bir hedef ortama dağıtmak için ortama özgü özelliklerin nasıl yapılandırılacağı açıklanmaktadır.

Bu konu, Fabrikam, Inc adlı kurgusal bir şirketin kurumsal dağıtım gereksinimlerini temel alan bir dizi öğreticinin bir parçasını oluşturur. Bu öğretici serisinde, ASP.NET MVC 3 uygulaması, Windows Communication Foundation (WCF) hizmeti ve veritabanı projesi gibi gerçekçi bir karmaşıklık düzeyine sahip bir web uygulamasını temsil etmek için örnek bir çözüm ( Contact Manager çözümü) kullanılır.

Bu öğreticilerin temelindeki dağıtım yöntemi, derleme işleminin her hedef ortama uygulanan derleme yönergelerini içeren ve ortama özgü derleme ve dağıtım ayarlarını içeren iki proje dosyası tarafından denetlendiği Derleme sürecini anlama bölümünde açıklanan bölünmüş proje dosyası yaklaşımını temel alır. Derleme zamanında, ortama özgü proje dosyası, tam bir derleme yönergeleri kümesi oluşturmak için ortama bağımsız proje dosyasıyla birleştirilir.

İşleme Genel Bakış

Contact Manager çözümünü derlemek ve dağıtmak için kullanacağınız proje dosyası iki fiziksel dosyaya ayrılır:

  • Evrensel derleme ayarlarını ve yönergelerini içeren bir dosya ( Publish.proj dosyası).
  • Ortama özgü derleme ayarlarını içeren bir ayar (Env-Dev.proj, Env-Stage.proj vb.).

Derleme zamanında, ortama özgü uygun proje dosyası, derleme yönergelerinin eksiksiz bir kümesini oluşturmak için evrensel Publish.proj dosyasıyla birleştirilir. Kendi dağıtım senaryonuzu açıklayan ayarlarla ortama özgü proje dosyaları oluşturarak veya özelleştirerek belirli hedef ortamlara dağıtımı yapılandırabilirsiniz.

Bu değerlerin çoğu hedef ortamınızın nasıl yapılandırıldığına göre belirlenir; özellikle de hedef web sunucunuzun Web Deployment Agent Hizmeti'ni (uzak aracı) veya Web Dağıtımı İşleyicisi'ni kullanacak şekilde yapılandırılıp yapılandırılmadığı. Bu yaklaşımlar hakkında daha fazla bilgi edinmek ve kendi ortamınız için doğru yaklaşımı seçme yönergeleri için bkz. Web Dağıtımına Doğru Yaklaşımı Seçme.

Contact Manager senaryosu, ortama özgü iki proje dosyası gerektirir:

  • Geliştirici test ortamına (Env-Dev.proj) dağıtım. Geliştirici test ortamı, Senaryo: Web Dağıtımı için Test Ortamı Yapılandırma bölümünde açıklandığı gibi, uzak aracıyı kullanarak uzak dağıtımları kabul etmek üzere yapılandırılmıştır. Bu dosyanın uzak aracı uç nokta adresinin yanı sıra bağlantı dizeleri ve hizmet uç noktaları gibi konuma özgü ayarları sağlaması gerekir.
  • Hazırlama ortamına dağıtım (Env-Stage.proj). Hazırlama ortamı, Senaryo: Web Dağıtımı için Hazırlama Ortamı Yapılandırma bölümünde açıklandığı gibi Web Dağıtımı İşleyicisi kullanılarak uzak dağıtımları kabul etmek üzere yapılandırılır. Bu dosyanın Web Dağıtımı İşleyicisi uç nokta adresinin yanı sıra bağlantı dizeleri ve hizmet uç noktaları gibi konuma özgü ayarları sağlaması gerekir.

Ortama özgü proje dosyasında yapılandırdığınız ayarların web paketinin içeriğini etkilemediğini, bunun yerine paketin nasıl dağıtıldığını ve paket ayıklandığında hangi parametre değerlerinin sağlandığını denetlediklerini unutmayın. Senaryo: Web Dağıtımı için Üretim Ortamı Yapılandırma ve WebPaketlerini El ile Yükleme bölümünde açıklandığı gibi, web paketini üretim ortamına el ile aktarıyorsunuz. Bu nedenle, paketi oluştururken ortama özgü proje dosyasında hangi ayarları kullandığınız önemli değildir. Internet Information Services (IIS) Yöneticisi, paketi içeri aktardığınızda bağlantı dizeleri ve hizmet uç noktaları gibi parametreli değerleri ister.

Contact Manager çözümünü kendi hedef ortamınıza dağıtmak için bu dosyayı özelleştirebilir veya şablon olarak kullanıp kendi dosyanızı oluşturabilirsiniz.

Contact Manager çözümü için ortama özgü dağıtım ayarlarını yapılandırmak için

  1. Visual Studio 2010'da ContactManager-WCF çözümünü açın.

  2. Çözüm Gezgini penceresinde Yayımla klasörünü genişletin, EnvConfig klasörünü genişletin ve ardından Env-Dev.proj öğesine çift tıklayın.

    Çözüm Gezgini penceresinde Yayımla klasörünü genişletin, EnvConfig klasörünü genişletin ve ardından Env-Dev.proj öğesine çift tıklayın.

  3. Env-Dev.proj dosyasındaki özellik değerlerini kendi test ortamınız için doğru değerlerle değiştirin.

    Not

    Bu yordamı izleyen tablo, bu özelliklerin her biri hakkında daha fazla bilgi sağlar.

  4. Çalışmanızı kaydedin ve ardından Env-Dev.proj dosyasını kapatın.

Doğru Dağıtım Özelliklerini Seçme

Bu tablo, örnek ortama özgü proje dosyası Env-Dev.proj'daki her özelliğin amacını açıklar ve sağlamanız gereken değerler hakkında bazı yönergeler sağlar.

Özellik Adı Ayrıntılar
MSDeployComputerName Hedef web sunucusunun veya hizmet uç noktasının adı. Hedef web sunucusundaki uzak aracı hizmetine dağıtıyorsanız, hedef bilgisayar adını (örneğin, TESTWEB1 veya TESTWEB1.fabrikam.net) belirtebilir veya uzak aracı uç noktasını belirtebilirsiniz (örneğin, http://TESTWEB1/MSDEPLOYAGENTSERVICE). Dağıtım her durumda aynı şekilde çalışır. Hedef web sunucusundaki Web Dağıtımı İşleyicisine dağıtıyorsanız, hizmet uç noktasını belirtmeniz ve IIS web sitesinin adını sorgu dizesi parametresi olarak eklemeniz gerekir (örneğin, https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite).
MSDeployAuth Web Dağıtımı'nın uzak bilgisayarda kimlik doğrulaması yapmak için kullanması gereken yöntem. Bu , NTLM veya Basic olarak ayarlanmalıdır. Genellikle, uzak aracı hizmetine dağıtıyorsanız NTLM ve Web Dağıtımı İşleyicisi'ne dağıtıyorsanız Temel'i kullanırsınız. Temel kimlik doğrulaması kullanıyorsanız, dağıtımı gerçekleştirmek için IIS Web Dağıtım Aracı'nın (Web Dağıtımı) kimliğine bürünmesi gereken kullanıcı adını ve parolayı da belirtmeniz gerekir. Bu örnekte, bu değerler MSDeployUsername ve MSDeployPassword özellikleri aracılığıyla sağlanır. NTLM kimlik doğrulaması kullanıyorsanız, bu özellikleri atlayabilir veya boş bırakabilirsiniz.
MSDeployUsername Temel kimlik doğrulaması kullanıyorsanız, Web Dağıtımı bu hesabı uzak bilgisayarda kullanır. Bu, ETKİ ALANI*kullanıcıadı* biçiminde olmalıdır (örneğin, FABRIKAM\matt). Bu değer yalnızca temel kimlik doğrulaması belirtirseniz kullanılır. NTLM kimlik doğrulaması kullanıyorsanız özelliği atlanabilir. Bir değer sağlanırsa, yoksayılır.
MSDeployPassword Temel kimlik doğrulaması kullanıyorsanız, Web Dağıtımı uzak bilgisayarda bu parolayı kullanır. Bu, MSDeployUsername özelliğinde belirttiğiniz kullanıcı hesabının parolasıdır. Bu değer yalnızca temel kimlik doğrulaması belirtirseniz kullanılır. NTLM kimlik doğrulaması kullanıyorsanız özelliği atlanabilir. Bir değer sağlanırsa, yoksayılır.
ContactManagerIisPath Contact Manager MVC uygulamasını dağıtmak istediğiniz IIS yolu. Bu, IIS Yöneticisi'nde [IIS web sitesi adı]/[webuygulaması adı] biçiminde görünen yol olmalıdır. Uygulamanızı dağıtmadan önce IIS web sitesinin mevcut olması gerektiğini unutmayın. Örneğin, DemoSite adlı bir IIS web sitesi oluşturduysanız, MVC uygulamasının IIS yolunu DemoSite/ContactManager olarak belirtebilirsiniz.
ContactManagerServiceIisPath Contact Manager WCF hizmetini dağıtmak istediğiniz IIS yolu. Örneğin, DemoSite adlı bir IIS web sitesi oluşturduysanız, WCF hizmetinin IIS yolunu DemoSite/ContactManagerService olarak belirtebilirsiniz.
ContactManagerTargetUrl WCF hizmetine ulaşabileceğiniz URL. Bu, [IIS web sitesi kök URL'si]/[hizmet uygulaması adı]/[hizmet uç noktası] biçiminde olacaktır. Örneğin, bağlantı noktası 85'te bir IIS web sitesi oluşturduysanız, URL biçiminde http://localhost:85/ContactManagerService/ContactService.svcolur. MVC uygulamasının ve WCF hizmetinin aynı sunucuya dağıtıldığını unutmayın. Sonuç olarak, bu URL'ye yalnızca yüklü olduğu makineden erişilir. Bu nedenle, URL'de makine adı veya ana bilgisayar üst bilgisi yerine localhost veya IP adresi kullanmak daha iyidir. Makine adını veya ana bilgisayar üst bilgisini kullanırsanız, IIS'deki geri döngü denetimi güvenlik özelliği URL'yi engelleyebilir ve HTTP 401.1 - Yetkisiz hatası döndürebilir.
CmDatabaseConnectionString Veritabanı sunucusunun bağlantı dizesi. Bağlantı dizesi, VSDBCMD'nin veritabanı sunucusuyla iletişim kurmak ve veritabanını oluşturmak için kullanacağı kimlik bilgilerini ve web sunucusu uygulama havuzunun veritabanı sunucusuyla iletişim kurmak ve veritabanıyla etkileşim kurmak için kullanacağı kimlik bilgilerini belirler. Aslında burada iki seçeneğiniz var. Tümleşik Güvenlik=true belirtebilirsiniz; bu durumda tümleşik Windows kimlik doğrulaması kullanılır: Veri Kaynağı=TESTDB1;Tümleşik Güvenlik=true Bu durumda, veritabanı VSDBCMD yürütülebilir dosyasını çalıştıran kullanıcının kimlik bilgileri kullanılarak oluşturulur ve uygulama web sunucusu makine hesabının kimliğini kullanarak veritabanına erişecektir. Alternatif olarak, bir SQL Server hesabının kullanıcı adını ve parolasını belirtebilirsiniz. Bu durumda, SQL Server kimlik bilgileri veritabanını oluşturmak için VSDBCMD tarafından ve veritabanıyla etkileşim kurmak için uygulama havuzu tarafından kullanılır: Data Source=TESTDB1; Kullanıcı Kimliği=ASqlUser; Password=Pa$$w 0rd Bu konudaki kılavuzlarda tümleşik Windows kimlik doğrulaması kullanacağınız varsayılır.
CmTargetDatabase Veritabanı sunucusunda oluşturacağınız veritabanına vermek istediğiniz ad. Burada sağladığınız değer VSDBCMD komutuna parametre olarak eklenir. Ayrıca web sunucusundaki uygulama havuzunun veritabanıyla etkileşim kurmak için kullanabileceği tam bir bağlantı dizesi oluşturmak için de kullanılır.

Bu örnekler, bu özellikleri belirli dağıtım senaryoları için nasıl yapılandırabileceğinizi gösterir.

Örnek 1—Uzak Aracı Hizmetine Dağıtım

Bu örnekte:

  • TESTWEB1'de uzak aracı hizmetine dağıtıyorsunuz.
  • Web Dağıtımı'na NTLM kimlik doğrulamasını kullanmasını emrediyorsun. Web Dağıtımı, Microsoft Build Engine (MSBuild) çağırmak için kullandığınız kimlik bilgilerini kullanarak çalışır.
  • ContactManager veritabanını TESTDB1'e dağıtmak için tümleşik kimlik doğrulaması kullanıyorsunuz. Veritabanı, MSBuild'i çağırmak için kullandığınız kimlik bilgileri kullanılarak dağıtılır.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>    
    <MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
      TESTWEB1.fabrikam.net
    </MSDeployComputerName>
    <MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">NTLM</MSDeployAuth>
    <ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
      http://localhost:85/ContactManagerService/ContactService.svc
    </ContactManagerTargetUrl>
    <ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
      DemoSite/ContactManager
    </ContactManagerIisPath>
    <ContactManagerServiceIisPath 
      Condition=" '$(ContactManagerServiceIisPath)'=='' ">
        DemoSite/ContactManagerService
    </ContactManagerServiceIisPath>
    <CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
      Data Source=TESTDB1;Integrated Security=true</CmDatabaseConnectionString>
    <CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
      ContactManager
    </CmTargetDatabase>
  </PropertyGroup>  
</Project>

Örnek 2—Web Dağıtımı İşleyici Uç Noktasına Dağıtım

Bu örnekte:

  • STAGEWEB1'de Web Dağıtımı İşleyicisi hizmet uç noktasına dağıtıyorsunuz.
  • Web Dağıtımı'na temel kimlik doğrulamasını kullanma talimatını verirsiniz.
  • Web Dağıtımı'nın uzak bilgisayardaki FABRIKAM\stagingdeployer hesabının kimliğine bürünmesi gerektiğini belirtiyorsunuz.
  • ContactManager veritabanını STAGEDB1'e dağıtmak için SQL Server kimlik doğrulaması kullanıyorsunuz.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>    
    <MSDeployComputerName Condition=" '$(MSDeployComputerName)'=='' ">
      https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite
    </MSDeployComputerName>
    <MSDeployAuth Condition=" '$(MSDeployAuth)'=='' ">Basic</MSDeployAuth>
    <MSDeployUsername Condition=" '$(MSDeployUsername)'=='' ">
      FABRIKAM\stagingdeployer
    </MSDeployUsername>
    <MSDeployPassword Condition=" '$(MSDeployPassword)'=='' ">
      Pa$$w0rd
    </MSDeployPassword>
    <ContactManagerTargetUrl Condition =" '$(ContactManagerTargetUrl)'=='' ">
      http://localhost:85/ContactManagerService/ContactService.svc
    </ContactManagerTargetUrl>
    <ContactManagerIisPath Condition=" '$(ContactManagerIisPath)'=='' ">
      DemoSite/ContactManager
    </ContactManagerIisPath>
    <ContactManagerServiceIisPath 
      Condition=" '$(ContactManagerServiceIisPath)'=='' ">
        DemoSite/ContactManagerService
    </ContactManagerServiceIisPath>
    <CmDatabaseConnectionString Condition=" '$(CmDatabaseConnectionString)'=='' ">
      Data Source=STAGEDB1;User ID=sa;'$($CREDENTIAL_PLACEHOLDER$)'
    </CmDatabaseConnectionString>
    <CmTargetDatabase Condition=" '$(CmTargetDatabase)'=='' ">
      ContactManager
    </CmTargetDatabase>
  </PropertyGroup>  
</Project>

Sonuç

Bu noktada proje dosyalarınız, Contact Manager çözümünü derleyip bir veya daha fazla hedef ortamda dağıtacak şekilde tamamen yapılandırılmıştır.

Bu proje dosyalarını tek adımlı, yinelenebilir bir dağıtım işleminin parçası olarak kullanmak için MSBuild kullanarak Publish.proj dosyasını yürütmeniz ve ortama özgü proje dosyasının konumunu parametre olarak geçirmeniz gerekir. Bunu çeşitli yollarla yapabilirsiniz: