CakePHP 2.6.7:如何在更新时阻止网站访问


CakePHP 2.6.7: How to block website access when updating

对不起,我的英文不够好,所以我不知道如何搜索。

作为标题,我想在更新新数据(如:源代码或数据库)时阻止网站。

我试图使index.html文件和上传到主机,但网站仍然访问index.php。我还尝试重命名或删除index.php文件。也不成功!

这就是我问你这个问题的原因。

总结:我如何阻止或停止用户访问网站时,我正在更新它?

从用户的角度来看,阻塞不是一种好方法。通常你想避免停机时间。

只需将最新版本的网站符号链接到您的live文件夹:

/var/www/myfancysite -> /var/data/myfancysite-20151010121212

在站点的文件夹myfancysite-<datetime>中执行新的签出,并复制DB。根据需要应用DB迁移,只需将符号链接切换到最后带有新时间戳的文件夹。在理想情况下,您将实现零停机时间。在上面,如果出现问题,您可以快速回滚到上一个版本:只需将符号链接恢复到以前的版本。

如果你仍然需要添加一些维护屏幕,只需将符号链接更改为带有临时站点的文件夹:

/var/www/myfancysite -> /var/data/myfancysite-maintenance

这可以是完全自动化的部署脚本以及,这样你就不必手动做像deploy <site>deploy rollback <site>

帮助完成这些任务的一些工具:

  • http://deployer.org/
  • https://github.com/Codegyre/Robo

在App/webroot中创建带有" maintenance "消息的index.html文件。

然后在你的AppController::beforeFilter方法中
if($this->request->clientIp() != 'YOUR IP ADDRESS') {
    $this->redirect('/index.html');
}

你的IP地址可以在本地主机::1127.0.0.1,在远程主机上使用你的真实IP http://www.myipaddress.com/show-my-ip-address/

使用这种方法,您仍然可以访问web应用程序,但其他人将看到index.html页面。