我们目前的技术堆栈是在远程使用LAMP,在本地使用MAMP,但是无论环境如何,我都对人们在此任务中使用的技术感兴趣。
我不仅指移动文件,还包括考虑其他任务,例如:
- 设置数据库模式 - 管理配置 - 部署所需的其他任务(创建日志文件等)
尽可能地,在可行的情况下,我更喜欢自动化部署,比如使用Ant,即使FTP部署也可以相对容易地处理。 自动化部署,就像自动化构建一样,消除了猜测和错误,并且通过定义提供至少新程序员理解过程所必需的最低限度文档(即构建脚本)。
当我们需要上线时,我们使用“svn export”。这样可以使我们的代码处于版本控制下,并让我们在测试环境或本地计算机上积极开发。
我还没有尝试过,但是我在考虑将来使用Fabric:
Fabric是一个简单的Python远程部署工具。
它被设计用于并行或串行地上传文件并在多台服务器上运行shell命令。这些命令被分组为任务(常规Python函数)并在“fabfile”中指定。
它有点像一个简化版的Capistrano,除了它是用Python编写的,不需要您部署Rails应用程序,并且“put”命令有效。
与Capistrano不同,Fabric希望保持小巧、轻便、易于更改,而不绑定到任何特定的框架。
Capistrano非常适合这种情况。它出自Ruby on Rails生态系统,最初与部署Rails应用程序紧密相关。由于很多人已经注意到它对远程服务器控制非常方便,因此它变得更通用了一些。
在不需要额外设置的情况下,Capistrano:
所有这些都具有回滚功能。
另一个好的选择是使用操作系统的打包系统(RPM、deb/apt等)。这往往需要熟悉您的操作系统及其政策,但如果您知道该做什么,它会非常适合其他工具。
rsync是一个很好的工具。
但是,答案取决于您的环境。您使用什么作为源代码控制?您使用什么构建系统?等等。
一个 web 服务器的部署只不过是一个“cp”命令,这取决于哪些文件发生了变化。您需要建立一个过程来跟踪更改的文件,从源代码控制中提取这些文件,然后推送这些更改。当您处理 PHP 文件时,如何知道要推送哪些文件?这就是问题所在。解决这个问题,您就会做得很好。复制文件并“部署”它们的工具是简单的一部分。