从 Apache conf 或 Apache(重新)启动时运行 shell 脚本

从 Apache conf 或 Apache(重新)启动时运行 shell 脚本

我有一个包含大量动态别名的复杂 Web 应用程序。我创建了一个 shellscript,用于使用这些别名更新 .conf 文件。是否可以从 Apache conf 中调用此 shellscript?因此,如下所示:

RunScript /etc/myapp/updateconf.sh
Include /etc/myapp/*.conf

或者,有没有一个好的方法可以将此脚本作为钩子添加到 /etc/init.d/apache2 或 /etc/init.d/httpd 脚本中?我正在寻找一种适用于 CentOS 和 Ubuntu 的解决方案。如果我完全以错误的方式处理这个问题,也欢迎任何其他建议。

答案1

当然,您可以在启动 Apache 之前在 init 脚本中调用它,如下所示:

start() {
        echo -n $"Starting $prog: "
        check13 || exit 1
        . /etc/myapp/updateconf.sh
        LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
}

答案2

如果需要定期更新配置,我会尝试通过 cron 作业执行此操作,并graceful在重新启动 apache 时使用该选项。如果您想每小时/每天/每周/每月执行此操作,那么您可以将脚本放在相关的 /etc/cron.* 目录中,它将为您运行。

#!/bin/bash

/etc/myapp/updateconf.sh && /sbin/service httpd graceful 
                            # change to /usr/sbin/service apache2 graceful 
                            # for ubuntu

会工作。

如果您需要在系统启动时执行此操作,请编辑/etc/crontab并添加@reboot条目

@reboot   root    /etc/myapp/updateconf.sh && /sbin/service httpd graceful

如果 apache 尚未启动,则不会通过优雅选项启动它,但您的配置文件将更新,以便 apache 启动。如果 apache 正在运行,它将重新启动。

相关内容