我们希望自动部署Web应用程序,特别是从本地开发到远程服务器时。
我们当前的堆栈是LAMP远程LAMP,MAMP是本地的,但是我对一般人们在这个任务中使用什么感兴趣而不管他们的环境如何?
我不只是在谈论移动文件,我还想考虑其他任务,例如:
答案 0 :(得分:3)
在可能的情况下,我更喜欢自动部署,例如使用Ant,甚至可以相当轻松地处理FTP部署。自动化部署,就像自动构建一样,将猜测工作和错误从流程中取出,并且根据定义至少提供了必要的最低限度文档(即构建脚本),以便新程序员理解该流程。
答案 1 :(得分:3)
以前公司使用的一件事是 - 信不信由你 - RPM文件。当我们构建我们的软件时,它的所有各个部分都将打包成RPM文件,然后将其部署到服务器。
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:
所有这些都具有回滚功能。
另一个好的选择是使用您的操作系统的打包系统(RPM,deb / apt等)。这往往需要熟悉您的操作系统及其策略,但如果您知道自己在做什么,则可以与其他工具很好地配合。
答案 5 :(得分:0)
rsync->精彩工具
但是,答案取决于你的环境。你用什么来源控制?你对构建系统有什么用?等
Web服务器的部署只不过是一个“cp”命令,具体取决于更改的文件。您需要构建一个跟踪更改文件的进程,从源代码控制中提取这些文件,然后再推送这些更改。当您处理PHP文件时,您如何知道要推送哪些文件?那就是问题所在。你解决了,你会没事的。 cp文件和“部署”它们的工具很容易。
答案 6 :(得分:0)
我是一个.NET人,所以对我们来说,它是CruiseControl + nant
我听过关于Jet Brains TeamCity的好话。