将PHP部署到Windows/Unix服务器

6
我们有多个在Windows(XAMPP)上开发的PHP项目需要部署到混合的Linux/Windows服务器上。
过去我们使用capistrano来从Windows部署到Linux服务器上,但由于最近架构和Windows服务器的改变,旧配置已无法工作。该配方对于Linux部署效果很好,但设置Windows服务器需要比我们现在拥有的时间更长。关于Capistrano配方的想法是有效的答案。显然,windows/linux服务器没有共享用户,这使得它有些复杂(因为Capistrano假设每个人都有相同的用户名/密码)。
目前,我们正在为Windows服务器使用svn-update,我不喜欢这种方法,因为它会将所有svn文件留在生产服务器上。(而且我们仍然需要手动在Windows上更新svn文件)。另外通过使用winscp手动更新文件或与其Linux版本进行目录同步的方式进行。
我的问题是,您建议使用哪些工具/设置来自动化此部署方案: “多个PHP Windows/Linux开发人员部署到2个以上混合的Windows/Linux机器” (附注:我们没有使用Linux工具或任何通过Cygwin工作的东西的问题,我们只需要将部署变成一个简单的一步操作)。

编辑:目前我们无法在全 Linux 环境下工作,我们必须部署到 Linux 和 Windows 服务器。我们可以从任何地方开始部署,但我们更愿意能够从任一环境中进行部署。

5个回答

4

根据客户环境的不同,我使用4种不同的方法:

  1. Capistrano和类似工具(有效,但复杂)
  2. rsync从Windows、Linux、Mac到另一台电脑(简单,但不能强制执行纪律)
  3. svn从Windows、Linux、Mac到另一台电脑(简单,但不能强制执行纪律)
  4. 在服务器上运行脚本(通过浏览器运行,复杂)

以下是一些需求,这些需求决定了你需要什么:

  • 你想要强制执行多少纪律
  • 是否需要数据库(或配置)迁移(向上和/或向下)
  • 是否需要一个静态的“我们正在维护”页面
  • 谁可以进行更新
  • 服务器之间的配置差异

我强烈建议你要有足够的纪律来拯救自己:部署到开发服务器,允许向上迁移和简单的数据库恢复,并限制能够更新实时服务器的人数,只允许一小部分负责任的管理员进行更新(开发服务器对更多开发人员开放)。此外,考虑通过定时任务(到开发服务器)进行推送,以便每天对增量更改进行快照。

大多数情况下,我发现svnrsync设置已经足够了,配合一些服务器端脚本,特别是当管理员集合被限制在几个开发人员时。


1
这可能听起来有点傻,但是...我以前经常遇到这种问题,直到最后决定如果我总是在Linux上进行部署,那么我至少应该尝试在Linux上进行开发。我做到了。没有痛苦。我再也没有回去过。
现在,我并不是建议每个人都这样做。但是,如果您安装VirtualBox,您可以在Windows计算机上运行Linux安装作为本地服务器。在虚拟机中共享一个文件夹,您可以使用所有已知和信任的Windows软件和技术,并且可以放心地知道一切都在其目标平台上正常运行。
此外,您还可以回到Capistrano(一个很好的选择)进行部署。
最重要的是,如果您认为自己了解Linux / Unix,请等到您每天在桌面上使用它!谁知道您甚至可能会喜欢它 :)

0

您可以在配置文件上设置svn:ignore属性,以便svn update不会擦除它们,然后使用svn export /target/path/来摆脱Subversion存储库中的.svn文件。


0

Capistrano是我见过的最好的部署工具。架构更改是否使得修复配置文件变得不可能,以便它再次正常工作?


0

为什么你不能再使用Capistrano了?

为什么你不喜欢svn-update?

你的应用程序中有哪些需要特殊部署的事项?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接