Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 自动化Web应用程序的部署?_.net_Php_Deployment_Web Applications - Fatal编程技术网

.net 自动化Web应用程序的部署?

.net 自动化Web应用程序的部署?,.net,php,deployment,web-applications,.net,Php,Deployment,Web Applications,我的团队目前正在尝试自动化.Net和PHPWeb应用程序的部署。我们希望简化部署,避免手工操作带来的麻烦和许多头痛 我们需要一个解决方案,使我们能够: - Compile the application - Version the application with the SVN version number - Backup the existing site - Deploy to a web farm 我们所有的应用程序都使用SVN进行源代码控制,我们的.Net应用程序使

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

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

- 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

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

。看起来小,简单,程序化。用Python编写,因为Ruby是一个禁忌(为什么?)。

查看安装工厂(来自indigo rose)。它的功能非常强大。它使用Windows installer API。它可能会做你需要的事情

我已经使用多年了,它非常灵活且易于使用,并且内置了许多标准操作(如您提到的操作)。

我使用makefile来构建RPM并为我完成这些操作。我的系统不直接应用,我也不太熟悉Windows世界,但有一些可转换的模式

我的make设置允许我为构成我的应用程序的所有东西(php库、php网站、perl模块、C应用程序等)构建RPM。这可以手动调用,也可以通过竹子调用。我将这些RPM转换为一个yum repo和puppet句柄,确保集群中安装了最新(或正确)版本的软件


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

谢谢大家的建议。我们把它们都检查了一遍,但经过仔细考虑,我们决定结合CruiseControl、NAnt、MSBuild和MSDeploy推出自己的产品

本文提供了一些重要信息:

以下是我们的解决方案的大致工作原理:

  • 开发人员构建应用程序的“调试”版本并运行单元测试,然后签入SVN
  • CruiseControl看到更新并调用我们的构建脚本。。。
    • 在生成数据库上运行任何新迁移
    • 将配置文件替换为生成服务器配置文件
    • 构建应用程序的“调试”配置
    • 运行所有单元和集成测试
    • 构建应用程序的“部署”配置
      • 版本具有当前主要/次要版本和SVN修订版的DLL,例如1.2.0.423
      • 将此新生成移动到生成服务器上的“发布”文件夹
      • 删除不需要的文件
    • 如果需要,更新生成服务器上的IIS
然后,当我们验证所有内容都准备好进入live/staging时,我们将运行另一个脚本:

  • 在实时/临时服务器上运行迁移
  • MSDeploy:存档当前实时/临时站点
  • MSDeploy:将站点从构建同步到实时/临时
到了这个阶段还不是很顺利,但现在它大部分都像一个魔咒:D


在对流程进行更改时,我将尝试更新此答案,因为现在SA上似乎有几个类似的问题。

我们没有使用xcopy,而是使用-source:dirpath命令,将UNC地址与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语言集编写任务。如果您不想让纯.NET开发人员编写自定义任务,我看不出您有任何理由不使用Ant。仅仅因为您使用.NET语言编写应用程序,并不意味着您必须使用.NET构建工具。

没有人提到最终构建器。它与视觉构建Pro媲美。创建自动构建部署工具的良好GUI

您的迁移是用什么编写的?直接SQL?另外,您如何处理配置文件?我们目前使用Ruby迁移。构建脚本调用rake,一切都会处理好。但是,我们正在将所有实践迁移到alt.net中,因此很可能很快就会改变这一点。至于配置文件,Cruise Control在编译之前会用自己的构建配置替换开发配置。我假设,当您对DLL进行版本设置时,您会签入/签出AssemblyInfo文件。如何配置CruiseControl以忽略AssemblyInfo文件的SVC签入?我正在寻找一个类似的解决方案,我担心这会导致无限的构建循环。我知道这是一篇老文章,但你有没有可能写过关于这方面的文章?你的设置听起来像是我想要的,但我是微软世界的新手,我真的不知道如何去那里。吉姆,我没有,事实上我甚至不再在同一家公司工作了。这是个好主意,我想写一写。值得一看的是像Jenkins/CruiseControl/TeamCity这样的持续集成解决方案,因为它们为自动化您所追求的流程带来了很多痛苦