X-Git-Url: https://git.pld-linux.org/?a=blobdiff_plain;f=apache.init;h=5960a47d8bec452c0037b426c6299a832e219b0e;hb=2f074c61e38e0b175f69c7cd1d58b0e1006afe06;hp=034cfcc4bc53702bb10a1cb95bd9f130baf3bc0e;hpb=479622537056fd71efdaa41a88b6235b715db327;p=packages%2Fapache.git diff --git a/apache.init b/apache.init index 034cfcc..5960a47 100644 --- a/apache.init +++ b/apache.init @@ -7,10 +7,7 @@ # HTML files and CGI. # processname: httpd # pidfile: /var/run/httpd.pid -# config: /etc/httpd/conf/access.conf -# config: /etc/httpd/conf/httpd.conf -# config: /etc/httpd/conf/srm.conf - +# config: /etc/httpd/apache.conf # Source function library . /etc/rc.d/init.d/functions @@ -19,13 +16,12 @@ . /etc/sysconfig/network # Get service config -[ -f /etc/sysconfig/apache ] && . /etc/sysconfig/apache +[ -f /etc/sysconfig/httpd ] && . /etc/sysconfig/httpd # Check that networking is up. if is_yes "${NETWORKING}"; then if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then - # nls "ERROR: Networking is down. %s can't be run." - msg_network_down httpd + msg_network_down "Apache 2.2 Web Server" exit 1 fi else @@ -33,70 +29,135 @@ else fi [ -z "$HTTPD_MPM" ] && HTTPD_MPM="prefork" -if [ -d "${HTTPD_CONF:-'/etc/httpd/httpd.conf'}" ]; then - CFG="-f ${HTTPD_CONF:-'/etc/httpd/httpd.conf'}" -elif [ -n "$HTTPD_CONF" ]; then - echo "error: HTTPD_CONF='$HTTPD_CONF': not a file, not a directory" - exit 1 -else - CFG="" +SVC_NAME="Apache 2.2 Web Server ($HTTPD_MPM)" + +if [ -n "${HTTPD_CONF}" ]; then + if [ -d "${HTTPD_CONF}" ] || [ -f "${HTTPD_CONF}" ]; then + CFG="-f ${HTTPD_CONF}" + else + echo "error: HTTPD_CONF='$HTTPD_CONF': not a file, not a directory" + exit 1 + fi fi +# configtest itself +configtest() { + /usr/sbin/httpd.${HTTPD_MPM} -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 ] && ok || fail + [ "$out" ] && echo >&2 "$out" + else + # 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 + + checkconfig + msg_starting "$SVC_NAME" + daemon --pidfile /var/run/httpd.pid /usr/sbin/httpd.${HTTPD_MPM} $CFG $HTTPD_OPTS + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/httpd +} + +stop() { + # Stop daemons. + 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.${HTTPD_MPM} + 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.${HTTPD_MPM} $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 + start +} + RETVAL=0 # See how we were called. case "$1" in 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 - RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/httpd - else - msg_already_running httpd.${HTTPD_MPM} - fi + start ;; stop) - # Stop daemons. - if [ -f /var/lock/subsys/httpd ]; then - msg_stopping httpd.${HTTPD_MPM} - daemon --waitforname httpd.${HTTPD_MPM} --waitfortime 60 httpd.${HTTPD_MPM} $CFG -k stop - # Delete pidfile only when apache was called successfully - if [ $? -eq 0 ]; then - rm -f /var/lock/subsys/httpd /var/run/httpd.pid /var/run/httpd.loc* >/dev/null 2>&1 - fi - else - msg_not_running httpd.${HTTPD_MPM} - fi + stop + ;; + restart) + checkconfig + stop + start + ;; + try-restart) + condrestart 0 + ;; + reload|force-reload|graceful|flush-logs) + reload + ;; + checkconfig|configtest) + checkconfig 1 ;; status) status httpd.${HTTPD_MPM} RETVAL=$? - /usr/sbin/httpd.${HTTPD_MPM} $CFG -S - ;; - restart) - $0 stop - $0 start - ;; - reload|force-reload|graceful) - if [ -f /var/lock/subsys/httpd ]; then - msg_reloading httpd.${HTTPD_MPM} - httpd.${HTTPD_MPM} $CFG -t > /dev/null 2>&1 - RETVAL=$? - if [ $RETVAL -eq 0 ]; then - daemon httpd.${HTTPD_MPM} $CFG -k graceful - RETVAL=$? - else - fail - echo "Configuration file syntax test failed." - fi - else - msg_not_running httpd.${HTTPD_MPM} >&2 - RETVAL=7 - fi + /usr/sbin/httpd.${HTTPD_MPM} $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