ISPConfig3 - Apache stoppt mit SIGWINCH

Dieses Thema im Forum "Installation und Konfiguration" wurde erstellt von celocore, 26. Juli 2011.

  1. celocore

    celocore Member

    Hallo zusammen,

    nach Tagen erfolgloser Suche und einem identischen Problem im englischen Forum, frage ich trotzdem nochmal hier nach.

    Mein System

    - Ubuntu 8.04 LTS in einer Xen VM auf einem Host ebenfalls unter Ubuntu 8.04 LTS
    - ISPConfig 3.0.3.3

    bringt bei Aktualisierungen der Webeinstellungen auf den verschiedenen angebundenen Systemen folgende Meldung im apache error-log

    [notice] caught SIGWINCH, shutting down gracefully

    Damit sind jedoch nicht alle Apache-Prozesse tot. Es hilft jetzt nur noch die vorhandenen Prozesse via killall -9 apache2 zu beenden und den Apache neu zu starten. Die im englischen Forum genannte Lösung bleibt bei mir leider ohne Erfolg.
    Gibt es vielleicht noch andere Ansätze wo man was machen könnte?
     
  2. Till

    Till Administrator

    Du kannst z.B. das apache2 init script in /etc/init.d/ ändern, dass er statt einem graceful restart immer ein stop - start macht.
     
  3. celocore

    celocore Member

    Das hat es leider nicht gebracht.

    Gibt es eine Möglichkeit mitzuloggen oder nachzusehen, welche Kommandos vom ISPConfig ausgeführt werden? Laut /usr/local/ispconfig/server/mods-enabled/web_module.inc.php Zeile 142 sollte ja ein /etc/init.d/apache2 reload ausgeführt werden.
    Wenn ich das an der Kommandozeile mache, dann sehe ich im Log

    [notice] Graceful restart requested, doing restart
    [notice] Digest: generating secret for digest authentication ...
    [notice] Digest: done
    [notice] Apache/2.2.8 (Ubuntu) DAV/2 PHP/5.3.6-11 with Suhosin-Patch mod_ruby/1.2.6 Ruby/1.8.6(2007-09-24) mod_ssl/2.2.8 OpenSSL/0.9.8g configured -- resuming normal operations
    [warn] long lost child came home! (pid 26349)

    Wenn ich den Restart durch eine Änderung über das ISPC-Panel vornehme gibt es im Log

    [notice] caught SIGWINCH, shutting down gracefully

    Das sollte doch eigentlich nicht sein, oder? Ideen oder Hinweise zur weiteren Suche?!
     
    Zuletzt bearbeitet: 4. Aug. 2011
  4. Till

    Till Administrator

    Füge mal ein sleep zwischen stop und start ein. bei virtuelle Maschinen kann es je nach Auslastung des Host systems sein, dass apache zu lange zum stoppen braucht und dann der Port noch nicht wieder frei ist, wenn er startet.
     
  5. celocore

    celocore Member

    Ups, da hat sich meine Änderung mit Deiner Antwort überschnitten, sorry. Das mit dem sleep hatte ich auch schon probiert... erfolglos.
     
  6. Till

    Till Administrator

    Du kannst das ganze ja mal wie folgt testen:

    1) Debugging in ispconfig einschalten.
    2) Den server.sh root cronjob von ispconfig ausschalten durch einfügen von einem # am Anfang der zeile. Du kannst den Cronjob mit dem Befehel "crontab -e" editieren.
    3) Eine Einstellung an einem Web ändern, so dass apache neu geladen werden muss.
    4) Den server.-sh cronjob mit folgendem Befehl manuell starten:

    /usr/local/ispconfig/server/server.sh
     
  7. celocore

    celocore Member

    Hi Till,

    folgende Ausgaben habe ich in den Log-Files

    Code:
    /var/log/ispconfig/ispconfig.log
    
    04.08.2011-11:52 - DEBUG - Set Lock: /usr/local/ispconfig/server/temp/.ispconfig_lock
    04.08.2011-11:52 - DEBUG - Found 1 changes, starting update process.
    04.08.2011-11:52 - DEBUG - Replicated from master: REPLACE INTO web_domain (`domain_id`,`sys_userid`,`sys_groupid`,`sys_perm_user`,`sys_perm_group`,`sys_perm_other`,`server_id`,`ip_address`,`domain`,`type`,`parent_domain_id`,`vhost_type`,`document_root`,`system_user`,`system_group`,`hd_quota`,`traffic_quota`,`cgi`,`ssi`,`suexec`,`errordocs`,`is_subdomainwww`,`subdomain`,`php`,`ruby`,`redirect_type`,`redirect_path`,`ssl`,`ssl_state`,`ssl_locality`,`ssl_organisation`,`ssl_organisation_unit`,`ssl_country`,`ssl_domain`,`ssl_request`,`ssl_cert`,`ssl_bundle`,`ssl_action`,`stats_password`,`stats_type`,`allow_override`,`apache_directives`,`php_open_basedir`,`custom_php_ini`,`backup_interval`,`backup_copies`,`active`,`traffic_quota_lock`) VALUES ('15','10','10','riud','ru','','8','*','domain1.tld','vhost','0','name','/var/www/clients/client9/web15','web15','client9','-1','-1','n','n','y','1','1','www','mod','n','','','n','','','','','','domain1.tld','','','','','','webalizer','All','','/var/www/clients/client9/web15/web:/var/www/clients/client9/web15/tmp:/var/www/domain1.tld/web:/srv/www/domain1.tld/web:/usr/share/php5:/tmp:/usr/share/phpmyadmin:/etc/phpmyadmin:/var/lib/phpmyadmin:/var/www_glusterfs/clients/client9/web15/web/','','none','1','y','n')
    04.08.2011-11:52 - DEBUG - Calling function 'ssl' from plugin 'apache2_plugin' raised by event 'web_domain_update'.
    04.08.2011-11:52 - DEBUG - Calling function 'update' from plugin 'apache2_plugin' raised by event 'web_domain_update'.
    04.08.2011-11:52 - DEBUG - exec: chmod 751 /var/www/clients/client9/web15/
    04.08.2011-11:52 - DEBUG - exec: chmod 751 /var/www/clients/client9/web15/*
    04.08.2011-11:52 - DEBUG - exec: chmod 710 /var/www/clients/client9/web15/web
    04.08.2011-11:52 - DEBUG - exec: chmod 777 /var/www/clients/client9/web15/tmp
    04.08.2011-11:52 - DEBUG - exec: chmod 755 /var/www/clients/client9/web15/log
    04.08.2011-11:52 - DEBUG - exec: usermod --groups sshusers web15
    04.08.2011-11:52 - DEBUG - exec: chown web15:client9 /var/www/clients/client9/web15
    04.08.2011-11:52 - DEBUG - exec: chmod 755 /var/www/clients/client9/web15/
    04.08.2011-11:52 - DEBUG - exec: chown root:root /var/www/clients/client9/web15/
    04.08.2011-11:52 - DEBUG - exec: chown web15:client9 /var/www/clients/client9/web15/log/error.log
    04.08.2011-11:52 - DEBUG - Disable SSL for: domain1.tld
    04.08.2011-11:52 - DEBUG - Add server alias: domain2.tld
    04.08.2011-11:52 - DEBUG - Writing the vhost file: /etc/apache2/sites-available/domain1.tld.vhost
    04.08.2011-11:52 - DEBUG - Apache status is: 1
    04.08.2011-11:52 - DEBUG - Calling function 'restartHttpd' from module 'web_module'.
    04.08.2011-11:53 - DEBUG - Apache online status after restart is: 1
    04.08.2011-11:53 - DEBUG - Processed datalog_id 453
    04.08.2011-11:53 - DEBUG - Remove Lock: /usr/local/ispconfig/server/temp/.ispconfig_lock
    
    Code:
    /var/log/apache2/error.log
    
    [Thu Aug 04 11:53:00 2011] [notice] caught SIGWINCH, shutting down gracefully
    
    Das bestätigt nochmal, was ich schon weiß, der apache2-Prozess ist nicht beendet, wenn er neu gestartet werden soll. Sagen Dir diese Einträge vielleicht mehr?
     
  8. Till

    Till Administrator

    Die Zeile im Log besagt ja nur, dass er einen normalen graceful stop durchführt. Es handelt sich dabei also um keine Fehlermeldung.

    Poste doch mal Dein apache2 start script aus /etc/init.d
     
  9. celocore

    celocore Member

    Habe inziwschen wieder auf das originale umgestellt...

    Code:
    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          apache2
    # Required-Start:    $local_fs $remote_fs $network $syslog
    # Required-Stop:     $local_fs $remote_fs $network $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Start/stop apache2 web server
    ### END INIT INFO
    #
    # apache2               This init.d script is used to start apache2.
    #                       It basically just calls apache2ctl.
    
    ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"
    
    #[ `ls -1 /etc/apache2/sites-enabled/ | wc -l | sed -e 's/ *//;'` -eq 0 ] && \
    #echo "You haven't enabled any sites yet, so I'm not starting apache2." && \
    #echo "To add and enable a host, use addhost and enhost." && exit 0
    
    #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/mod_disk_cache
    HTCACHECLEAN_OPTIONS=""
    
    set -e
    if [ -x /usr/sbin/apache2 ] ; then
            HAVE_APACHE2=1
    else
            echo "No apache MPM package installed"
            exit 0
    fi
    
    . /lib/lsb/init-functions
    
    test -f /etc/default/rcS && . /etc/default/rcS
    test -f /etc/default/apache2 && . /etc/default/apache2
    
    APACHE2CTL="$ENV /usr/sbin/apache2ctl"
    HTCACHECLEAN="$ENV /usr/sbin/htcacheclean"
    
    check_htcacheclean() {
            [ "$HTCACHECLEAN_MODE" = "daemon" ] || return 1
    
            [ "$HTCACHECLEAN_RUN"  = "yes"    ] && return 0
    
            [ "$HTCACHECLEAN_RUN"  = "auto" \
              -a -e /etc/apache2/mods-enabled/disk_cache.load ] && return 0
    
            return 1
    }
    
    start_htcacheclean() {
            $HTCACHECLEAN $HTCACHECLEAN_OPTIONS -d$HTCACHECLEAN_DAEMON_INTERVAL \
                            -i -p$HTCACHECLEAN_PATH -l$HTCACHECLEAN_SIZE
    
    }
    
    stop_htcacheclean() {
            killall htcacheclean 2> /dev/null || echo ...not running
    }
    
    pidof_apache() {
        # if pidof is null for some reasons the script exits automagically
        # classified as good/unknown feature
        PIDS=`pidof apache2` || true
    
        PFILE=`. /etc/apache2/envvars ; echo $APACHE_PID_FILE`
        if [ -z "$PFILE" ] ; then
            echo ERROR: APACHE_PID_FILE needs to be defined in /etc/apache2/envvars >&2
            exit 2
        fi
    
        [ -e $PFILE ] && PIDS2=`cat $PFILE`
    
        # if there is a pid we need to verify that belongs to apache2
        # for real
        for i in $PIDS; do
            if [ "$i" = "$PIDS2" ]; then
                # in this case the pid stored in the
                # pidfile matches one of the pidof apache
                # so a simple kill will make it
                echo $i
                return 0
            fi
        done
        return 1
    }
    
    apache_stop() {
            if `$APACHE2CTL configtest > /dev/null 2>&1`; then
                    # if the config is ok than we just stop normaly
                    $APACHE2CTL graceful-stop
            else
                    # if we are here something is broken and we need to try
                    # to exit as nice and clean as possible
                    PID=$(pidof_apache)
    
                    if [ "${PID}" ]; then
                            # in this case it is everything nice and dandy
                            # and we kill apache2
                            log_warning_msg "We failed to correctly shutdown apache, so we're now killing all running apache processes. This is almost certainly suboptimal, so please make sure your system is working as you'd expect now!"
                            kill $PID
                    elif [ "$(pidof apache2)" ]; then
                            if [ "$VERBOSE" != no ]; then
                                    echo " ... failed!"
                                    echo "You may still have some apache2 processes running.  There are"
                                    echo "processes named 'apache2' which do not match your pid file,"
                                    echo "and in the name of safety, we've left them alone.  Please review"
                                    echo "the situation by hand."
                            fi
                            return 1
                    fi
            fi
    }
    
    # Stupid hack to keep lintian happy. (Warrk! Stupidhack!).
    case $1 in
            start)
                    log_daemon_msg "Starting web server" "apache2"
                    if $APACHE2CTL start; then
                            if check_htcacheclean ; then
                                    log_progress_msg htcacheclean
                                    start_htcacheclean || log_end_msg 1
                            fi
                            log_end_msg 0
                    else
                            log_end_msg 1
                    fi
            ;;
            stop)
                    if check_htcacheclean ; then
                            log_daemon_msg "Stopping web server" "htcacheclean"
                            stop_htcacheclean
                            log_progress_msg "apache2"
                    else
                            log_daemon_msg "Stopping web server" "apache2"
                    fi
                    if apache_stop; then
                            log_end_msg 0
                    else
                            log_end_msg 1
                    fi
            ;;
            reload | force-reload)
                    if ! $APACHE2CTL configtest > /dev/null 2>&1; then
                        $APACHE2CTL configtest || true
                        log_end_msg 1
                        exit 1
                    fi
                    log_daemon_msg "Reloading web server config" "apache2"
                    if pidof_apache > /dev/null ; then
                        if $APACHE2CTL graceful $2 ; then
                            log_end_msg 0
                        else
                            log_end_msg 1
                        fi
                    fi
            ;;
            restart)
                    if check_htcacheclean ; then
                            log_daemon_msg "Restarting web server" "htcacheclean"
                            stop_htcacheclean
                            log_progress_msg apache2
                    else
                            log_daemon_msg "Restarting web server" "apache2"
                    fi
                    if ! apache_stop; then
                            log_end_msg 1 || true
                    fi
                    sleep 10
                    if $APACHE2CTL start; then
                            if check_htcacheclean ; then
                                    start_htcacheclean || log_end_msg 1
                            fi
                            log_end_msg 0
                    else
                            log_end_msg 1
                    fi
            ;;
            start-htcacheclean)
                    log_daemon_msg "Starting htcacheclean"
                    start_htcacheclean || log_end_msg 1
                    log_end_msg 0
            ;;
            stop-htcacheclean)
                    log_daemon_msg "Stopping htcacheclean"
                            stop_htcacheclean
                            log_end_msg 0
            ;;
            *)
                    log_success_msg "Usage: /etc/init.d/apache2 {start|stop|restart|reload|force-reload|start-htcacheclean|stop-htcacheclean}"
                    exit 1
            ;;
    esac
    
    Die Reload-Section sah zeitweise so aus

    Code:
            reload | force-reload)
                     if ! $APACHE2CTL configtest > /dev/null 2>&1; then
                         $APACHE2CTL configtest || true
                         log_end_msg 1
                         exit 1
                     fi
                     log_daemon_msg "Reloading web server config" "apache2"
                     if pidof_apache > /dev/null ; then
    /etc/init.d/apache2 stop
    sleep(30)
    /etc/init.d/apache2 start
    #                    if $APACHE2CTL graceful $2 ; then 
    #                        log_end_msg 0 
    #                    else 
    #                        log_end_msg 1 
    #                    fi
                     fi
             ;;
    
     
    Zuletzt bearbeitet: 4. Aug. 2011
  10. Till

    Till Administrator

    Versuch mal bitte die Zeile:

    if $APACHE2CTL graceful $2 ; then

    zu ändern in:

    if $APACHE2CTL restart $2 ; then
     
  11. celocore

    celocore Member

    Keine Änderung des Arbeitsweise... hmm
     
  12. Till

    Till Administrator

    Dann fällt mir da erstmal auch nichts weiter ein :(
     

Diese Seite empfehlen