Bagikan melalui


Mengonfigurasi Properti Penyebaran untuk Lingkungan Target

oleh Jason Lee

Topik ini menjelaskan cara mengonfigurasi properti khusus lingkungan untuk menyebarkan contoh solusi Contact Manager ke lingkungan target tertentu.

Topik ini merupakan bagian dari serangkaian tutorial berdasarkan persyaratan penyebaran perusahaan dari perusahaan fiktif bernama Fabrikam, Inc. Seri tutorial ini menggunakan solusi sampel—solusi Contact Manager —untuk mewakili aplikasi web dengan tingkat kompleksitas yang realistis, termasuk aplikasi MVC 3 ASP.NET, layanan Windows Communication Foundation (WCF), dan proyek database.

Metode penyebaran di jantung tutorial ini didasarkan pada pendekatan file proyek terpisah yang dijelaskan dalam Memahami Proses Build, di mana proses build dikendalikan oleh dua file proyek—satu berisi instruksi build yang berlaku untuk setiap lingkungan tujuan, dan satu berisi pengaturan build dan penyebaran khusus lingkungan. Pada waktu build, file proyek khusus lingkungan digabungkan ke dalam file proyek agnostik lingkungan untuk membentuk serangkaian instruksi build lengkap.

Gambaran Umum Proses

File proyek yang akan Anda gunakan untuk membangun dan menyebarkan solusi Contact Manager dibagi menjadi dua file fisik:

  • Salah satu yang berisi pengaturan dan instruksi build universal (file Publish.proj ).
  • Salah satu yang berisi pengaturan build khusus lingkungan (Env-Dev.proj, Env-Stage.proj, dan sebagainya).

Pada waktu build, file proyek khusus lingkungan yang sesuai digabungkan ke dalam file Publish.proj universal untuk membentuk serangkaian instruksi build lengkap. Anda dapat mengonfigurasi penyebaran ke lingkungan tujuan tertentu dengan membuat atau menyesuaikan file proyek khusus lingkungan dengan pengaturan yang menjelaskan skenario penyebaran Anda sendiri.

Banyak nilai ini ditentukan oleh bagaimana lingkungan tujuan Anda dikonfigurasi—khususnya, apakah server web target Anda dikonfigurasi untuk menggunakan Layanan Agen Penyebaran Web (agen jarak jauh) atau Web Deploy Handler. Untuk informasi selengkapnya tentang pendekatan ini, dan untuk panduan tentang memilih pendekatan yang tepat untuk lingkungan Anda sendiri, lihat Memilih Pendekatan yang Tepat untuk Penyebaran Web.

Skenario Contact Manager memerlukan dua file proyek khusus lingkungan:

  • Penyebaran ke lingkungan pengujian pengembang (Env-Dev.proj). Lingkungan pengujian pengembang dikonfigurasi untuk menerima penyebaran jarak jauh menggunakan agen jarak jauh, seperti yang dijelaskan dalam Skenario: Mengonfigurasi Lingkungan Pengujian untuk Penyebaran Web. File ini perlu menyediakan alamat titik akhir agen jarak jauh serta pengaturan khusus lokasi seperti string koneksi dan titik akhir layanan.
  • Penyebaran ke lingkungan penahapan (Env-Stage.proj). Lingkungan penahapan dikonfigurasi untuk menerima penyebaran jarak jauh menggunakan Web Deploy Handler, seperti yang dijelaskan dalam Skenario: Mengonfigurasi Lingkungan Penahapan untuk Penyebaran Web. File ini perlu menyediakan alamat titik akhir Web Deploy Handler serta pengaturan khusus lokasi seperti string koneksi dan titik akhir layanan.

Penting untuk dicatat bahwa pengaturan yang Anda konfigurasikan dalam file proyek khusus lingkungan tidak memengaruhi konten paket web itu sendiri—sebaliknya, pengaturan mengontrol bagaimana paket disebarkan dan nilai parameter apa yang disediakan saat paket diekstrak. Anda mengimpor paket web ke lingkungan produksi secara manual, seperti yang dijelaskan dalam Skenario: Mengonfigurasi Lingkungan Produksi untuk Penyebaran Web dan Menginstal Paket Web Secara Manual, sehingga tidak peduli pengaturan apa yang Anda gunakan dalam file proyek khusus lingkungan saat Anda membuat paket. Pengelola Layanan Informasi Internet (IIS) akan meminta nilai parameter apa pun, seperti string koneksi dan titik akhir layanan, saat Anda mengimpor paket.

