如何通过 FTP 上传核心 PHP 文件而不打扰访问者访问您的站点

How do you upload a core PHP file via FTP without interrupting a visitor to your site

每当我维护的基于 PHP 的活跃站点需要紧急代码更改时,我会离线更改代码,在我的本地服务器上对其进行测试,然后在满意时将更新后的文件上传到生产服务器FTP.

这显然有效,但我发现当我在繁忙的网站上执行此操作时,如果有人在我上传的同时访问浏览器中的文件,他们将收到 PHP 解析错误。我认为这是因为通过 FTP 的上传在他们尝试访问它时尚未完成。

由于该站点全天候 24 小时忙碌,我等不及要上传我的新文件,那么如何避免这种情况呢?某些 FTP 服务器比其他服务器处理得更好,还是我要以错误的方式部署到生产服务器?

CENTOS 6.6、阿帕奇、ProFTPd/PureFTPd、PHP5.3

您可以制作两个应用程序后端(副本,例如上游 nginx)并分别更新它(禁用当前更新的后端)。

您可以通过将所有应用程序上传到另一个目录来实现。您的 public 目录可以 link 进入您的应用程序当前版本的目录。当您上传所有申请文件时,您只需切换 symlink.

例如,您在

配置了一些 apache/nginx 主机

/var/awesome-app/public_html

将您的应用程序存储在其他地方,例如你的家目录。将您的应用程序上传到单独的 release 目录,如下所示:

~/awesome-app/releases/1
~/awesome-app/releases/2
~/awesome-app/releases/3
...
~/awesome-app/releases/<RELEASE_NUMBER>

创建一个符号 link 从您的应用程序到主机指向的路径。这个命令应该被调用一次 - 当你设置你的环境时:

ln -s ~/awesome-app/current /var/awesome-app/public_html

上传您的应用程序后,创建(替换)symlink 到当前版本。每次发布时都应调用此命令。

ln -sf ~/awesome-app/releases/4 ~/awesome-app/current

您可能还想看看 Software deployment