自动部署Web应用程序?

时间:2020-03-05 18:48:13  来源:igfitidea点击:

我的团队目前正在尝试自动化.Net和PHP Web应用程序的部署。我们希望简化部署,并避免手动进行操作带来的麻烦和许多麻烦。

我们需要一种解决方案,使我们能够:

- Compile the application  
  - Version the application with the SVN version number
  - Backup the existing site
  - Deploy to a web farm

我们所有的应用程序均使用SVN进行源代码控制,而我们的.Net应用程序使用CruiseControl。
我们一直在尝试使用MSBuild和NAnt部署脚本,但效果有限。过去我们也曾使用Capistrano,但希望尽可能避免使用Ruby。

还有其他可以帮助我们的部署工具吗?

解决方案

回答

织物。似乎很小,简单,程序上。用Ruby编写,因为Ruby是不可以的(为什么?)。

回答

检出Setup Factory(来自靛蓝玫瑰)。它的功能相当强大。它使用Windows安装程序API。它可能可以满足需求。

回答

我已经使用Visual Build Pro多年了,它非常漂亮,易于使用,并且内置了许多标准操作(如我们提到的操作)。

回答

我使用Puppet,Makefiles来构建RPM,而Bamboo则为我做这件事。我的系统没有直接应用,并且我不熟悉Windows世界,但是有一些可移植的模式。

我的make设置允许我为构成我的应用程序的所有内容(PHP库,PHP网站,Perl模块,C应用程序等)构建RPM。这可以手动调用,也可以通过Bamboo调用。我将这些RPM转移到yum repo和puppet句柄中,以确保在群集中安装了最新(或者正确)版本的软件。

我们可以自动将软件包构建到MSI中吗?我认为Puppet可以管理Windows中软件包和版本的安装。

回答

谢谢大家的建议。我们检查了所有内容,但经过仔细考虑,我们决定结合使用CruiseControl,NAnt,MSBuild和MSDeploy。

本文提供了一些重要信息:
将MSBuild与CruiseControl.NET集成

我们的解决方案大致如下:

  • 开发人员构建应用程序的"调试"版本并运行单元测试,然后签入SVN。
  • 将配置文件替换为构建服务器配置
  • 构建应用程序的"调试"配置
  • 运行所有单元和集成测试
  • 将此新版本移至我们构建服务器上的" release"文件夹
  • 删除不需要的文件
  • 根据需要更新构建服务器上的IIS

然后,当我们验证了一切准备就绪可以进行直播/分阶段时,我们运行另一个脚本以:

  • 在实时/临时服务器上运行迁移
  • MSDeploy:存档当前的实时/暂存站点
  • MSDeploy:将站点从生成同步到实时/暂存

到了这个阶段还不太好,但是现在它的工作原理很像:D

随着我们对流程的更改,我将尝试使此答案保持最新,因为SA上现在似乎有几个类似的问题。

回答

而不是使用xcopy,我们设法使用带有UNC地址的-source:dirpath命令连接到具有msdeploy的服务器。关键是ignoreAcls = true,并删除msdeploy字符串中对用户名和密码的调用:

msdeploy -verb:sync -source:dirpath=\build\e$\app -dest:dirpath=\live\d$\app,ignoreAcls=true

该示例将站点从构建服务器的E驱动器部署到实时服务器上的D驱动器。在实时服务器上公开共享或者此级别的磁盘访问时,需要考虑一些安全方面的考虑。我们目前正在研究使用受限访问共享文件夹。

然后,我们将此输出通过管道传输到日志文件,然后将其移至备份存档以供参考。日志文件记录了哪些文件被移动以及何时被移动。使用输出管道命令继续上面的示例:

... > E:\archive\msdeploy.log

回答

我为此使用msdeploy。完美的作品。

关于蚂蚁;对于.NET平台,我们拥有NAnt,我们可以将其与MSDeploy结合使用;我们可以从Nant脚本调用MSDeploy。

编辑:
只是为了弄清楚;我们可以使用msdeploy进行所有操作。不需要使用Nant。

回答

Nant应该存在的唯一原因是,我们将拥有一个类似于Ant的框架,在该框架中,我们可以使用.NET语言集来编写Task。如果我们不想让纯净的.NET开发人员编写自定义任务,我看不出我们无法使用Ant的任何原因。仅仅因为我们使用.NET语言编写应用程序,并不意味着我们必须使用.NET构建工具。

回答

没有人提到Final Builder http://www.finalbuilder.com。它与Visual build Pro相当。良好的GUI,可用于创建自动化的构建部署工具