在实时(电子商务)网站上部署新代码的最佳做法是什么?
现在,我已经将目录public_html_new重命名为public_html,将旧目录重命名为public_html_old,停止apache / – 10秒.在我再次启动Apache之前,这会创建一个较短的停机时间.
如果使用Git将新的repo拉到live目录,同样的问题就出现了.我可以在网站处于活动状态时拉回购吗?如果我还需要复制数据库怎么样?
在实时站点的tar(备份目的)压缩期间,我注意到媒体目录中发生了更改.这告诉我,文件会不断变化.如果在部署期间Apache没有停止,这些更改可能会产生干扰.
使用负载均衡器是个好主意.如果该站点足够重要,可以担心几秒钟的停机时间,那么担心容错是非常重要的.
原文链接:https://www.f2er.com/centos/374082.html除此之外,如果这是在UNIX系统上,您可以在重命名(或符号链接更新等)期间将Apache置于保持状态:
killall -STOP httpd # Pause all httpd processes mv public_html public_html_orig mv public_html_new public_html killall -CONT httpd # Resume all httpd processes
这将使Apache在重命名期间不接受新请求.如果您更喜欢符号链接或其他方法,可以使用相同的想法:
killall -STOP httpd # Pause all httpd processes rm /var/www/html ln -s /var/www/version/03 /var/www/html killall -CONT httpd # Resume all httpd processes
请注意,任何挂起的连接或数据包都将在操作系统中排队.对于非常繁忙的站点,请考虑调整ListenBacklog(如果适合您的httpd worker类型),并检查与TCP listen backlog相关的操作系统设置.
您还可以在httpd.conf中更改DocumentRoot并执行正常重启(apachectl graceful).这里的缺点是错误风险增加,因为您还必须更新任何目录配置.