centos – 实时部署新代码

在实时(电子商务)网站上部署新代码的最佳做法是什么?

现在,我已经将目录public_html_new重命名为public_html,将旧目录重命名为public_html_old,停止apache / – 10秒.在我再次启动Apache之前,这会创建一个较短的停机时间.

如果使用Git将新的repo拉到live目录,同样的问题就出现了.我可以在网站处于活动状态时拉回购吗?如果我还需要复制数据库怎么样?

在实时站点的tar(备份目的)压缩期间,我注意到媒体目录中发生了更改.这告诉我,文件会不断变化.如果在部署期间Apache没有停止,这些更改可能会产生干扰.

使用负载均衡器是个好主意.如果该站点足够重要,可以担心几秒钟的停机时间,那么担心容错是非常重要的.

除此之外,如果这是在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).这里的缺点是错误风险增加,因为您还必须更新任何目录配置.

相关文章
相关标签/搜索