Apache is dead after upgrading Debian and Kolab

Mateusz Kijowski mateusz.kijowski at gmail.com
Wed Aug 5 11:22:30 CEST 2015


The 6:28 time suggests that logrotate is the reason for this, please change
postrotate action in /etc/logrotate.d/apache2 to restart apache instead of
reloading it.

2015-08-05 10:41 GMT+02:00 Thomas Luft <thomas at die-lufts.org>:

> Hi Jochen,
> hi everybody,
>
> I changed the init.d script but the error persists. The log stopped this
> morning at 6:28, after that the process is still there but apache does not
> react.
>
> Maybe I am changing the wrong file since Debian uses init.d no more?
>
> I attached my /etc/init.d/apache2 script:
>
> Regards
>
> Thomas
>
> #!/bin/sh
> ### BEGIN INIT INFO
> # Provides:          apache2
> # Required-Start:    $local_fs $remote_fs $network $syslog $named
> # Required-Stop:     $local_fs $remote_fs $network $syslog $named
> # Default-Start:     2 3 4 5
> # Default-Stop:      0 1 6
> # X-Interactive:     true
> # Short-Description: Apache2 web server
> # Description:       Start the web server and associated helpers
> #  This script will start apache2, and possibly all associated instances.
> #  Moreover, it will set-up temporary directories and helper tools such as
> #  htcacheclean when required by the configuration.
> ### END INIT INFO
>
> DESC="web server"
> NAME=apache2
> DAEMON=/usr/sbin/$NAME
>
> SCRIPTNAME="${0##*/}"
> SCRIPTNAME="${SCRIPTNAME##[KS][0-9][0-9]}"
> if [ -n "$APACHE_CONFDIR" ] ; then
>     if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
>             DIR_SUFFIX="${APACHE_CONFDIR##/etc/apache2-}"
>     else
>             DIR_SUFFIX=
>     fi
> elif [ "${SCRIPTNAME##apache2-}" != "$SCRIPTNAME" ] ; then
>     DIR_SUFFIX="-${SCRIPTNAME##apache2-}"
>     APACHE_CONFDIR=/etc/apache2$DIR_SUFFIX
> else
>     DIR_SUFFIX=
>     APACHE_CONFDIR=/etc/apache2
> fi
> if [ -z "$APACHE_ENVVARS" ] ; then
>     APACHE_ENVVARS=$APACHE_CONFDIR/envvars
> fi
> export APACHE_CONFDIR APACHE_ENVVARS
>
> ENV="env -i LANG=C
> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
> if [ "$APACHE_CONFDIR" != /etc/apache2 ] ; then
>     ENV="$ENV APACHE_CONFDIR=$APACHE_CONFDIR"
> fi
> if [ "$APACHE_ENVVARS" != "$APACHE_CONFDIR/envvars" ] ; then
>     ENV="$ENV APACHE_ENVVARS=$APACHE_ENVVARS"
> fi
>
>
> #edit /etc/default/apache2 to change this.
> HTCACHECLEAN_RUN=auto
> HTCACHECLEAN_MODE=daemon
> HTCACHECLEAN_SIZE=300M
> HTCACHECLEAN_DAEMON_INTERVAL=120
> HTCACHECLEAN_PATH=/var/cache/apache2$DIR_SUFFIX/mod_cache_disk
> HTCACHECLEAN_OPTIONS=""
>
> # Read configuration variable file if it is present
> if [ -f /etc/default/apache2$DIR_SUFFIX ] ; then
>     . /etc/default/apache2$DIR_SUFFIX
> elif [ -f /etc/default/apache2 ] ; then
>     . /etc/default/apache2
> fi
>
> PIDFILE=$(. $APACHE_ENVVARS && echo $APACHE_PID_FILE)
>
> VERBOSE=no
> if [ -f /etc/default/rcS ]; then
>     . /etc/default/rcS
> fi
> . /lib/lsb/init-functions
>
>
> # Now, set defaults:
> APACHE2CTL="$ENV apache2ctl"
> HTCACHECLEAN="$ENV htcacheclean"
> PIDFILE=$(. $APACHE_ENVVARS && echo $APACHE_PID_FILE)
> APACHE2_INIT_MESSAGE=""
>
> CONFTEST_OUTFILE=
> cleanup() {
>     if [ -n "$CONFTEST_OUTFILE" ] ; then
>         rm -f "$CONFTEST_OUTFILE"
>     fi
> }
> trap cleanup 0  # "0" means "EXIT", but "EXIT" is not portable
>
>
> apache_conftest() {
>     [ -z "$CONFTEST_OUTFILE" ] || rm -f "$CONFTEST_OUTFILE"
>     CONFTEST_OUTFILE=$(mktemp)
>     if ! $APACHE2CTL configtest > "$CONFTEST_OUTFILE" 2>&1 ; then
>         return 1
>     else
>         rm -f "$CONFTEST_OUTFILE"
>         CONFTEST_OUTFILE=
>         return 0
>     fi
> }
>
> clear_error_msg() {
>     [ -z "$CONFTEST_OUTFILE" ] || rm -f "$CONFTEST_OUTFILE"
>     CONFTEST_OUTFILE=
>     APACHE2_INIT_MESSAGE=
> }
>
> print_error_msg() {
>     [ -z "$APACHE2_INIT_MESSAGE" ] || log_warning_msg
> "$APACHE2_INIT_MESSAGE"
>     if [ -n "$CONFTEST_OUTFILE" ] ; then
>         echo "Output of config test was:" >&2
>         cat "$CONFTEST_OUTFILE" >&2
>         rm -f "$CONFTEST_OUTFILE"
>         CONFTEST_OUTFILE=
>     fi
> }
>
> apache_wait_start() {
>     local STATUS=$1
>     local i=0
>
>     if [ $STATUS != 0 ] ; then
>             return $STATUS
>     fi
>     while : ; do
>             PIDTMP=$(pidofproc -p $PIDFILE $DAEMON)
>             if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" 2> /dev/null;
> then
>                     return $STATUS
>             fi
>
>             if [ $i = "20" ] ; then
>                     APACHE2_INIT_MESSAGE="The apache2$DIR_SUFFIX instance
> did not start within 20 seconds. Please read the log files to discover
> problems"
>                     return 2
>             fi
>
>             [ "$VERBOSE" != no ] && log_progress_msg "."
>             sleep 1
>             i=$(($i+1))
>     done
> }
>
> apache_wait_stop() {
>     local STATUS=$1
>
>     if [ $STATUS != 0 ] ; then
>             return $STATUS
>     fi
>
>     PIDTMP=$(pidofproc -p $PIDFILE $DAEMON)
>     if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" 2> /dev/null; then
>             local i=0
>             while kill -0 "${PIDTMP:-}" 2> /dev/null;  do
>                     if [ $i = '60' ]; then
>                             break
>                             STATUS=2
>                     fi
>                     [ "$VERBOSE" != no ] && log_progress_msg "."
>                     sleep 1
>                     i=$(($i+1))
>             done
>             return $STATUS
>     else
>         return $STATUS
>     fi
> }
>
>
> #
> # Function that starts the daemon/service
> #
> do_start()
> {
>     # Return
>     #   0 if daemon has been started
>     #   1 if daemon was already running
>     #   2 if daemon could not be started
>
>     if pidofproc -p $PIDFILE "$DAEMON" > /dev/null 2>&1 ; then
>             return 1
>     fi
>
>     if apache_conftest ; then
>             $APACHE2CTL start
>             apache_wait_start $?
>             return $?
>     else
>             APACHE2_INIT_MESSAGE="The apache2$DIR_SUFFIX configtest
> failed."
>             return 2
>     fi
> }
>
> #
> # Function that stops the daemon/service
> #
> do_stop()
> {
>     # Return
>     #   0 if daemon has been stopped
>     #   1 if daemon was already stopped
>     #   2 if daemon could not be stopped
>     #   other if a failure occurred
>
>     # either "stop" or "graceful-stop"
>     local STOP=$1
>     # can't use pidofproc from LSB here
>     local AP_RET=0
>
>     if pidof $DAEMON > /dev/null 2>&1 ; then
>             if [ -e $PIDFILE ] && pidof $DAEMON | tr ' ' '\n' | grep -w
> $(cat $PIDFILE) > /dev/null 2>&1 ; then
>                     AP_RET=2
>             else
>                     AP_RET=1
>             fi
>     else
>         AP_RET=0
>     fi
>
>     # AP_RET is:
>     # 0 if Apache (whichever) is not running
>     # 1 if Apache (whichever) is running
>     # 2 if Apache from the PIDFILE is running
>
>     if [ $AP_RET = 0 ] ; then
>             return 1
>     fi
>
>     if [ $AP_RET = 2 ] && apache_conftest ; then
>             $APACHE2CTL $STOP > /dev/null 2>&1
>             apache_wait_stop $?
>             return $?
>     else
>             if [ $AP_RET = 2 ]; then
>                     clear_error_msg
>                     APACHE2_INIT_MESSAGE="The apache2$DIR_SUFFIX
> configtest failed, so we are trying to kill it manually. This is almost
> certainly suboptimal, so please make sure your system is working as you'd
> expect now!"
>                     killproc -p $PIDFILE $DAEMON
>                     apache_wait_stop $?
>                     return $?
>             elif [ $AP_RET = 1 ] ; then
>                     APACHE2_INIT_MESSAGE="There are processes named
> 'apache2' running which do not match your pid file which are left untouched
> in the name of safety, Please review the situation by hand".
>                     return 2
>             fi
>     fi
>
> }
>
>
> #
> # Function that sends a SIGHUP to the daemon/service
> #
> do_reload() {
>     if apache_conftest; then
>             if ! pidofproc -p $PIDFILE "$DAEMON" > /dev/null 2>&1 ; then
>                     APACHE2_INIT_MESSAGE="Apache2 is not running"
>                     return 2
>             fi
>         # Replace graceful with full restart because of
>         # a bug in kolab
>         $APACHE2CTL restart > /dev/null 2>&1
>             # $APACHE2CTL graceful > /dev/null 2>&1
>             return $?
>     else
>             APACHE2_INIT_MESSAGE="The apache2$DIR_SUFFIX configtest
> failed. Not doing anything."
>             return 2
>     fi
> }
>
>
> check_htcacheclean() {
>     [ "$HTCACHECLEAN_MODE" = "daemon" ] || return 1
>     [ "$HTCACHECLEAN_RUN"  = "yes"    ] && return 0
>
>     MODSDIR=$(. $APACHE_ENVVARS && echo $APACHE_MODS_ENABLED)
>             [ "$HTCACHECLEAN_RUN"  = "auto" \
>                     -a -e
> ${MODSDIR:-$APACHE_CONFDIR/mods-enabled}/cache_disk.load ] && \
>                     return 0
>     return 1
> }
>
> start_htcacheclean() {
>        $HTCACHECLEAN $HTCACHECLEAN_OPTIONS -d$HTCACHECLEAN_DAEMON_INTERVAL
> \
>             -i -p$HTCACHECLEAN_PATH -l$HTCACHECLEAN_SIZE
> }
>
> stop_htcacheclean() {
>     pkill -P 1 -f "htcacheclean.* -p$HTCACHECLEAN_PATH " 2> /dev/null ||
> return 1
> }
>
>
> # Sanity checks. They need to occur after function declarations
> [ -x $DAEMON ] || exit 0
>
> if [ ! -x $DAEMON ] ; then
>     echo "No apache-bin package installed"
>     exit 0
> fi
>
> if [ -z "$PIDFILE" ] ; then
>     echo ERROR: APACHE_PID_FILE needs to be defined in $APACHE_ENVVARS >&2
>     exit 2
> fi
>
> if check_htcacheclean ; then
>     if [ ! -d "$HTCACHECLEAN_PATH" ] ; then
>             echo "htcacheclean is configured, but directory
> $HTCACHECLEAN_PATH does not exist!" >&2
>             exit 2
>     fi
> fi
>
>
>
> case "$1" in
>   start)
>     log_daemon_msg "Starting $DESC" "$NAME"
>     do_start
>     RET_STATUS=$?
>     case "$RET_STATUS" in
>         0|1)
>             log_success_msg
>             [ "$VERBOSE" != no ] && [ $RET_STATUS = 1 ] && log_warning_msg
> "Server was already running"
>             if check_htcacheclean ; then
>                 [ "$VERBOSE" != no ] && log_daemon_msg "Starting HTTP
> cache cleaning daemon" "htcacheclean"
>                 start_htcacheclean
>                 [ "$VERBOSE" != no ] && log_end_msg $?
>             fi
>             ;;
>         2)
>             log_failure_msg
>             print_error_msg
>             exit 1
>             ;;
>     esac
>     ;;
>   stop|graceful-stop)
>     log_daemon_msg "Stopping $DESC" "$NAME"
>     do_stop "$1"
>     RET_STATUS=$?
>     case "$RET_STATUS" in
>         0|1)
>             log_success_msg
>             [ "$VERBOSE" != no ] && [ $RET_STATUS = 1 ] && log_warning_msg
> "Server was not running"
>             ;;
>         2)
>             log_failure_msg
>             print_error_msg
>             exit 1
>             ;;
>     esac
>     print_error_msg
>
>     if check_htcacheclean ; then
>         [ "$VERBOSE" != no ] && log_daemon_msg "Stopping HTTP cache
> cleaning daemon" "htcacheclean"
>         stop_htcacheclean
>         [ "$VERBOSE" != no ] && log_end_msg $?
>     fi
>
>     ;;
>   status)
>     status_of_proc -p $PIDFILE "apache2" "$NAME"
>     exit $?
>     ;;
>   reload|force-reload|graceful)
>     log_daemon_msg "Reloading $DESC" "$NAME"
>     do_reload
>     RET_STATUS=$?
>     case "$RET_STATUS" in
>         0|1)
>             log_success_msg
>             [ "$VERBOSE" != no ] && [ $RET_STATUS = 1 ] && log_warning_msg
> "Server was already running"
>             ;;
>         2)
>             log_failure_msg
>             print_error_msg
>             exit 1
>             ;;
>     esac
>     print_error_msg
>     ;;
>   restart)
>     log_daemon_msg "Restarting $DESC" "$NAME"
>     do_stop stop
>     case "$?" in
>         0|1)
>             do_start
>             case "$?" in
>                 0)
>                     log_end_msg 0
>                     ;;
>                 1|*)
>                     log_end_msg 1 # Old process is still or failed to
> running
>                     print_error_msg
>                     exit 1
>                     ;;
>             esac
>             ;;
>         *)
>             # Failed to stop
>             log_end_msg 1
>             print_error_msg
>             exit 1
>             ;;
>     esac
>     ;;
>   start-htcacheclean)
>     log_daemon_msg "Starting htcacheclean"
>     start_htcacheclean
>     log_end_msg $?
>     exit $?
>     ;;
>   stop-htcacheclean)
>     log_daemon_msg "Stopping htcacheclean"
>     stop_htcacheclean
>     log_end_msg $?
>     exit $?
>     ;;
>   *)
>     echo "Usage: $SCRIPTNAME
> {start|stop|graceful-stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean}"
> >&2
>     exit 3
>     ;;
> esac
>
> exit 0
>
> # vim: syntax=sh ts=4 sw=4 sts=4 sr noet
>
> Am 03.08.2015 um 23:57 schrieb Jochen Hein:
>
>> Thomas Luft <thomas at die-lufts.org> writes:
>>
>> I started with apachectl but there was no output at all. After the start
>>> I can use the web server for some time, then suddenly and without reason
>>> it crashes but the process is still there (I checked via ps -x).
>>>
>> Is this after logrotate and "apachectl reload"?  Please use restart
>> instead of reload...
>>
>> Jochen
>>
>>
> _______________________________________________
> users mailing list
> users at lists.kolab.org
> https://lists.kolab.org/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kolab.org/pipermail/users/attachments/20150805/c4e64285/attachment-0001.html>


More information about the users mailing list