Untuk menyebarkan solusi Contact Manager ke lingkungan target Anda sendiri, Anda dapat menyesuaikan file ini atau menggunakannya sebagai templat dan membuat file Anda sendiri.

Untuk mengonfigurasi pengaturan penyebaran khusus lingkungan untuk solusi Contact Manager

  1. Buka solusi ContactManager-WCF di Visual Studio 2010.

  2. Di jendela Penjelajah Solusi , perluas folder Terbitkan , perluas folder EnvConfig , lalu klik dua kali Env-Dev.proj.

    Di jendela Penjelajah Solusi, perluas folder Terbitkan, perluas folder EnvConfig, lalu klik dua kali Env-Dev.proj.

  3. Ganti nilai properti dalam file Env-Dev.proj dengan nilai yang benar untuk lingkungan pengujian Anda sendiri.

    Nota

    Tabel yang mengikuti prosedur ini menyediakan informasi selengkapnya tentang masing-masing properti ini.

  4. Simpan pekerjaan Anda, lalu tutup file Env-Dev.proj .

Memilih Properti Penyebaran yang Tepat

Tabel ini menjelaskan tujuan setiap properti dalam file proyek khusus lingkungan sampel, Env-Dev.proj, dan memberikan beberapa panduan tentang nilai yang harus Anda berikan.

