5

我们在 windows (xampp) 上开发了各种 php 项目,这些项目需要部署到混合的 linux/windows 服务器上。

我们过去曾使用capistrano从 windows 部署到 linux 服务器,但最近架构和 windows 服务器的变化使旧配置无法正常工作。该配方适用于 linux 部署,但设置 Windows 服务器所需的时间比我们现在要多。Capistrano 食谱的想法是有效的答案。显然,windows/linux 服务器不共享用户,所以这使它有点复杂(因为 capistrano 假设到处都使用相同的用户名/密码)。

目前我们正在为 windows 服务器使用 svn-update,我不喜欢,因为它使所有 svn 文件都挂在生产服务器上。(我们仍然必须在 Windows 上手动 svn-update 它们)并使用 winscp 手动更新文件并将目录与它们的 linux 对应物同步。

我的问题是,您建议使用哪些工具/设置来自动化此部署方案: “Various php windows/linux developers deploying to 2+ mixed windows/linux machines”

(ps:我们使用 linux 工具或任何通过 cygwin 工作的东西都没有问题,我们只需要让部署成为一个简单的一步操作)

编辑:目前我们不能在全linux环境下工作,我们必须同时部署到linux和windows服务器。我们可以从任何地方开始部署,但我们希望能够从任一环境中进行部署。

4

5 回答 5

4

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

  1. Capistrano 和类似工具(有效但复杂)
  2. rsync从 + 到 Windows、Linux、Mac(简单,不强制执行)
  3. svn从 + 到 Windows、Linux、Mac(简单,不强制执行)
  4. On-server scripts (run through the browser, complex)

There are some requirements that drive what you need:

  • How much discipline you want to enforce
  • If you need database (or configuration) migrations (up and/or down)
  • If you want a static "we're down" page
  • Who can do the update
  • Configuration differences between servers

I strongly suggest enforcing enough discipline to save you from yourself: deploy to a development server, allow for upward migrations and simple database restore, and limit who can update the live server to a small number of responsible admins (where the dev server is open to more developers). Also consider pushing via a cron job (to the development server), so there's a daily snapshot of your incremental changes.

Most of the time, I find that either svn or rsync setups are enough, with a few server-side scripts, especially when the admin set is limited to a few developers.

于 2008-09-16T21:41:00.813 回答
1

这可能听起来很傻,但是……我曾经一直遇到这种问题,直到最后我决定如果我总是在 Linux 上部署,我真的应该至少尝试在 Linux 上进行开发。我做到了。这是无痛的。我再也没有回去过。

现在。我并不是说这适合所有人。但是,如果你安装了VirtualBox,你可以在你的 windows 机器上运行 Linux 安装作为本地服务器。在虚拟机中共享一个文件夹,您就可以使用所有已知和受信任的 Windows 软件和技术,并且知道一切都在其目标平台上运行良好。

此外,您还可以返回 Capistrano(一个不错的选择)进行部署。

最重要的是,如果您认为自己了解 Linux / Unix,请等到您每天在桌面上使用它!谁知道你甚至会喜欢它:)

于 2008-09-16T21:15:47.240 回答
0

Capistrano 是我见过的最好的部署工具。架构更改是否无法修复配置以使其再次工作?

于 2008-09-16T21:13:34.327 回答
0

Why you can't use capistrano anymore?

Why you dislike svn-update?

What things in your app requires an special deployment ?

于 2008-09-16T22:13:17.460 回答
0

You can setup svn:ignore property on configuration files, so that svn update doesn't erase them, and then use svn export /target/path/ to get rid of .svn files in your Subversion repository.

于 2008-09-17T11:56:49.277 回答