将更新推送至实时服务器...FTP 无法解决问题...有更好的方法吗?

将更新推送至实时服务器...FTP 无法解决问题...有更好的方法吗?

我是 2 人团队的首席开发人员。我的搭档刚刚加入该项目,尽管使用 GIT 进行版本控制等,但在代码部署方面我们仍然停留在黑暗时代。

目前,我使用 Filezilla 通过 FTP 对所有网站进行更新(这样,我可以控制/负责所有上线的内容)。

我已经这样做了很多年,但是现在我们有一些大型的 PHP 类(300KB)和大量的流量。

简而言之,每次我上传一个关键类别(例如“常规”)时,网站都会瘫痪,直到文件上传完成。每次只需要 5/6 秒,但这越来越令人无法接受。

我意识到我可以用不同的名称上传文件,然后重命名两个文件......但真的有更好的方法吗?

我听说过从另一台服务器同步代码,但我不知道这如何防止在上传时切换到新文件。

我们只有一台服务器(用于 DB 和 Apache),但也使用一些云服务器(以 openx 为例)。

答案1

rsync 在默认传输模式下就是这样做的:它在传输期间在目标上创建一个新文件,并在传输完成后重命名它。

尽管如此,如果您的上传“不一致”,即您上传的文件依赖于其他尚未上传的文件,这将无济于事。如果您担心这种情况,您需要上传到完全不同的目录结构,并在整个传输完成后进行切换。

答案2

WinSCP 具有目录“同步”功能,可自动同步到远程 FTP 服务器,例如 Filezilla Server。Filezilla 客户端没有此功能。您可以获取此列表中的 SFTP 服务器。如果您选择了正确的 SFTP 服务器,则上传时将不会保持文件锁,直到传输完最后一比特并替换文件为止。

或者,您可以保留一个非实时服务器 FTP 目录,然后使用另一个本地软件(如 WinSCP)立即同步到同一服务器上的实时目录。这样,您就可以避免在上传延迟期间文件锁定。

相关内容