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