我知道这是一个非常基本的问题。如果有人能使我幽默并告诉我他们将如何处理,我将不胜感激。
我决定发布此内容,因为我将要安装SynchToy来解决以下问题,并且使用“ Toy”感到有点不专业,但是我想不出更好的方法。
当我处于这种情况下,我发现很多时候,我都缺少一些痛苦而明显的做事方法-这是因为它是公司中唯一的开发人员。
- 在计算机上工作时开发的ASP.NET Web应用程序
- 解决方案有2个项目:
- 网站(文件)
- WebsiteLib(C#/ dll)
- 使用Git存储库
- 部署在GoGrid 2008R2 Web服务器上
部署:
- 进行代码更改。
- 推送到Git。
- 远程桌面到服务器。
- 从Git中拉出。
- 通过使用Windows资源管理器拖放来覆盖实时文件。
在第5步中,我从网站根目录中删除所有文件。这不是一件好事。这就是为什么我要安装SynchToy ...
更新:感谢所有有用的回复。我无法选择哪个人来标记答案-在使用Web部署之间-看来我有几个有用的建议:
- Web Project =将整个站点打包到一个DLL中-对我来说,我无法进行简单的更新-作为50个公司的开发人员,这有时会更简单。
- 从SCM直接拉到站点的Web根-我最初并不是这样做,因为我担心我的SCM隐藏目录可能最终被暴露出来,但是这里的答案帮助我克服了这一点(尽管我仍然不喜欢拥有一个还有更多的事情需要担心忘记以确保随着时间的推移仍然是正确的)
- 使用Web场并系统地部署到节点-这是零停机的理想解决方案,这实际上是我关心的问题,因为该站点实质上是我公司的实时收入来源-我可能很难说服他们服务器成本却翻了一番。
->最后,重申基本原则,即需要对站点进行一次单击部署,否则可能会出错,这是我从答案中得到的最有用的东西。
更新2:我以为我会回到此位置,并使用已经存在了几个月并且可以正常使用的实际解决方案进行更新(对于我的单个Web服务器解决方案)。
我使用的过程是:
- 进行代码更改
- 推到Git
- 远程桌面到服务器
- 从Git拉
运行以下批处理脚本:
cd C:\ Users \ Administrator
%systemroot%\ system32 \ inetsrv \ appcmd.exe停止站点“ /site.name:默认网站”
robocopy文档\代码\ da \ 1 \ work \ Tree \ LendingTreeWebSite1 c:\ inetpub \ wwwroot / E / XF connectionsconfig Web.config
%systemroot%\ system32 \ inetsrv \ appcmd.exe起始站点“ /site.name:默认网站”
如您所见,这使站点瘫痪,使用robocopy智能复制已更改的文件,然后恢复站点。它通常在不到2秒的时间内运行。由于此站点上的峰值流量约为每秒2个请求,因此每个站点更新缺少4个请求是可以接受的。
Sine我对Git更加精通,我发现上面的前四个步骤是“手动过程”也是可以接受的,尽管我确信如果愿意的话,我可以将整个过程滚动一次。