Nama Properti Detail lebih lanjut
MSDeployComputerName Nama server web tujuan atau titik akhir layanan. Jika Anda menyebarkan ke layanan agen jarak jauh di server web tujuan, Anda dapat menentukan nama komputer target (misalnya, TESTWEB1 atau TESTWEB1.fabrikam.net), atau Anda dapat menentukan titik akhir agen jarak jauh (misalnya, http://TESTWEB1/MSDEPLOYAGENTSERVICE). Penyebaran diimplementasikan dengan cara yang sama dalam setiap kasus. Jika Anda menyebarkan ke Web Deploy Handler di server web tujuan, Anda harus menentukan titik akhir layanan dan menyertakan nama situs web IIS sebagai parameter string kueri (misalnya, https://STAGEWEB1:8172/MSDeploy.axd?site=DemoSite).
MSDeployAuth Metode yang harus digunakan Web Deploy untuk mengautentikasi ke komputer jarak jauh. Ini harus diatur ke NTLM atau Dasar. Biasanya, Anda akan menggunakan NTLM jika Anda menyebarkan ke layanan agen jarak jauh dan Dasar jika Anda menyebarkan ke Web Deploy Handler. Jika Anda menggunakan autentikasi dasar, Anda juga perlu menentukan nama pengguna dan kata sandi yang harus ditiru oleh IIS Web Deployment Tool (Web Deploy) untuk melakukan penyebaran. Dalam contoh ini, nilai-nilai ini disediakan melalui properti MSDeployUsername dan MSDeployPassword . Jika Anda menggunakan autentikasi NTLM, Anda dapat menghilangkan properti ini atau membiarkannya kosong.
MSDeployUsername Jika Anda menggunakan autentikasi dasar, Web Deploy akan menggunakan akun ini pada komputer jarak jauh. Ini harus mengambil formulir DOMAIN*nama pengguna* (misalnya, FABRIKAM\matt). Nilai ini hanya digunakan jika Anda menentukan autentikasi dasar. Jika Anda menggunakan autentikasi NTLM, maka properti tersebut dapat dihilangkan. Jika nilai disediakan, akan diabaikan.
MSDeployPassword Jika Anda menggunakan autentikasi dasar, Web Deploy akan menggunakan kata sandi ini pada komputer jarak jauh. Ini adalah kata sandi untuk akun pengguna yang Anda tentukan di properti MSDeployUsername . Nilai ini hanya digunakan jika Anda menentukan autentikasi dasar. Jika Anda menggunakan autentikasi NTLM, maka properti tersebut dapat dihilangkan. Jika nilai disediakan, akan diabaikan.
ContactManagerIisPath Jalur IIS tempat Anda ingin menyebarkan aplikasi MVC Contact Manager. Ini harus menjadi jalur seperti yang muncul di Manajer IIS, dalam formulir [nama situs web IIS]/[nama aplikasiweb]. Ingatlah bahwa situs web IIS harus ada sebelum Anda menyebarkan aplikasi Anda. Misalnya, jika Anda telah membuat situs web IIS bernama DemoSite, Anda dapat menentukan jalur IIS untuk aplikasi MVC sebagai DemoSite/ContactManager.
ContactManagerServiceIisPath Jalur IIS tempat Anda ingin menyebarkan layanan Contact Manager WCF. Misalnya, jika Anda telah membuat situs web IIS bernama DemoSite, Anda dapat menentukan jalur IIS untuk layanan WCF sebagai DemoSite/ContactManagerService.
ContactManagerTargetUrl URL tempat layanan WCF dapat dijangkau. Ini akan mengambil formulir [URL akar situs web IIS]/[nama aplikasi layanan]/[titik akhir layanan]. Misalnya, jika Anda telah membuat situs web IIS di port 85, URL akan mengambil formulir http://localhost:85/ContactManagerService/ContactService.svc. Ingatlah bahwa aplikasi MVC dan layanan WCF disebarkan ke server yang sama. Akibatnya, URL ini hanya pernah diakses dari komputer tempat url diinstal. Karena itu, lebih baik menggunakan localhost atau alamat IP, daripada nama mesin atau header host, di URL. Jika Anda menggunakan nama komputer atau header host, fitur keamanan pemeriksaan loopback di IIS dapat memblokir URL dan mengembalikan KESALAHAN HTTP 401.1 - Tidak sah .
CmDatabaseConnectionString String koneksi untuk server database. String koneksi menentukan kredensial yang akan digunakan VSDBCMD untuk menghubungi server database dan membuat database dan kredensial yang akan digunakan kumpulan aplikasi server web untuk menghubungi server database dan berinteraksi dengan database. Pada dasarnya Anda memiliki dua pilihan di sini. Anda dapat menentukan Integrated Security=true, dalam hal ini autentikasi Windows terintegrasi digunakan: Sumber Data=TESTDB1; Integrated Security=true Dalam hal ini, database akan dibuat menggunakan kredensial pengguna yang menjalankan VSDBCMD yang dapat dieksekusi, dan aplikasi akan mengakses database menggunakan identitas akun komputer server web. Atau, Anda dapat menentukan nama pengguna dan kata sandi akun SQL Server. Dalam hal ini, kredensial SQL Server digunakan baik oleh VSDBCMD untuk membuat database dan oleh kumpulan aplikasi untuk berinteraksi dengan database: Sumber Data=TESTDB1; Id Pengguna=ASqlUser; Kata sandi=; Panduan dalam topik ini mengasumsikan bahwa Anda akan menggunakan autentikasi Windows terintegrasi.
CmTargetDatabase Nama yang ingin Anda berikan pada database yang akan Anda buat di server database. Nilai yang Anda berikan di sini ditambahkan ke perintah VSDBCMD sebagai parameter. Ini juga digunakan untuk membangun string koneksi lengkap yang dapat digunakan kumpulan aplikasi di server web untuk berinteraksi dengan database.

Contoh-contoh ini menunjukkan bagaimana Anda dapat mengonfigurasi properti ini untuk skenario penyebaran tertentu.

Contoh 1—Penyebaran ke Layanan Agen Jarak Jauh

Dalam contoh ini:

  • Anda menyebarkan ke layanan agen jarak jauh pada TESTWEB1.
  • Anda menginstruksikan Web Deploy untuk menggunakan autentikasi NTLM. Web Deploy akan berjalan menggunakan kredensial yang Anda gunakan untuk memanggil Microsoft Build Engine (MSBuild).
  • Anda menggunakan autentikasi terintegrasi untuk menyebarkan database ContactManager ke TESTDB1. Database akan disebarkan menggunakan kredensial yang Anda gunakan untuk memanggil MSBuild.
<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>

Contoh 2—Penyebaran ke Titik Akhir Handler Penyebaran Web

Dalam contoh ini:

  • Anda menyebarkan ke titik akhir layanan Web Deploy Handler di STAGEWEB1.
  • Anda menginstruksikan Web Deploy untuk menggunakan autentikasi dasar.
  • Anda menentukan bahwa Web Deploy harus meniru akun FABRIKAM\stagingdeployer di komputer jarak jauh.
  • Anda menggunakan autentikasi SQL Server untuk menyebarkan database ContactManager ke STAGEDB1.
<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>

Kesimpulan

Pada titik ini, file proyek Anda sepenuhnya dikonfigurasi untuk membangun dan menyebarkan solusi Contact Manager ke satu atau beberapa lingkungan tujuan.

Untuk menggunakan file proyek ini sebagai bagian dari proses penyebaran yang berulang dalam satu langkah, Anda perlu menjalankan file Publish.proj menggunakan MSBuild dan meneruskan lokasi file proyek yang spesifik untuk lingkungan sebagai parameter. Anda dapat melakukan ini dengan berbagai cara: