3

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

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

由于站点 24/7 忙,我不能等到安静的时间上传我的新文件,那么我该如何避免这种情况呢?某些 FTP 服务器是否比其他服务器更好地处理此问题,还是我打算以错误的方式部署到生产服务器?

CENTOS 6.6、Apache、ProFTPd/PureFTPd、PHP 5.3

4

2 回答 2

1

您可以通过将所有应用程序上传到另一个目录来实现。您的公共目录可以链接到您的应用程序当前版本的目录。当您上传所有应用程序文件时,您可以简单地切换符号链接

例如,您在以下位置配置了一些 apache/nginx 主机

/var/awesome-app/public_html

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

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

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

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

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

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

您可能还想查看软件部署

于 2015-06-02T16:29:35.523 回答
0

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

于 2015-06-02T15:50:34.310 回答