【问题标题】:How to deploy applications and include IIS settings?如何部署应用程序并包含 IIS 设置?
【发布时间】:2015-10-28 09:12:10
【问题描述】:

我正在寻找一种如何从DEVITGPRO 部署应用程序、网站和Web 服务的方法。我指的不仅仅是项目中包含的文件,还包括来自IIS的设置、文件/文件夹权限等。

例如,这个周末我们必须将一个新的应用程序从ITG 部署到PRO,并且PRO AppPool 被设置为运行.NET 2.0(来自以前的版本)。我们花了一些时间才意识到发生了什么,这当然导致停机时间比预期的要长。

目前我们正在使用VS 2013C# 4.xIIS 8.xTFS 2013。 这里的问题是,是否有一种方法可以通过“单击”来部署应用程序。 MSBuild 适合这个任务吗? (我对MSBuild 没有经验,我只是在谷歌搜索时发现了一些东西,我想知道是否需要更深入)。 TFS 可以从源机器读取这些设置并以某种方式将它们复制到目标机器上吗?有没有其他工具可以完成这个任务?我们想留在微软的圈子里,但如果有其他公司确实这样做,我们可能会考虑。

【问题讨论】:

  • 查看 Microsoft 的 TFS 发布管理应用程序——它允许您进行单击构建/发布。 MSBuild 是一个构建工具,请勿将其用于发布。
  • 您可能需要查看 TeamCity 和 Octopus Deploy 以了解持续集成的基础知识。
  • 谢谢 nimeshjm,我已经看到了,但是我不记得它还复制了 AppPool、文件权限等。有没有新版本可以做更多?

标签: asp.net iis tfs msbuild web-deployment


【解决方案1】:

这可以通过PowerShell 完成。我不是 PowerShell 专家,所以我在这方面的语法可能没有遵循良好的做法等。但我有一个用于创建生产和测试网站并预配置几个 IIS 设置的脚本。然后我从 VS 进行部署,但您也可以扩展脚本以执行构建和部署。它利用WebAdministration 模块来配置IIS。

创建IntranetSite.ps1

param([string]$SiteName, [string]$Hostname)

if($SiteName -eq '') {
Write-Error "You must provide a SiteName parameter."
}
elseif($HostName -eq ''){
Write-Error "You must provide a HostName parameter."
}
else {
Invoke-Command -ComputerName $HostName -credential DOMAIN\mason.sa -ArgumentList $SiteName -ScriptBlock {
param([string]$SiteName)
$IntranetRoot = "E:\Intranet"
$DefaultHtml = "<html><head><title>$SiteName</title></head><body><h1>$SiteName</h1><p>The $SiteName virtual application has been successfully configured.</p></body></html>"

#Import IIS tools
Import-Module "WebAdministration"

#Create Folder
New-Item $IntranetRoot\$SiteName -type Directory

#Create Default Page
Set-Content $IntranetRoot\$SiteName\index.html $DefaultHtml

#Create App Pool
New-WebAppPool $SiteName

#Create Virtual Application
New-WebApplication -Name $SiteName -Site "Intranet" -PhysicalPath $IntranetRoot\$SiteName -ApplicationPool $SiteName

#Configuration Virtual Application

#Disable AnonymousAuthentication
Set-WebConfigurationProperty -filter /system.WebServer/security/authentication/AnonymousAuthentication -name enabled -value false -location Intranet/$SiteName

#Enable Windows Authentication
Set-WebConfigurationProperty -filter /system.WebServer/security/authentication/WindowsAuthentication -name enabled -value true -location Intranet/$SiteName

}

#Launch Browser to verify
$SiteUrl=''
if($HostName -eq 'wr-test01'){
$SiteUrl='https://testnet.termana.net/'+$SiteName
}
elseif($HostName -eq 'wr-web01'){
$SiteUrl='https://intranet.termana.net/'+$SiteName
}
$ie = new-object -com InternetExplorer.Application
$ie.Visible = $true
$ie.Navigate($SiteUrl);
}

【讨论】:

    猜你喜欢
    • 2013-06-19
    • 2014-12-16
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多