[英]Deploy PHP web system to multiple locations
我正在开发(一个Web开发人员)一个基于Web的相当大的系统,该系统需要在各个不同的位置运行。 不幸的是,由于某些客户端具有拨号功能,因此我们不得不这样做,而没有为它们提供中央服务器。 每个客户端都是我们VPN的一部分,而拨号/ ISDN客户端则可以通过我们的Cisco路由器按需拨号。 几秒钟之内即可访问所有客户端。
我想知道一次向所有这些客户端发布更新的最佳方法是什么。 自动化非常棒,因为它们在23个以上的位置可将系统部署到其中,每个位置都会定期使用。 因此,在部署时,我需要显示一个“正在更新”页面,以便客户端在更新部分完成后不会尝试访问系统。
关于什么是最佳解决方案的任何想法
编辑:发现FileSyncTask ,使我可以与Phing rsync。 要使用它。
这里还存在维护“主”代码存储库的情况(在SVN,CVS或GIT中)。 这不是您的标准“在存储库中保留代码的版本,并允许回滚” ...此存储库保存您当前的生产代码(仅)。 更新准备就绪后,您可以将有效的更新代码签入主存储库。 您的所有服务器都按计划的时间检查存储库,以查看其是否已更改,如果发现更改,则下载新代码。 该检查过程甚至可能包括在开始回购下载之前打开maintenance.php
文件(由symcbean建议),并在下载完成后删除该文件。
在我所在的公司,我们使用基于Java和PHP的大型基于Web的系统。 对于所有系统,我们都有开发环境和生产环境。 该公司拥有200多名开发人员,所以我想您可以想象我们开发的产品的大小。
我们要做的是使用ANT和RPM构建档案来创建部署程序包。 这很容易做到。 我自己还没有做过,但是值得您研究一下。 因为我们使用Linux系统,所以我们可以轻松地部署RPM软件包,所以RPM软件包中的设置脚本可以确保所有内容都放置在正确的位置。 您还将获得更适当的版本处理和发布过程。
希望这对您有所帮助。
Br,保罗
这有两部分,让我们首先处理简单的部分:
我需要显示一个“更新”页面
如果您需要在维护事务完整性的同时禁用整个站点,并从正在更新的服务器上向用户发布消息,那么唯一可行的方法是通过自动添加前缀-需要预先配置(注意-我相信可以使用.htaccess文件来完成此操作,而无需为新的PHP配置重启网络服务器):
<?php
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/maintenance.php')) {
include_once($_SERVER['DOCUMENT_ROOT'] . '/maintenance.php');
exit;
}
然后只需将maintenance.php放到您的webroot中,该文件将显示,而不是预期的文件。 请注意,它可能应包含session_start()和自动刷新以确保会话未过期。 您可能需要扩展上述内容以允许宽限期,在该宽限期内仍将处理POST,例如通过添加第二个php文件。
关于部署到远程站点,我建议在ssh上使用rsync来复制内容文件-应该通过以下控制脚本来调用它:
如果每个站点都有不同的设置,则建议您通过包含路径的层次结构管理站点特定的内容,或者甚至在本地维护每个站点的竞争映像。
C。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.