PHP部署到Windows / unix服务器
我们在Windows(xampp)上开发了各种php项目,这些项目需要部署到混合linux / windows服务器。
过去,我们曾使用capistrano从Windows部署到linux服务器,但是最近架构和Windows Server的更改使旧配置无法正常工作。该食谱对于linux部署工作正常,但是设置Windows服务器所需的时间比我们现在需要的时间更多。 Capistrano食谱的想法是有效的答案。显然,Windows / Linux服务器不共享用户,因此这使其有点复杂(对于Capistrano假设到处都是相同的用户名/密码)。
目前,我们不喜欢Windows服务器使用svn-update,因为我不喜欢它,因为它将所有svn文件挂在生产服务器上。 (并且我们仍然必须在Windows上手动svn更新它们),并使用winscp手动更新文件并将目录与Linux对应文件同步。
我的问题是,我们建议使用什么工具/设置来自动化此部署方案:
"各种php Windows / Linux开发人员都部署到2个以上的Windows / Linux混合计算机上"
(ps:我们使用linux工具或者通过cygwin进行的任何操作都没有问题,我们只需要使部署简单的一步操作即可)
编辑:当前我们不能在全Linux环境上工作,我们必须部署到linux和Windows服务器。我们可以从任何地方开始部署,但是我们希望能够在任何环境下进行部署。
解决方案
回答
Capistrano是我见过的最好的部署工具。架构更改是否使其无法修复配置使其再次起作用?
回答
这听起来可能很愚蠢,但是...我一直都遇到这种问题,直到最后我决定如果我始终在Linux上进行部署,我至少应该也至少尝试在Linux上进行开发。我做到了没有痛苦。我再也回不去了。
现在。我并不是说这适合所有人。但是,如果我们安装VirtualBox,则可以在Windows框上将Linux安装作为本地服务器运行。在虚拟机中共享一个文件夹,我们就可以使用所有已知的和受信任的Windows软件和技术,并且一心一意地知道一切都在其目标平台上运行良好。
另外,我们还可以返回Capistrano(一个不错的选择)进行部署。
最重要的是,如果我们认为自己知道Linux / Unix,请等到每天在桌面上使用它为止!谁知道你甚至可能喜欢它:)
回答
我根据客户端环境使用4种不同的方法:
- Capistrano和类似工具(有效,但复杂)
rsync
从+到Windows,Linux,Mac(简单,不强制执行纪律)svn
从+到Windows,Linux,Mac(简单,不强制执行纪律)- 服务器上脚本(通过浏览器运行,复杂)
有一些需求可以满足需求:
- 我们要执行多少纪律
- 如果需要数据库(或者配置)迁移(向上和/或者向下)
- 如果我们想要一个静态的"我们失望了"页面
- 谁可以进行更新
- 服务器之间的配置差异
我强烈建议执行足够的纪律以使我们免于自己:部署到开发服务器,允许向上迁移和简单的数据库还原,并限制谁可以将实时服务器更新为少数负责的管理员(开发服务器可以向更多的开发人员)。还可以考虑通过cron作业推送(到开发服务器),因此每天都有增量更改的快照。
在大多数情况下,我发现使用svn或者rsync设置都足够了,并且带有一些服务器端脚本,尤其是在管理集仅限于一些开发人员的情况下。
回答
为什么我们不能再使用capistrano?
为什么不喜欢svn-update?
我们应用中的哪些内容需要特殊部署?
回答
我们可以在配置文件上设置svn:ignore
属性,以便svn update
不会擦除它们,然后使用svn export / target / path /
来删除Subversion存储库中的.svn
文件。 。