Cod*_*ode 2 php apache httpd.conf
我想到了这种无需停机即可更新服务器文件的方法:
这有什么缺点吗?有没有更好的办法?
在重新启动的确切时刻访问文件时是否会出现任何竞争条件错误?
没有一种方法可以一直有效——即使您准备并部署了一个新服务器,然后更改负载均衡器以指向新机器。有人可能只是从原始服务器请求一个页面,然后在新机器上从站点的新副本中获取页面的一部分。然而,这在实践中不太可能引起大问题。
在具有复杂需求的大型站点上,事情会更加困难 - 并且需要付出代价。大多数网站有更简单的要求。甚至可以计划数据库迁移以尽量减少中断 - 但也很复杂,必须在计划内停机的情况下解决。
由于在同一台机器(或少量机器)上的站点副本之间切换很容易(有效地移动 Apache 或 Nginx DocumentRoot),因此该技术很容易获得(并且不需要多台机器和负载平衡器来实现)是这样的:
composer install或资产提取/准备实际上,这就是Capistrano(和其他类似工具)所做的。基本目录布局如下:
base-directory
releases
20151010-0925/
vendor/ (composer-installed files)
web/index.php
20151120-1007/
vendor/ (composer-installed files)
web/index.php
current (symlink to ../releases/20151010-0925/)
shared/ (files shared between releases)
Run Code Online (Sandbox Code Playgroud)
部署网站的新版本时 - 创建一个新的完整版本,然后在完成后更改“当前”符号链接。
在这种情况下Apache的文档根目录将指向.../base/current/web/要通过符号链接到网站的基础。
如果在任何时候部署未能准备好,您可以简单地中止它,并有选择地删除您尝试部署的已发布版本,而不是更改符号链接。
我已经从琐碎的单页 HTML/CSS 站点到运行数千个并发用户的三机集群都使用了这种技术。
| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |