X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=apache.init;h=00dd2f4e0c622b086118f08298ba74cba30cbfcb;hb=6a016a6e0ddf14a9090123f3ca5335783860374f;hp=d93573a904ddfdb76ce46b5fdcd3e6e57a8ba874;hpb=edb12654709df063b3279410843734a4239e1ecf;p=packages%2Fapache.git diff --git a/apache.init b/apache.init old mode 100644 new mode 100755 index d93573a..00dd2f4 --- a/apache.init +++ b/apache.init @@ -21,14 +21,14 @@ # Check that networking is up. if is_yes "${NETWORKING}"; then if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then - msg_network_down httpd + msg_network_down "Apache 2.4 Web Server" exit 1 fi else exit 0 fi -[ -z "$HTTPD_MPM" ] && HTTPD_MPM="prefork" +SVC_NAME="Apache 2.4 Web Server" if [ -n "${HTTPD_CONF}" ]; then if [ -d "${HTTPD_CONF}" ] || [ -f "${HTTPD_CONF}" ]; then @@ -39,94 +39,129 @@ if [ -n "${HTTPD_CONF}" ]; then fi fi -start() { - # Check if the service is already running? - if [ ! -f /var/lock/subsys/httpd ]; then - msg_starting httpd.${HTTPD_MPM} - daemon httpd.${HTTPD_MPM} $CFG $HTTPD_OPTS +# configtest itself +configtest() { + /usr/sbin/httpd -t $CFG $HTTPD_OPTS 2>&1 + return $? +} + +# wrapper for configtest: +checkconfig() { + local details=${1:-0} + + if [ $details -eq 1 ]; then + # run config test and display report (status action) + show "Checking %s configuration" "$SVC_NAME"; busy + local out + out=`configtest 2>&1` RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/httpd + [ $RETVAL -eq 0 ] && ok || fail + [ "$out" ] && echo >&2 "$out" else - msg_already_running httpd.${HTTPD_MPM} + # run config test and abort with nice message if failed + # (for actions checking status before action). + show "Checking %s configuration" "$SVC_NAME"; busy + configtest >/dev/null 2>&1 + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + ok + else + fail + nls 'Configuration test failed. See details with %s "checkconfig"' $0 + exit $RETVAL + fi fi } +start() { + # Check if the service is already running? + if [ -f /var/lock/subsys/httpd ]; then + msg_already_running "$SVC_NAME" + return + fi + + [ "$1" -eq 0 ] || checkconfig + msg_starting "$SVC_NAME" + # remove ssl_scache on startup, otherwise httpd may go into + # infinite loop if there are db transaction logs laying around + rm -f /var/cache/httpd/*ssl_scache* + daemon --pidfile /var/run/httpd.pid /usr/sbin/httpd $CFG $HTTPD_OPTS + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/httpd +} + stop() { # Stop daemons. - if [ -f /var/lock/subsys/httpd ]; then - msg_stopping httpd.${HTTPD_MPM} - killproc --pidfile httpd.pid httpd.${HTTPD_MPM} - rm -f /var/lock/subsys/httpd /var/run/httpd.pid /var/run/httpd.loc* >/dev/null 2>&1 - else - msg_not_running httpd.${HTTPD_MPM} + if [ ! -f /var/lock/subsys/httpd ]; then + msg_not_running "$SVC_NAME" + return + fi + + msg_stopping "$SVC_NAME" + killproc --pidfile /var/run/httpd.pid httpd + rm -f /var/lock/subsys/httpd /var/run/httpd.pid /var/run/httpd.loc* >/dev/null 2>&1 +} + + +reload() { + if [ ! -f /var/lock/subsys/httpd ]; then + msg_not_running "$SVC_NAME" + RETVAL=7 + return + fi + + checkconfig + msg_reloading "$SVC_NAME" + busy + /usr/sbin/httpd $CFG $HTTPD_OPTS -k graceful + RETVAL=$? + [ $RETVAL -eq 0 ] && ok || fail +} + +condrestart() { + if [ ! -f /var/lock/subsys/httpd ]; then + msg_not_running "$SVC_NAME" + RETVAL=$1 + return fi + + checkconfig + stop + [ "$RESTART_DELAY" ] && usleep $RESTART_DELAY + start } RETVAL=0 # See how we were called. case "$1" in start) - start + start ;; stop) - stop - ;; - status) - status httpd.${HTTPD_MPM} - RETVAL=$? - /usr/sbin/httpd.${HTTPD_MPM} $CFG -S + stop ;; restart) + checkconfig stop - start + [ "$RESTART_DELAY" ] && usleep $RESTART_DELAY + start 0 ;; - reload|force-reload|graceful) - if [ -f /var/lock/subsys/httpd ]; then - run_cmd "Checking httpd.${HTTPD_MPM} configuration" httpd.${HTTPD_MPM} $CFG -t - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - msg_reloading httpd.${HTTPD_MPM} - daemon httpd.${HTTPD_MPM} $CFG -k graceful - RETVAL=$? - fi - else - msg_not_running httpd.${HTTPD_MPM} - RETVAL=7 - fi + try-restart) + condrestart 0 ;; - flush-logs) - if [ -f /var/lock/subsys/httpd ]; then - msg_reloading httpd.${HTTPD_MPM} - - httpd.${HTTPD_MPM} -t >/dev/null 2>&1 - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - daemon httpd.${HTTPD_MPM} $CFG -k graceful - RETVAL=$? - else - fail - echo >&2 "Configuration file syntax test failed." - fi - fi + reload|force-reload|graceful|flush-logs) + reload ;; - force-reload) - if [ -f /var/lock/subsys/httpd ]; then - run_cmd "Checking httpd.${HTTPD_MPM} configuration" httpd.${HTTPD_MPM} $CFG -t - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - msg_reloading httpd.${HTTPD_MPM} - # forced reload - daemon httpd.${HTTPD_MPM} $CFG -k restart - RETVAL=$? - fi - else - msg_not_running httpd.${HTTPD_MPM} - RETVAL=7 - fi + checkconfig|configtest) + checkconfig 1 + ;; + status) + status httpd + RETVAL=$? + /usr/sbin/httpd $CFG $HTTPD_OPTS -S ;; - *) - msg_usage "$0 {start|stop|restart|reload|force-reload|graceful|status}" + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|graceful|configtest|status}" exit 3 ;; esac