这是向网站部署更新的最佳方式吗

问题描述 投票:0回答:3

目前我的工作流程如下:

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

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

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

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

提前感谢您的反馈。

deployment system-administration
3个回答
2
投票

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

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

因此,我们也使用中央 Web 服务器,并在其上保留 Subversion 主干的开发分支。一般来说,我们不会同时在系统的同一部分上工作,但是当我们确实需要这样做时,或者有人正在进行大量实质性更改时,我们会对主干进行分支并在开发服务器上创建一个新的虚拟主机。

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

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


0
投票

我从来没有想过在服务器上有一个存储库副本。读完后,我觉得这可能很酷...但是,不经过测试直接在实时环境中更新文件并不是一个好主意。

您应该始终更新与实时环境(网络服务器+数据库版本,如果有)匹配的辅助环境并在那里进行测试。如果一切顺利,则对上线站点进行维护,更新文件,然后再次上线。 所以我不会将实时站点制作为存储库的副本,但您可以使用测试环境来这样做。您将节省 SSH + 压缩时间,此外您还可以查看您想要测试的任何特定修订版。


0
投票

还有

Webistrano

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

© www.soinside.com 2019 - 2024. All rights reserved.