所以 - 让我说我开发了一个PHP应用程序,我在一个与生产环境相同的流浪盒中开发。所以 - 作为最终结果,我会得到一个带有代码的* .tar.zip文件......
如何组织部署到生产环境中,那里有很多应用服务器?我的意思是 - 我很困惑如何同时将代码同步推送到生产中?
更多信息:
服务器代码上的存储如下:
project
+current_revision ->link to revisions/v[n]
+revisions
+v1
+v2
+v3
...
+data
因此,当我必须部署更改时,我通常会运行一个部署脚本,使用ssh将更新的tar上传到服务器上,在修订版中将其解压缩到特定目录,将其符号链接到current_revision并重新启动php-fpm ....这样我就可以回滚只需通过符号链接到旧版本即可。
使用多重服务器困扰我的是,并非所有的盒子都会立即更新,即。从技术上讲,可能会出现一些故障。答案 0 :(得分:2)
如果您正在寻找“随时可用”的答案,则需要提供有关您的设置的更多信息。例如,如果您计划将git用于VCS,则可以编写一个简单的shell脚本,用于提取服务器的最新提交和rsync
。或者,如果您在Symfony之上构建,capifony是一个很棒的工具。如果您使用AWS,则Vagrant的作者编写的provider plugin非常易于使用,您可以指定要为哪些计算机带来up
或provision
的正则表达式。
如果您正在寻找更多的“路线图”,那么您需要考虑的因素是:
setup
函数中而不是deploy
函数中,并且不要将它们包含在同步运行中。 config.vm.box_url
。原因是每次部署时都必须使用新的盒子重新打包每个生产服务器,而不是仅仅更改服务器上的文件,或者从服务器添加/删除一些软件包。 答案 1 :(得分:0)
很多方法。如果从准系统开始(没有云基础设施),我就是SVN分支钩子的粉丝。拥有代码的SVN仓库。在其上设置一个post-commit挂钩,检查/ branch / production /中是否有任何更改。
如果有,请让post-commit挂钩启动所有自动推出程序 - 在这种情况下,一个简单的方法是让所有服务器知道* svn export
分支。就这么简单!
(*这是艰难的一步)