您使用什么来部署Web应用程序?

时间:2008-09-24 00:47:49

标签: web-applications deployment automation

我们希望自动部署Web应用程序,特别是从本地开发到远程服务器时。

我们当前的堆栈是LAMP远程LAMP,MAMP是本地的,但是我对一般人们在这个任务中使用什么感兴趣而不管他们的环境如何?

我不只是在谈论移动文件,我还想考虑其他任务,例如:

  • 设置数据库架构
  • 管理配置
  • 部署所需的其他任务(创建日志文件等)

7 个答案:

答案 0 :(得分:3)

在可能的情况下,我更喜欢自动部署,例如使用Ant,甚至可以相当轻松地处理FTP部署。自动化部署,就像自动构建一样,将猜测工作和错误从流程中取出,并且根据定义至少提供了必要的最低限度文档(即构建脚本),以便新程序员理解该流程。

答案 1 :(得分:3)

以前公司使用的一件事是 - 信不信由你 - RPM文件。当我们构建我们的软件时,它的所有各个部分都将打包成RPM文件,然后将其部署到服务器。

  1. 群集中的主服务器具有所有服务器及其角色的列表,这些服务器及其角色将用于确定每个服务器所需的软件包。
  2. 部署阶段将检查每台服务器上的版本并确定哪些服务器需要升级。每个服务器都会获得所需的任何新软件包的副本,
  3. 每个服务器都将通过部署脚本安装其软件包,该脚本将管理安装前和安装后的检查和任务。
  4. 部署脚本将触发一个单独的进程,即配置管理系统,以读取配置模板以生成服务器所需的任何服务的配置文件(基于其角色列表),并将这些服务存储到服务器
  5. 部署系统将为每个系统生成需要采取的操作列表(要重新启动的服务),并将这些操作呈现给管理更新的操作员。然后,操作员将执行重新启动(如果在客户端的计划维护窗口期间进行更新,或者我们有中午服务重新启动的工作订单),或者为夜间工作人员创建一个包含任务列表的故障单。完成。
  6. RPM是一个可怕的黑客攻击,但由于我们的客户都在运行Red Hat Linux(根据我们的要求),因此它非常有意义。如果我有一个选择,我会使用像Debian或Ubuntu这样的系统,并建立一个系统可以从中获取的存储库。尽管如此,它仍然适用于数百个客户,总共有数千台服务器。非常整洁。

答案 2 :(得分:2)

我们在需要上线时使用“svn export”。保持我们的代码在版本控制之下,并让我们在测试盒或本地计算机上积极开发它。

答案 3 :(得分:2)

我还没有尝试过,但我正在考虑将来使用Fabric

  

Fabric是一种简单的pythonic远程部署工具。

     

它旨在以并行或串行方式将文件上载到多个服务器上并在其上运行shell命令。这些命令分组在任务(常规python函数)中,并在'fabfile'中指定。

     

它有点像卡佩斯特拉诺的愚蠢,除了在Python中,不要指望你部署Rails应用程序,并且'put'命令有效。

     

与Capistrano不同,Fabric希望保持小巧,轻松,易于改变,不受任何特定框架的束缚。

答案 4 :(得分:1)

Capistrano非常适合这种事情。它来自Ruby on Rails生态系统,最初与部署Rails应用程序密切相关。由于很多人都注意到它对于远程服务器控制很方便,因此它变得更加通用。

没有额外的设置,Capistrano:

  • 使用SSH连接到应用程序服务器
  • 将Subversion中的最新源代码检出新的日期文件夹
  • 通过更新符号链接或两个
  • 来激活新版本
  • 重新加载应用程序服务器

所有这些都具有回滚功能。

另一个好的选择是使用您的操作系统的打包系统(RPM,deb / apt等)。这往往需要熟悉您的操作系统及其策略,但如果您知道自己在做什么,则可以与其他工具很好地配合。

答案 5 :(得分:0)

rsync->精彩工具

但是,答案取决于你的环境。你用什么来源控制?你对构建系统有什么用?等

Web服务器的部署只不过是一个“cp”命令,具体取决于更改的文件。您需要构建一个跟踪更改文件的进程,从源代码控制中提取这些文件,然后再推送这些更改。当您处理PHP文件时,您如何知道要推送哪些文件?那就是问题所在。你解决了,你会没事的。 cp文件和“部署”它们的工具很容易。

答案 6 :(得分:0)

我是一个.NET人,所以对我们来说,它是CruiseControl + nant

我听过关于Jet Brains TeamCity的好话。