如何使用 Supervisord 在发生变化时自动重新加载 httpd 服务?

如何使用 Supervisord 在发生变化时自动重新加载 httpd 服务?

我正在 Docker 容器中工作,目前已准备好以下内容:

  • CentOS 6(最新,我认为是 6.9)
  • Apache 2.2.15(CentOS6 存储库上的最新版本)
  • PHP 5.3.3(CentOS6 存储库上最新版本)
  • Supervisord 3.3.3

我从这里偷来了这个想法nginx.conf它们正在监听inotify更改(创建、删除、修改、移动、属性)的情况,/etc/nginx/如果/data/conf/nginx/发生这种情况,Supervisord 会自动重新加载 Nginx。这样,我就不用再重启 Apache 了(如果可能的话,因为我对 Docker 的经验是,当我猛击容器并执行service httpd restart容器退出时),也不必每次想要向 Apache 添加新的 VH 时停止/构建/启动容器。

话虽如此,我正在寻找有关这一行的帮助:

[program:nginx-reload]
command=bash -c 'while inotifywait -q -r -e create,delete,modify,move,attrib --exclude "/\." /etc/nginx/ /data/conf/nginx/; do nginx -t && nginx -s reload; done'

由于我不确定如何使用来实现相同的效果httpd。有人能给我一些帮助吗?

答案1

Supervisord 的程序应该如下所示:

[program:httpd-reload]
command=bash -c 'while inotifywait -q -r -e create,delete,modify,move,attrib --exclude "/\." /etc/httpd/ /data/conf/httpd/; do apachectl -t && service httpd restart; done'

注意日志位置,您可能也需要通过添加一个--exclude "/etc/httpd/logs"或日志所在的路径来排除它。

相关内容