【发布时间】:2010-09-12 14:13:06
【问题描述】:
我们正在寻求自动部署 Web 应用程序,尤其是在从本地开发到远程服务器时。
我们当前的堆栈是远程 LAMP,本地 MAMP,但我感兴趣的是,不管他们的环境如何,人们都在使用什么来完成这项任务?
我不只是在谈论移动文件,我还指考虑其他任务,例如:
- 设置数据库架构
- 管理配置
- 部署所需的其他任务(创建日志文件等)
【问题讨论】:
标签: web-applications deployment automation
我们正在寻求自动部署 Web 应用程序,尤其是在从本地开发到远程服务器时。
我们当前的堆栈是远程 LAMP,本地 MAMP,但我感兴趣的是,不管他们的环境如何,人们都在使用什么来完成这项任务?
我不只是在谈论移动文件,我还指考虑其他任务,例如:
【问题讨论】:
标签: web-applications deployment automation
在可能的情况下,我更喜欢自动化部署,例如使用 Ant,甚至 FTP 部署也可以相当容易地处理。自动化部署,很像自动化构建,将猜测工作和错误排除在流程之外,并且根据定义,至少为新程序员理解流程提供了最少必要的文档(即构建脚本)。
【讨论】:
在以前的公司中使用的其中一个东西是 - 信不信由你 - RPM 文件。当我们构建我们的软件时,它的所有各个部分都会打包成 RPM 文件,然后部署到服务器上。
RPM 是一个可怕的 hack,但由于我们的客户都在运行 Red Hat Linux(根据我们的要求),它非常有意义。如果我有选择,我会选择像 Debian 或 Ubuntu 这样的系统,并设置一个系统都可以从中提取的存储库。尽管如此,它仍然适用于数百个客户端,总共有数千台服务器。很整洁。
【讨论】:
当它需要上线时,我们使用“svn export”。使我们的代码处于修订控制之下,并让我们在测试盒或本地计算机上积极开发它。
【讨论】:
我还没有尝试过,但我正在考虑将来使用Fabric:
Fabric 是一个简单的 pythonic 远程部署工具。
它旨在将文件上传到并行或串行的多个服务器并在其上运行 shell 命令。这些命令分组在任务(常规 python 函数)中,并在“fabfile”中指定。
它有点像一个愚蠢的 Capistrano,除了它是用 Python 编写的,别指望你会部署 Rails 应用程序,并且“put”命令有效。
与 Capistrano 不同,Fabric 希望保持小巧、轻便、易于更改且不受任何特定框架的约束。
【讨论】:
Capistrano 非常适合这种事情。它来自 Ruby on Rails 生态系统,最初与部署 Rails 应用程序密切相关。由于很多人注意到它对于远程服务器控制很方便,所以它变得更通用了。
无需额外设置,Capistrano:
所有这些都带有回滚功能。
另一个不错的选择是使用操作系统的打包系统(RPM、deb/apt 等)。这往往需要对您的操作系统及其策略非常熟悉,但如果您知道自己在做什么,则非常适合使用其他工具。
【讨论】:
rsync->很棒的工具
但是,答案取决于您的环境。你用什么来控制源代码?你用什么构建系统?等等。
Web 服务器的部署只不过是一个“cp”命令,具体取决于更改的文件。您需要构建一个流程来跟踪更改的文件,从源代码管理中提取这些文件,然后推送这些更改。在处理 PHP 文件时,如何知道要推送哪些文件?那就是问题所在。你解决它,你会没事的。 cp 文件并“部署”它们的工具是最简单的部分。
【讨论】:
我是 .NET 人,所以对我们来说它是 CruiseControl + nant
我听说过关于Jet Brains TeamCity 的好消息。
【讨论】: