웹 배포 설치 자동화를 위한 PowerShell 스크립트
작성자: 크리스티나 올슨
웹 배포의 v2.1 릴리스는 사용자가 웹 배포를 사용하여 게시할 수 있도록 IIS 서버를 쉽게 구성할 수 있도록 하는 여러 PowerShell 스크립트를 설치합니다. 이 페이지에서는 이러한 스크립트를 사용하여 기본 게시 사이트를 만들고, 새 사이트 또는 기존 사이트 및 사용자에 대한 게시를 사용하도록 설정하거나, 게시 SQL 또는 MySQL 데이터베이스를 만들거나, PowerShell을 사용하여 위임 규칙을 설정하는 방법을 보여 줍니다.
사용할 스크립트는 다음과 같습니다.
- SetupSiteForPublish.ps1
- CreateSqlDatabase.ps1
- CreateMySqlDatabase.ps1
- AddDelegationRules.ps1
요구 사항
서버에는 IIS7과 함께 제공되는 운영 체제가 있어야 합니다. 즉, Windows Server 2008 또는 Windows Server 2008 R2를 의미합니다. 컴퓨터의 관리자여야 합니다.
다음 조건이 충족되었는지 확인합니다.
- PowerShell2를 설치해야 합니다(Windows Server 2008 R2에 기본 제공됨) Windows Server 2008의 경우 다음 https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid=0be83604-db27-4b99-976a-136a92bd579b에서 PowerShell2를 업데이트로 가져올 수 있습니다. 다시 시작해야 할 수 있습니다.
- 서버 관리자 웹 서버(IIS) 역할을 사용하도록 설정해야 합니다.
- IIS의 웹 관리 서비스 역할 서비스("관리 서비스")는 서버 관리자
- PowerShell 데이터베이스 스크립트를 사용하려면 서버에 SQL 또는 MySQL 데이터베이스에 대한 액세스 권한이 있어야 합니다. SQL Server 관리 개체도 SQL용으로 설치해야 합니다.
- 관리 서비스 통합 구성 요소와 함께 웹 배포를 설치해야 합니다. (이 옵션이 웹 배포 설치 관리자에 표시되려면 먼저 웹 관리 서비스를 사용하도록 설정해야 합니다.)
일반 PowerShell 지침
PowerShell 명령 창을 시작합니다.
작업 표시줄에서 PowerShell 아이콘을 클릭하거나 시작을 클릭하고 PowerShell을 입력한 다음 Windows PowerShell을 선택합니다.
(파란색 아이콘)실행 정책에서 스크립트를 실행할 수 있는지 확인합니다.
"Get-ExecutionPolicy"를 입력합니다. 제한(기본값)인 경우 "Set-ExecutionPolicy AllSigned"를 입력하는 등 보다 관대한 설정으로 다시 설정해야 합니다. AllSigned 설정은 서명된 스크립트를 실행할 수 있지만 신뢰할 수 없는 경우를 묻는 메시지를 표시합니다.
실행 정책 설정에 대한 자세한 내용은 Set-ExecutionPolicy Cmdlet 사용을 참조 하세요.
웹 배포 스크립트 디렉터리로 변경합니다.
- 형식
cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts'
(하지만 실제 경로(예: )으로C:\Program Files
바꿉니다%programfiles%
.
- 형식
SetupSiteForPublish 스크립트를 사용하여 기본 게시 웹 사이트 만들기(데이터베이스 없음)
인수 없이 SetupSiteForPublish.ps1 스크립트를 실행합니다.
이 작업은 다음과 같습니다.
스크립트는 관리자가 아닌 게시를 위한 사용자 및 사이트를 만들고 게시 프로필 정보를 바탕 화면의 파일에 저장합니다. 보다 구체적으로, 실제 사이트 루트 %systemdrive%\inetpub\WDeploySite
가 있는 WDeploySite라는 사이트를 만듭니다. 사이트에는 일치하는 애플리케이션 풀인 WDeployAppPool이 있으며 기본적으로 포트 8080에 할당됩니다(또는 다른 사이트에서 8080을 사용하는 경우 사용 가능한 다음 포트). 또한 이 스크립트는 WDeploySiteuser라는 관리자가 아닌 로컬 Windows 사용자를 만들고 해당 사용자에게 WDeploySite 폴더의 모든 권한 ACL 및 IIS 관리자 권한을 사이트에 부여합니다. 설정 정보는 WDeploy.Publish설정 파일의 바탕 화면에 저장됩니다. 이 파일은 WebMatrix(또는 잠재적으로 Visual Studio)에서 사이트에 게시하는 데 사용될 수 있습니다. 이 프로필에는 현재 데이터베이스 게시 정보가 포함되어 있지 않습니다.
SetupSiteForPublish 스크립트를 사용하여 모든 사이트 및 사용자에 대해 웹 배포 게시를 사용하도록 설정합니다.
스크립트: SetupSiteForPublish.ps1
설명: 지정된 사이트 및 사용자 계정의 경우 지정된 사용자가 지정된 사이트에 게시할 수 있습니다. 스크립트는 사용자 계정, 사이트 및 애플리케이션 풀을 만듭니다. 는 사이트에 대한 디렉터리 ACL 및 IIS 관리자 권한을 설정합니다. 설정 정보를 파일에 저장합니다.
매개 변수:
속성 | 설명 | 기본값 | 주의 |
---|---|---|---|
siteName | 사이트의 이름입니다. 사이트가 없으면 사이트가 만들어집니다. | WDeploySite | |
sitePhysicalPath | 사이트 콘텐츠의 실제 파일 위치입니다. 디렉터리가 없으면 디렉터리가 만들어집니다. | %systemdrive%\inetpub\WDeploySite |
|
siteAppPoolName | 사이트와 연결할 애플리케이션 풀의 이름입니다. 애플리케이션 풀이 없으면 생성됩니다. | WDeployAppPool | 사이트당 하나의 애플리케이션 풀을 전용으로 사용하는 것이 좋습니다. |
sitePort | 사이트 바인딩의 포트입니다. | 다른 사이트에서 사용하지 않는 8080-8200의 첫 번째 포트입니다. | 원격 트래픽에 대한 포트를 열려면 방화벽 규칙이 필요할 수 있습니다. |
deploymentUserName | 사이트에 대한 액세스 권한을 부여할 사용자의 이름입니다. 사용자가 없으면 관리자가 아닌 사용자가 만들어집니다. | WDeploySiteuser | |
deploymentUserPassword | 배포 사용자의 암호입니다. 암호를 지정하지 않으면 자동으로 생성되어 설정 파일에 저장됩니다. | [자동 생성됨] | |
managedRunTimeVersion | 지정한 경우 애플리케이션 풀에 대해 지정된 런타임 버전을 설정하려고 합니다. 일치하는 런타임 버전을 찾을 수 없는 경우 애플리케이션 풀 기본값이 사용됩니다. | 애플리케이션 풀 기본값 | 예제 형식 "v2.0" 또는 "v4.0" |
publishSettingSavePath | 설정 파일을 저장할 기존 디렉터리입니다. | 현재 사용자의 데스크톱 | 기존 디렉터리여야 합니다. 지정한 디렉터리가 없으면 오류가 발생합니다. |
publishSettingFileName | 확장명을 포함한 설정 파일의 이름입니다. | WDeploy.Publish설정 | 확장을 포함해야 합니다. 파일이 이미 있는 경우 파일의 사이트 정보를 덮어씁니다. |
예:
기존 사이트에서 기존 사용자에 대한 게시를 사용하도록 설정합니다(암호는 설정 파일에 저장되지 않음).
.\SetupSiteForPublish.ps1 -siteName ExistingSite -deploymentUserName UserA -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
게시 설정 파일의 사용자 지정 이름과 위치를 사용하여 새 사이트에서 새 사용자에 대한 게시를 사용하도록 설정합니다.
.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings
게시설정 파일에는 새 사용자 암호도 포함되어 있습니다. 연결 문자열 필드는 비어 있습니다. 즉, 손으로 채울 수 있거나 데이터베이스 생성 스크립트를 사용하여 프로필에 추가할 수 있습니다.
<?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>
CreateSqlDatabase 스크립트를 사용하여 게시 계정에 대한 SQL 데이터베이스 만들기
스크립트: CreateSqlDatabase.ps1
설명: 데이터베이스에 대한 db_owner 권한이 있는 데이터베이스, 로그인, 데이터베이스 사용자를 만들고 해당 연결 문자열 정보를 설정 파일에 저장합니다.
매개 변수:
속성 | 설명 | 기본값 | 주의 |
---|---|---|---|
databaseName | 만들 데이터베이스의 이름입니다. | wDeploySqldb | |
databaseUserName | 데이터베이스 사용자 및 로그인의 이름입니다. | wdeploySqlUser | 매번 새 사용자를 지정하거나 사용자의 로그인 암호를 다시 설정하고 사용자의 이전 연결 자격 증명을 무효화할 수 있습니다. |
databaseUserPassword | 데이터베이스 사용자 및 로그인에 대한 암호입니다. 암호를 지정하지 않으면 암호가 자동으로 생성됩니다. | [자동 생성됨] | 경우에 따라 자동 생성된 암호에 특정 게시 클라이언트에 문제를 일으키는 문자가 포함될 수 있습니다. 자동화된 데이터베이스 만들기에 스크립트를 사용하는 경우 스크립트를 수정하는 것이 좋습니다. |
database관리User | SQL Server 관리자 사용자 이름(일반적으로 "sa"). | 필수 | |
database관리Password | SQL Server 관리자 계정의 암호입니다. | 필수 | |
sqlServerInstanceName | SQL 서버의 위치입니다. | .\Sqlexpress |
일반
publishSettingSavePath | 설정 파일을 저장할 기존 디렉터리입니다. | 현재 사용자의 데스크톱 | 기존 디렉터리여야 합니다. 지정한 디렉터리가 없으면 오류가 발생합니다. |
---|---|---|---|
publishSettingFileName | 확장명을 포함한 설정 파일의 이름입니다. | WDeploy.Publish설정 | 확장을 포함해야 합니다. 파일이 이미 있는 경우 파일의 사이트 정보를 덮어씁니다. |
예:
기본값(로컬 SQLExpress 데이터베이스)을 사용하여 사용자와 함께 데이터베이스를 만듭니다.
.\CreateSqlDatabase.ps1
새 데이터베이스를 만들고 연결 문자열 정보를 기존 게시 설정 파일에 c:\profiles\UserA.PublishSettings
추가합니다.
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
CreateMySqlDatabase 스크립트를 사용하여 게시 계정에 대한 MySQL 데이터베이스 만들기
스크립트: CreateMySqlDatabase.ps1
설명: 데이터베이스를 만들고 데이터베이스에 대한 모든 권한을 가진 데이터베이스 사용자(localhost)를 만들고 연결 문자열 정보를 설정 파일에 저장합니다.
매개 변수:
속성 | 설명 | 기본값 | 주의 |
---|---|---|---|
databaseName | 만들 데이터베이스의 이름입니다. | WDeployDb | |
databaseUserName | 데이터베이스 사용자의 이름입니다. | WDeployUser | |
databaseUserPassword | 데이터베이스 사용자 및 로그인에 대한 암호입니다. 암호를 지정하지 않으면 암호가 자동으로 생성됩니다. | [자동 생성됨] | 경우에 따라 자동 생성된 암호에 특정 게시 클라이언트에 문제를 일으키는 문자가 포함될 수 있습니다. 자동화된 데이터베이스 만들기에 스크립트를 사용하는 경우 스크립트를 수정하는 것이 좋습니다. |
database관리User | 데이터베이스 관리자의 이름(일반적으로 "root")입니다. | 필수 | 제공되지 않은 경우 이 매개 변수에 대한 메시지가 표시됩니다. |
database관리Password | 서버 관리자 계정의 암호입니다. | 필수 | 매개 변수를 제공하지 않으면 이 매개 변수에 대한 값을 입력하라는 메시지가 표시됩니다. |
serverHostName | MySQL 서버의 위치 | localhost | *아래 표 참조 |
일반:
publishSettingSavePath | 설정 파일을 저장할 기존 디렉터리입니다. | 현재 사용자의 데스크톱 | 기존 디렉터리여야 합니다. 지정한 디렉터리가 없으면 오류가 발생합니다. |
---|---|---|---|
publishSettingFileName | 확장명을 포함한 설정 파일의 이름입니다. | WDeploy.Publish설정 | 확장을 포함해야 합니다. 파일이 이미 있는 경우 파일의 사이트 정보를 덮어씁니다. |
*serverHostName에 대해 localhost가 아닌 값을 지정하고 사용자에 대한 사용 권한을 수정하지 않으면 사용자가 자신의 데이터베이스에 액세스하지 못할 수 있습니다. 기본적으로 이 스크립트에 부여된 권한은 로컬 컴퓨터에서 데이터베이스 사용자 액세스를 제공합니다. 데이터베이스 서버가 동일한 컴퓨터에서 호스트되지 않는 경우 PowerShell 스크립트의 권한 부여 섹션을 수정하여 모든 컴퓨터에서 액세스할 수 있도록 다음 스크립트 줄을 변경하는 등 보다 일반적인 권한을 부여해야 합니다.
기본 스크립트 사용 권한 줄:
$createUserScript = "Grant all privileges on {0}.* to '{1}'@'localhost' identified by '{2}';"
수정된 스크립트 사용 권한 줄:
$createUserScript = "Grant all privileges on {0}.* to '{1}'@'%' identified by '{2}';"
예:
기본값을 사용하여 사용자와 함께 데이터베이스를 만듭니다.
.\CreateMySqlDatabase.ps1
새 데이터베이스를 만들고 연결 문자열 정보를 기존 게시 설정 파일에 c:\profiles\UserA.PublishSettings
추가합니다.
.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
AddDelegationRules 스크립트를 사용하여 서버에 대한 위임 규칙 설정
스크립트: AddDelegationRules.ps1
설명: 이 스크립트는 설치 관리자가 전체 설치 중에 설치 시 자동으로 실행되지만, 전체 설치를 수행하지 않았거나 언제든지 규칙을 복구하려는 경우 이 AddDelegationRules 스크립트를 다시 실행할 수 있습니다.
매개 변수:
속성 | 설명 | 기본값 | 주의 |
---|---|---|---|
elevatedUsername | 서버의 applicationHost.config 파일에 대한 쓰기 권한이 부여되는 사용자 계정의 이름입니다. 이 사용자는 appPoolPipeline, appPoolNetFx 및 createApp 규칙에서 실행 사용자로 사용됩니다. | WDeployUser | 로컬 Windows 사용자만 만들고 공유 구성을 사용하는 경우 작동하지 않습니다. 스크립트가 두 번째로 실행되는 경우 이 사용자 계정의 암호가 다시 설정됩니다. |
elevatedPassword | 지정하지 않으면 자동으로 생성됩니다. | [자동 생성됨] | |
adminUsername | recycleApp 규칙에서 실행 사용자로 사용되는 관리istrator 사용자 계정의 이름입니다. | WDeploy관리 | 로컬 Windows 사용자만 만들고 공유 구성을 사용하는 경우 작동하지 않습니다. 스크립트가 두 번째로 실행되는 경우 이 사용자 계정의 암호가 다시 설정됩니다. |
adminPassword | 지정하지 않으면 자동으로 생성됩니다. | [자동 생성됨] | |
ignorePasswordResetErrors | 스위치. elevated/adminUsername이 기존 계정을 참조하는 경우 이 스위치를 사용하면 스크립트가 계정의 암호를 재설정할 수 있습니다. | [생략됨 - 사용자 암호 재설정이 허용되지 않음] | 사용자 암호를 다시 설정하면 사용자가 데이터에 대한 액세스 권한을 잃을 수 있습니다. 이 스위치는 주의해서 사용해야 합니다. 자세한 내용은 https://windows.microsoft.com/windows-vista/What-are-the-risks-of-resetting-a-password를 참조하세요. 또한 새 사용자 암호는 저장되지 않으며 나중에 검색할 수 없습니다. |