다음을 통해 공유


웹 배포 설치 자동화를 위한 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 지침

  1. PowerShell 명령 창을 시작합니다.

    작업 표시줄에서 PowerShell 아이콘을 클릭하거나 시작을 클릭하고 PowerShell을 입력한 다음 Windows PowerShell을 선택합니다.
    시작 단추를 표시하는 Windows 작업 표시줄의 스크린샷
    (파란색 아이콘)

  2. 실행 정책에서 스크립트를 실행할 수 있는지 확인합니다.

    1. "Get-ExecutionPolicy"를 입력합니다. 제한(기본값)인 경우 "Set-ExecutionPolicy AllSigned"를 입력하는 등 보다 관대한 설정으로 다시 설정해야 합니다. AllSigned 설정은 서명된 스크립트를 실행할 수 있지만 신뢰할 수 없는 경우를 묻는 메시지를 표시합니다.

    2. 실행 정책 설정에 대한 자세한 내용은 Set-ExecutionPolicy Cmdlet 사용을 참조 하세요.

  3. 웹 배포 스크립트 디렉터리로 변경합니다.

    1. 형식 cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts' (하지만 실제 경로(예: )으로 C:\Program Files바꿉니다%programfiles%.

SetupSiteForPublish 스크립트를 사용하여 기본 게시 웹 사이트 만들기(데이터베이스 없음)

인수 없이 SetupSiteForPublish.ps1 스크립트를 실행합니다.

출력이 있는 Powershell 콘솔의 스크린샷

이 작업은 다음과 같습니다.

스크립트는 관리자가 아닌 게시를 위한 사용자 및 사이트를 만들고 게시 프로필 정보를 바탕 화면의 파일에 저장합니다. 보다 구체적으로, 실제 사이트 루트 %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

스크립팅 결과가 있는 Powershell 콘솔의 스크린샷

게시 설정 파일의 사용자 지정 이름과 위치를 사용하여 새 사이트에서 새 사용자에 대한 게시를 사용하도록 설정합니다.

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

게시 설정에 대한 스크립팅 및 출력이 있는 Powershell 콘솔의 스크린샷

게시설정 파일에는 새 사용자 암호도 포함되어 있습니다. 연결 문자열 필드는 비어 있습니다. 즉, 손으로 채울 수 있거나 데이터베이스 생성 스크립트를 사용하여 프로필에 추가할 수 있습니다.

<?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

S QL 데이터베이스를 만들기 위한 스크립팅 및 출력이 있는 Powershell 콘솔의 스크린샷

새 데이터베이스를 만들고 연결 문자열 정보를 기존 게시 설정 파일에 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

기존 게시 설정 파일에 대한 연결이 있는 스크립팅 및 출력이 있는 Powershell 콘솔의 스크린샷

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

데이터베이스를 만들기 위한 스크립팅이 있는 Powershell 콘솔의 스크린샷

새 데이터베이스를 만들고 연결 문자열 정보를 기존 게시 설정 파일에 c:\profiles\UserA.PublishSettings추가합니다.

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

기존 게시 설정에 대한 연결의 스크립팅 및 출력이 있는 Powershell 콘솔의 스크린샷

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를 참조하세요. 또한 새 사용자 암호는 저장되지 않으며 나중에 검색할 수 없습니다.