3

目前我的工作流程如下:

在本地机器上,我在我正在处理的每个网站上维护一个 git repo,当需要发布一些东西时,我压缩文件夹并通过 ssh 将这个单个文件上传到生产服务器,然后我解压缩,测试更改并移动更改到 live 文件夹,我摆脱了 .git 文件夹。

我想知道在实时服务器上使用 git repo 是否是一个好主意,一开始似乎是这样,但如果与本地开发机器相比,生产服务器上的更改看起来不一样,这可能会出现问题...这可能会引发火灾...如何在生产服务器上的某个文件夹上创建一个裸仓库然后从那里克隆到公用文件夹,从而将更新从本地计算机推送到裸仓库并从公用文件夹上的裸仓库中提取生产服务器的...可能有人请提供一些反馈。

后来我读到了 capistrano http://capify.org但我没有使用这个软件的经验......

根据您的经验,完成网站部署/更新的最佳实践/方法是什么?

提前感谢您的反馈。

4

3 回答 3

2

我不认为我们的方法可以称为最佳实践,但它对我们很有帮助。

我们的应用程序有几个大型数据库(20gb+),因此在每台开发人员计算机上维护本地副本从来都不是真正的选择,即使我们不针对实时数据库进行开发,我们确实需要针对数据库进行开发这是尽可能接近真实的东西。

因此,我们也使用了一个中央 Web 服务器,并在其上保留了我们的 subversion 主干的开发分支。通常我们不会同时在系统的同一部分工作,但是当我们确实需要这样做时,或者有人正在做很多实质性的改变时,我们会分支主干并在开发服务器上创建一个新的虚拟主机。

我们还检查了生产服务器上的代码,所以在我们完成测试后,我们只需在生产服务器上进行 svn 更新。我们已经实现了一个脚本,它使用 ssh 在所有服务器上执行更新命令。这非常方便,因为我们的代码库很大并且需要很长时间才能上传。Subversion 只会复制实际已更改的文件,因此速度要快得多。

这对我们来说非常有效,唯一需要注意的是直接在生产服务器上进行更改(当然从一开始就禁止这样做),因为它可能会在更新时引起冲突。

于 2009-03-21T00:00:35.273 回答
0

我从没想过在服务器上有一个存储库副本。看完后觉得可能很酷……不过,不做测试直接在live环境中更新文件并不是什么好主意。

您应该始终更新与实时环境(网络服务器 + 数据库版本,如果有的话)完全匹配的辅助环境并在那里进行测试。如果一切顺利,则将实时站点置于维护状态,更新文件,然后重新启动。

所以我不会让实时站点成为存储库的副本,但您可以使用测试环境来做到这一点。您将节省 SSH + 压缩时间,此外,您还可以查看您想要测试的任何特定版本。

于 2009-03-20T23:53:01.373 回答
0

卡皮斯特拉诺很棒。默认配方 文档参差不齐,但邮件列表是活跃的,而且设置起来非常容易。你在运行 Rails 吗?它为 Rails 应用程序提供了一些简洁的内置内容,但也经常与其他类型的 web 应用程序一起使用。

还有Webistrano,它基于 Capistrano 但有一个 Web 前端。自己没用过。至少在 Rails 用户中,另一个似乎正在获得一些牵引力的部署系统是Vlad the Deployer

于 2009-03-21T00:21:30.120 回答