Bagikan melalui


Skrip PowerShell untuk mengotomatiskan penyiapan Web Deploy

oleh Kristina Olson

Rilis Web Deploy v2.1 menginstal beberapa skrip PowerShell yang memudahkan konfigurasi server IIS Anda sehingga pengguna dapat menerbitkannya dengan menggunakan Web Deploy. Halaman ini memperlihatkan kepada Anda cara menggunakan skrip ini untuk membuat situs penerbitan default, mengaktifkan penerbitan untuk situs dan pengguna baru atau yang sudah ada, membuat penerbitan database SQL atau MySQL, atau untuk menyiapkan aturan delegasi - semuanya menggunakan PowerShell.

Skrip yang akan Anda gunakan adalah:

  • SetupSiteForPublish.ps1
  • CreateSqlDatabase.ps1
  • CreateMySqlDatabase.ps1
  • AddDelegationRules.ps1

Persyaratan

  • Server harus memiliki sistem operasi yang disertakan dengan IIS7—ini berarti Windows Server 2008 atau Windows Server 2008 R2. Anda harus menjadi administrator pada komputer.

  • Pastikan kondisi berikut terpenuhi:

    • PowerShell2 harus diinstal (ini dibangun ke dalam Windows Server 2008 R2; untuk Windows Server 2008, Anda bisa mendapatkan PowerShell2 sebagai pembaruan dari sini: https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid=0be83604-db27-4b99-976a-136a92bd579b. Mulai ulang mungkin diperlukan.
    • Peran Server Web (IIS) harus diaktifkan di Manajer Server.
    • Layanan peran Layanan Manajemen Web IIS ("Layanan Manajemen") harus diaktifkan di Manajer Server
    • Untuk menggunakan skrip database PowerShell, server harus memiliki akses ke database SQL atau MySQL. Objek Manajemen SQL Server juga harus diinstal untuk SQL.
    • Web Deploy harus diinstal dengan komponen Integrasi Layanan Manajemen. (Agar opsi ini muncul di penginstal Web Deploy, Layanan Manajemen Web harus diaktifkan terlebih dahulu.)

Instruksi PowerShell umum

  1. Luncurkan jendela perintah PowerShell.

    Klik ikon PowerShell di bilah tugas atau klik Mulai, ketik PowerShell, dan pilih Windows PowerShell.
    Cuplikan layar Bilah Tugas Windows yang menampilkan tombol Mulai.
    (Ikon biru)

  2. Pastikan kebijakan eksekusi Anda memungkinkan menjalankan skrip.

    1. Ketik "Get-ExecutionPolicy". Jika Dibatasi (default) Anda harus mengatur ulang ke pengaturan yang lebih permisif seperti dengan mengetik "Set-ExecutionPolicy AllSigned". Pengaturan AllSigned akan memungkinkan menjalankan skrip yang ditandatangani, tetapi meminta Anda jika tidak tepercaya

    2. Untuk informasi selengkapnya tentang pengaturan kebijakan eksekusi lihat Menggunakan Cmdlet Set-ExecutionPolicy.

  3. Ubah ke direktori skrip Web Deploy.

    1. Ketik cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts' (tetapi ganti %programfiles% dengan jalur aktual, seperti C:\Program Files).

Gunakan skrip SetupSiteForPublish untuk membuat situs web penerbitan default (tanpa database)

Jalankan skrip SetupSiteForPublish.ps1 tanpa argumen:

Cuplikan layar konsol Powershell dengan output.

Apa yang dilakukan ini:

Skrip membuat pengguna dan situs untuk penerbitan non-admin dan menyimpan informasi profil penerbitan dalam file di desktop. Lebih khusus lagi, ia membuat situs yang disebut WDeploySite dengan akar situs fisik di %systemdrive%\inetpub\WDeploySite. Situs ini akan memiliki kumpulan aplikasi yang cocok, WDeployAppPool, dan akan ditetapkan ke port 8080 secara default (atau port berikutnya yang tersedia jika situs lain menggunakan 8080). Skrip ini juga membuat pengguna Windows lokal non-administrator bernama WDeploySiteuser dan memberikan pengguna ACL Kontrol Penuh pada folder WDeploySite dan Izin Manajer IIS ke situs. Informasi pengaturan disimpan ke desktop dalam file bernama WDeploy.Publish Pengaturan - file ini mungkin digunakan oleh WebMatrix (atau berpotensi Visual Studio) untuk diterbitkan ke situs. Profil ini TIDAK berisi informasi penerbitan database apa pun pada saat ini.

Aktifkan Penerbitan Penyebaran Web untuk Situs dan Pengguna mana pun menggunakan skrip SetupSiteForPublish:

Skrip: SetupSiteForPublish.ps1

Deskripsi: Untuk situs dan akun pengguna tertentu, memungkinkan pengguna yang ditentukan untuk menerbitkan ke situs yang ditentukan. Skrip membuat akun pengguna, situs, dan kumpulan aplikasi; mengatur ACL direktori dan izin Manajer IIS untuk situs; dan menyimpan informasi pengaturan dalam file.

Parameter:

Nama Deskripsi Nilai Default Catatan
siteName Nama situs. Jika situs tidak ada, situs akan dibuat. Situs WDeploy
sitePhysicalPath Lokasi file fisik untuk konten situs. Jika direktori tidak ada, direktori akan dibuat. %systemdrive%\inetpub\WDeploySite
siteAppPoolName Nama kumpulan aplikasi yang akan dikaitkan dengan situs. Jika kumpulan aplikasi tidak ada, kumpulan aplikasi akan dibuat. WDeployAppPool Disarankan untuk mendedikasikan satu kumpulan aplikasi per situs.
sitePort Port untuk pengikatan situs. Port pertama dari 8080-8200 yang tidak digunakan oleh situs lain. Aturan firewall mungkin diperlukan untuk membuka port untuk lalu lintas jarak jauh.
deploymentUserName Nama pengguna yang akan diberikan akses ke situs. Jika pengguna tidak ada, pengguna non-administrator akan dibuat. WDeploySiteuser
deploymentUserPassword Kata sandi untuk pengguna penyebaran. Jika kata sandi tidak ditentukan, kata sandi akan dibuat dan disimpan secara otomatis dalam file pengaturan. [dibuat otomatis]
managedRunTimeVersion Jika ditentukan, akan mencoba mengatur versi run-time yang ditentukan untuk kumpulan aplikasi. Jika versi runtime yang cocok tidak ditemukan, default kumpulan aplikasi akan digunakan. Default kumpulan aplikasi Contoh format "v2.0" atau "v4.0"
publishSettingSavePath Direktori yang ada tempat file pengaturan akan disimpan. Desktop pengguna saat ini Harus berupa direktori yang ada. Jika direktori yang ditentukan tidak ada, kesalahan akan dihasilkan.
publishSettingFileName Nama file pengaturan, termasuk ekstensi. WDeploy.Publish Pengaturan Ingatlah untuk menyertakan ekstensi. Jika file sudah ada, informasi situs di dalamnya akan ditimpa.

Contoh:

Aktifkan penerbitan untuk pengguna yang sudah ada di situs yang ada (kata sandi tidak akan disimpan dalam file pengaturan):

.\SetupSiteForPublish.ps1 -siteName ExistingSite -deploymentUserName UserA -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Cuplikan layar konsol Powershell dengan hasil pembuatan skrip.

Aktifkan penerbitan untuk pengguna baru di situs baru, dengan nama kustom dan lokasi untuk file pengaturan penerbitan:

.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings

Cuplikan layar konsol Powershell dengan pembuatan skrip dan output untuk menerbitkan pengaturan.

File Terbitkan Pengaturan juga berisi kata sandi pengguna baru. Perhatikan bahwa bidang string koneksi kosong - bidang tersebut dapat diisi dengan tangan atau Anda dapat menambahkannya ke profil menggunakan skrip pembuatan database:

<?xml version="1.0" encoding="utf-8"?>
<publishData>
  <publishProfile publishUrl="RWS-2008R2" msdeploySite="NewSite" destinationAppUrl="http://RWS-2008R2:81" mySQLDBConnectionString="" SQLServerDBConnectionString="" profileName="Default Settings" publishMethod="MSDeploy" userName="NewSiteUser" userPWD="Passw0rd" savePWD="True" />
</publishData>

Membuat database SQL untuk akun penerbitan menggunakan skrip CreateSqlDatabase

Skrip: CreateSqlDatabase.ps1

Deskripsi: Membuat database, login, pengguna database yang memiliki izin db_owner ke database, dan menyimpan informasi string koneksi terkait dalam file pengaturan.

Parameter:

Nama Deskripsi Nilai Default Catatan
databaseName Nama database yang akan dibuat. wDeploySqldb
databaseUserName Nama pengguna database dan login. wdeploySqlUser Tentukan pengguna baru setiap kali, atau Anda mungkin akhirnya mengatur ulang kata sandi masuk pengguna dan membatalkan kredensial koneksi pengguna sebelumnya.
databaseUserPassword Kata sandi untuk pengguna database dan masuk. Jika tidak ada kata sandi yang ditentukan, kata sandi akan dibuat secara otomatis. [dibuat otomatis] Dalam beberapa kasus, kata sandi yang dibuat secara otomatis mungkin berisi karakter yang menyebabkan masalah dengan klien penerbitan tertentu. Pertimbangkan untuk memodifikasi skrip jika Anda menggunakan skrip untuk pembuatan database otomatis.
databaseAdminUser Nama pengguna administrator server SQL (biasanya "sa"). WAJIB DIISI
databaseAdminPassword Kata sandi untuk akun administrator server SQL. WAJIB DIISI
sqlServerInstanceName Lokasi server SQL. .\SQLExpress

Umum

publishSettingSavePath Direktori yang ada tempat file pengaturan akan disimpan. Desktop pengguna saat ini Harus berupa direktori yang ada. Jika direktori yang ditentukan tidak ada, kesalahan akan dihasilkan.
publishSettingFileName Nama file pengaturan, termasuk ekstensi. WDeploy.Publish Pengaturan Ingatlah untuk menyertakan ekstensi. Jika file sudah ada, informasi situs di dalamnya akan ditimpa.

Contoh:

Membuat database dengan pengguna menggunakan default (database SQLExpress lokal):

.\CreateSqlDatabase.ps1

Cuplikan layar konsol Powershell dengan pembuatan skrip dan output untuk membuat database S Q L.

Buat database baru dan tambahkan informasi string koneksi ke file c:\profiles\UserA.PublishSettingspengaturan penerbitan yang sudah ada :

PS C:\Program Files\IIS\Microsoft Web Deploy V2\Scripts> .\CreateSqlDatabase.ps1 -databaseName UserADb -databaseUserName UserADbUser -databaseUserPassword Passw0rdA -databaseAdminUser sa -databaseAdminPassword Passw0rd -sqlServerInstanceName .\SQLExpress -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Cuplikan layar konsol Powershell dengan pembuatan skrip dan output dengan koneksi ke file pengaturan penerbitan yang ada.

Membuat database MySQL untuk akun penerbitan menggunakan skrip CreateMySqlDatabase

Skrip: CreateMySqlDatabase.ps1

Deskripsi: Membuat database, pengguna database dengan semua hak istimewa pada database (di localhost), dan menyimpan informasi string koneksi dalam file pengaturan

Parameter:

Nama Deskripsi Nilai Default Catatan
databaseName Nama database yang akan dibuat. WDeployDb
databaseUserName Nama pengguna database. WDeployUser
databaseUserPassword Kata sandi untuk pengguna database dan masuk. Jika tidak ada kata sandi yang ditentukan, kata sandi akan dibuat secara otomatis. [dibuat otomatis] Dalam beberapa kasus, kata sandi yang dibuat secara otomatis mungkin berisi karakter yang menyebabkan masalah dengan klien penerbitan tertentu. Pertimbangkan untuk memodifikasi skrip jika Anda menggunakan skrip untuk pembuatan database otomatis.
databaseAdminUser Nama untuk administrator database, biasanya "root". WAJIB DIISI Anda akan diminta untuk parameter ini jika tidak disediakan
databaseAdminPassword Kata sandi untuk akun administrator server. WAJIB DIISI Anda akan dimintai nilai untuk parameter ini jika Anda tidak menyediakannya.
serverHostName Lokasi server MySQL localhost *lihat catatan di bawah tabel

Umum:

publishSettingSavePath Direktori yang ada tempat file pengaturan akan disimpan. Desktop pengguna saat ini Harus berupa direktori yang ada. Jika direktori yang ditentukan tidak ada, kesalahan akan dihasilkan.
publishSettingFileName Nama file pengaturan, termasuk ekstensi. WDeploy.Publish Pengaturan Ingatlah untuk menyertakan ekstensi. Jika file sudah ada, informasi situs di dalamnya akan ditimpa.

*Jika Anda menentukan nilai non-localhost untuk serverHostName dan tidak mengubah izin untuk pengguna, pengguna mungkin tidak dapat mengakses database-nya. Secara default izin yang diberikan dalam skrip ini menyediakan akses pengguna database dari komputer lokal. Jika server database tidak dihosting pada komputer yang sama, bagian pemberian izin dari skrip PowerShell harus dimodifikasi untuk memberikan izin yang lebih umum, seperti dengan mengubah baris skrip berikut untuk mengizinkan akses dari mesin apa pun:

Baris izin skrip default:

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'localhost' identified by '{2}';"

Baris izin skrip yang dimodifikasi:

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'%' identified by '{2}';"

Contoh:

Buat database dengan pengguna menggunakan default:

.\CreateMySqlDatabase.ps1

Cuplikan layar konsol Powershell dengan pembuatan skrip untuk membuat database.

Buat database baru dan tambahkan informasi string koneksi ke file c:\profiles\UserA.PublishSettingspengaturan penerbitan yang sudah ada :

.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Cuplikan layar konsol Powershell dengan pembuatan skrip dan output koneksi ke pengaturan penerbitan yang ada.

Menyiapkan Aturan Delegasi untuk server menggunakan skrip AddDelegationRules

Skrip: AddDelegationRules.ps1

Deskripsi: Skrip ini dijalankan secara otomatis pada waktu penyiapan oleh penginstal selama penginstalan penuh, tetapi jika Anda tidak melakukan penginstalan penuh atau ingin memperbaiki aturan kapan saja, Anda dapat menjalankan kembali skrip AddDelegationRules ini.

Parameter:

Nama Deskripsi Nilai Default Catatan
elevatedUsername Nama untuk akun pengguna yang akan diberikan akses tulis ke file applicationHost.config server. Pengguna ini akan digunakan sebagai pengguna run-as di appPoolPipeline, appPoolNetFx, dan aturan createApp. WDeployUser Hanya membuat pengguna Windows lokal dan tidak akan berfungsi jika konfigurasi bersama diaktifkan. Kata sandi untuk akun pengguna ini akan diatur ulang jika skrip dijalankan untuk kedua kalinya.
elevatedPassword Dibuat secara otomatis jika tidak ditentukan. [dibuat otomatis]
adminUsername Nama untuk akun pengguna Administrator yang akan digunakan sebagai pengguna run-as pada aturan recycleApp. WDeployAdmin Hanya membuat pengguna Windows lokal dan tidak akan berfungsi jika konfigurasi bersama diaktifkan. Kata sandi untuk akun pengguna ini akan diatur ulang jika skrip dijalankan untuk kedua kalinya.
adminPassword Dibuat secara otomatis jika tidak ditentukan [dibuat otomatis]
ignorePasswordResetErrors Beralih. Jika elevated/adminUsername mereferensikan akun yang ada, sakelar ini memungkinkan skrip untuk mengatur ulang kata sandi untuk akun tersebut. [dihilangkan - mereset kata sandi pengguna tidak diizinkan] Mereset kata sandi pengguna dapat mengakibatkan pengguna kehilangan akses ke data. Sakelar ini harus digunakan dengan hati-hati. Untuk informasi selengkapnya, lihat https://windows.microsoft.com/windows-vista/What-are-the-risks-of-resetting-a-password . Perhatikan juga bahwa kata sandi pengguna baru tidak disimpan dan tidak dapat diambil nanti.