AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 110661
Accepted
Andras Zoltan
Andras Zoltan
Asked: 2010-02-09 06:21:29 +0800 CST2010-02-09 06:21:29 +0800 CST 2010-02-09 06:21:29 +0800 CST

IIS7 - Web 部署工具 - SetParam/SetParamFile 设置 http 和 https 绑定 + 证书

  • 772

我们目前正在使用MS Web 部署工具将一个实时网站和一些 Web 服务从一个暂存盒同步到两个实时服务器。

暂存盒在端口 17000 上的任何 IP 上托管站点,而两个实时服务器是负载平衡的,并且每个服务器都有不同的 IP。

目前,我生成了两个单独的部署包 - 每台机器一个 - 使用同步操作并指定 DestinationBinding 参数,如下所示:

msdeploy -verb:sync 
  -source:WebServer,computerName=localhost
  -dest:package="machinename.zip"
  -setParam:type="DestinationBinding",scope="SiteName",value="ip_address:port:".

(拆分为多行以使其更易于阅读!)

我运行了两次,两台机器都使用不同的目标文件名和 IP 地址。在部署方面,我只是将每个包同步到其各自的实时站点。

我知道,我知道 - 我应该能够通过生成一个参数化包然后可能对两个服务器中的每一个使用 SetParamFile 开关来做到这一点 - 相信我我愿意,但坦率地说,这样做的文档是非 -存在的。

现在我需要为此站点配置和部署HTTP 和 HTTPS绑定;还包括要使用的 ssl 证书。

我已经在暂存箱上为站点添加了 SSL 绑定 - 它使用开发证书(需要更换 - 或者暂存箱应该使用实时证书?),现在上面的命令行有效果替换 http 和 https 条目上的目标 IP。

看来我无法在上面的 -setParam 的 DestinationBinding 值中指定多个绑定以及证书信息,所以有人知道我将如何去做吗?

非常感谢任何帮助。

deployment iis-7.5 msdeploy
  • 2 2 个回答
  • 5308 Views

2 个回答

  • Voted
  1. Best Answer
    Andras Zoltan
    2010-02-09T10:07:07+08:002010-02-09T10:07:07+08:00

    好的,所以我走了这么远-我不会将其作为对问题的编辑发布,尽管这似乎在正确的轨道上,但可能有比我一直在努力的更好的方法. 图我会让民主来决定!

    使用此链接,我能够找出应该与setParamFilemsdeploy 开关一起使用的 XML 文件的格式。过去,在安装 Web 部署工具后,我还通过使用 IIS 中的嵌入式 GUI 找出了 declareParamFile XML 的格式。

    因此,给定一个名为“SiteA”的站点,在 applicationHost.config 文件中有两个绑定条目,如下所示:

    <bindings>
      <binding protocol="http" bindingInformation="*:80:" />
      <binding protocol="https" bindingInformation="*:443:" />
    </bindings>
    

    (这意味着,特别是 - 端口 80 上的任何 IP 地址和端口 443 上的任何 IP 地址)

    实际使用的证书不存储在 applicationHost.Config 中,而是存储在 Http.sys 的配置中(根据本文)。当 msdeploy 为该站点准备一个包时,它将嵌入该信息 - 正如我在最后提到的那样,这可能不是一件好事。

    第一步是声明一个参数 xml 文件,我们将使用它来为目标实时服务器参数化单个包:

    <parameters>
      <!-- declare parameter for Http Binding -->
      <parameter name="SiteA-http" description="SiteA Http Binding">
        <parameterEntry kind="DestinationBinding" scope="SiteA" match=":80:" />
      </parameter>
      <!-- declare parameter for Https Binding -->
      <parameter name="SiteA-https" description="SiteA Https Binding">
        <parameterEntry kind="DestinationBinding" scope="SiteA" match=":443:" />
      </parameter>
    </parameters>
    

    请注意两个内部参数条目上的 'match=' 属性值。这样可以确保替换正确的绑定。这是一个正则表达式(如本 technet 文章中所述),它选择现有的绑定值,这些绑定值将使用稍后将传递的参数值进行更改。

    我们将其保存为declareparameters.xml.

    有了这个,我们现在可以从我们的暂存框中生成一个参数化的包,然后我们可以使用这个命令行从中部署(这是为了“映像”一个存在 SiteA 的整个 IIS):

    msdeploy -verb:sync 
      -source:WebServer,computerName=localhost
      -dest:package="parameterised.zip"
      -declareParamFile:declareparameters.xml
    

    如果该网站位于不同的 Web 服务器上,请将“localhost”替换为该 Web 服务器的名称。Web 部署代理服务必须在目标机器上运行才能正常工作。

    现在,我们声明一个参数 xml 文件,该文件实际上将为部署到实时服务器提供参数值:

    <parameters>
      <setParameter name="SiteA-http" value="[fixedIPAddress]:80:"/>
      <setParameter name="SiteA-https" value="[fixedIPAddress]:443:"/>
    </parameters>
    

    我们将其保存为

    [targetServerName]parameters.xml
    

    (在我的情况下,我有两个目标服务器,因此每个目标服务器都有自己的参数 xml 具有不同的文件名,每个中的 IP 略有不同)。

    最后,我们可以使用以下命令行对目标服务器执行参数化部署:

    msdeploy -verb:sync 
      -source:package="parameterised.zip"
      -dest:WebServer,computerName="[targetServerName]"
      -setParamFile=[targetServerName]parameters.xml
    

    因此,现在我们可以更改 Http 或 Https Binding 的 IP,如果原件完全不同,我们可以参数化该站点可能需要的任意数量的单个绑定。

    到目前为止,这有一个缺点-因此请赞赏任何替代答案-SSL配置从源计算机复制到程序包中-这意味着为了使实时站点上的SSL配置在部署时正确,登台计算机和实时服务器必须使用完全相同的 SSL 证书。

    如果暂存盒可以使用自签名或内部证书进行完整性检查,然后将真正的 SSL 证书应用于实际部署,那就太好了——再次,从 XML 文件参数化。

    • 7
  2. Mariusz
    2017-06-06T13:00:26+08:002017-06-06T13:00:26+08:00

    您可以通过添加 -replace 命令行开关来替换端口号

    msdeploy -verb:sync -source:WebServer,computerName=localhost -dest:package="machinename.zip" -replace:objectName=binding,targetAttributeName=bindingInformation,match=:443:,replace=:445:

    • 0

相关问题

  • 网络监控产品公司的部署工程师需要具备哪些技能?[关闭]

  • Mac OS X 的无人值守安装

  • Firefox 打包以包含用于网络安装的插件

  • 我应该将 Rails 应用程序部署到哪个目录?

  • 将 iChat 设置部署到多个用户

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve