zoukankan      html  css  js  c++  java
  • 项目发布到IIS远程服务器

    在以往发布项目的时候,都是将文件复制粘贴到站点目录,或者通过ftp上传到站点目录,现在随着持续集成、自动化运维、自动化发布的出现,发布项目也在日新月异。

    本文介绍,如何通过 vs 2019 远程发布到远程 iis 站点下。

    远程服务器系统:Windows Server 2019 64 位

    服务器配置

    1.添加 iis,安装 .net 框架(略)

    2.下载安装 Web Deploy

    Web Deploy 可以用于本地和远程部署Web项目,地址:https://www.iis.net/downloads/microsoft/web-deploy

    <ignore_js_op>QQ截图20201009104845.jpg

    在安装的时候,选择“完整”安装,安装完成后,会在服务中看到“Web Management Service”服务,如下图:

    <ignore_js_op>QQ截图20201009110343.jpg

    如果未安装,在远程发布的时候,vs 会报错如下:

    ---------------------------
    Microsoft Visual Studio
    ---------------------------
    未能连接到远程计算机(“xx”)。请确保在远程计算机上安装了 Web Deploy 并启动了所需的进程(“Web Management Service”)。  在以下位置了解更多信息: https://go.microsoft.com/fwlink/ ... ATION_NOT_REACHABLE。 无法连接到远程服务器
    ---------------------------
    确定   
    ---------------------------

    <ignore_js_op>QQ截图20201009103733.jpg

    3.安装“IIS 管理脚本和工具”

    转到“选择服务器角色” > “Web 服务器(IIS)” > “管理工具”,然后选择“IIS 管理脚本和工具”角色,点击“下一步”,然后安装角色 。

    <ignore_js_op>QQ截图20201009111311.jpg

    4.IIS 启用远程连接

    在 IIS 找到管理服务,启用远程连接,如下图:

    <ignore_js_op>QQ截图20201009112103.jpg

    <ignore_js_op>QQ截图20201009111718.jpg

    (备注:在防火墙和安全组要开放8172入站端口

    5.新建 IIS 站点

    新建一个名称为 test1 的站点,如下图:

    <ignore_js_op>QQ截图20201009112425.jpg

    6.IIS 添加管理用户

    添加 IIS 管理器用户,如下图:

    <ignore_js_op>QQ截图20201009111939.jpg <ignore_js_op>QQ截图20201009112224.jpg

    同时,在 test1 站点,添加授权,如下图:

    <ignore_js_op>QQ截图20201009112544.jpg <ignore_js_op>QQ截图20201009112637.jpg

    如果未添加授权,在远程发布的时候,会报错如下:

    ---------------------------
    Microsoft Visual Studio
    ---------------------------
    已使用 Web 管理服务连接到远程计算机(“xxx”),但未能授权。请确保你使用了正确的用户名和密码、你连接的站点已存在并且凭据代表的用户有权访问该站点。  在以下位置了解更多信息: https://go.microsoft.com/fwlink/ ... R_USER_UNAUTHORIZED。 远程服务器返回错误: (401) 未经授权。
    ---------------------------
    确定   
    ---------------------------

    发布 ASP.NET MVC 项目

    首先,使用 vs 2019 新建一个 .NET 4.6.2 的 asp.net mvc 项目,名称为:WebAutomatedDeployment,

    再新建两个类库,网站程序同时引用这2个类库。(新建和引用2个类库,原因是模拟更接近正式的项目)


    尝试启动项目,如下图:

    <ignore_js_op>QQ截图20201009113001.jpg

    右击项目,选择发布,web服务器(iis)->web部署,填写服务器信息,如下图:

    <ignore_js_op>QQ截图20201009113041.jpg <ignore_js_op>QQ截图20201009113051.jpg <ignore_js_op>QQ截图20201009113234.jpg

    验证连接,测试通过,如下图:

    <ignore_js_op>QQ截图20201009113305.jpg

    尝试发布的时候,报错如下:

    Web 部署任务失败。((2020/10/9 11:34:38)在远程计算机上处理请求时出错。)

    (2020/10/9 11:34:38)在远程计算机上处理请求时出错。
    服务器在处理请求时遇到问题。请与服务器管理员联系以了解详细信息。        WebAutomatedDeployment                0

    可以通过服务器事件查看器查看具体的错误,如下图:

    <ignore_js_op>QQ截图20201009120210.jpg

    User: itsvse
    Client IP: xxx
    Content-Type: application/msdeploy
    Version: 9.0.0.0
    MSDeploy.VersionMin: 7.1.600.0
    MSDeploy.VersionMax: 9.0.3802.0
    MSDeploy.Method: Sync
    MSDeploy.RequestId: def8d9f7-1a72-4b19-8b75-919f8c6a9604
    MSDeploy.RequestCulture: zh-CN
    MSDeploy.RequestUICulture: zh-CN
    ServerVersion: 9.0.1973.0
    Skip: objectName="^configProtectedData$"
    Provider: auto, Path:
    发生了传播到客户端的跟踪部署代理异常。请求 ID“def8d9f7-1a72-4b19-8b75-919f8c6a9604”,请求时间戳:“2020/10/9 11:51:29”。错误详细信息:
    System.UnauthorizedAccessException: 尝试执行未经授权的操作。
       在 System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)
       在 System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
       在 System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext)
       在 Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path, Boolean isFile)
       在 Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, Boolean whatIf)
       在 Microsoft.Web.Deployment.DeploymentObject.Update(DeploymentObject source, DeploymentSyncContext syncContext)
       在 Microsoft.Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject)
       在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source)
       在 Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject)
       在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable`1 syncPassId, String syncSessionId)
       在 Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable`1 passId, String user, String siteName)
       在 Microsoft.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData)
       在 Microsoft.Web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData)

    解决方案:

    重新启动 vs 工具,点击发布,会弹出如下图:

    <ignore_js_op>QQ截图20201009120348.jpg

    勾选“为Visual Studia的将来会话保存此证书”即可解决。

    第一次发布的时候,比较慢,因为需要将全部的文件上传到服务器,如下图:

    <ignore_js_op>QQ截图20201009120517.jpg

    尝试修改 Index.cshtml 页面文件,点击重新发布,只会更新如下3个文件,如下图:

    <ignore_js_op>QQ截图20201009120709.jpg

    刷新网站,发现已经更新,如下图:

    <ignore_js_op>QQ截图20201009120835.jpg

    转自  https://www.itsvse.com/thread-9410-1-1.html

  • 相关阅读:
    OpenCV 机器学习之 支持向量机的使用方法实例
    Lua中调用C函数(lua-5.2.3)
    我的Hook学习笔记
    几种开源分词工具的比較
    利用JasperReport+iReport进行Web报表开发
    移动前端开发者必知必会:移动设备概述
    图表插件--jqplot交互演示样例
    算法之二叉树各种遍历
    repo的小结
    sqlite3经常使用命令&amp;语法
  • 原文地址:https://www.cnblogs.com/ning-xiaowo/p/13803100.html
Copyright © 2011-2022 走看看