[Résolu] Démarrer le service apache au boot de la machine

Salut,
J’ai configurer apache à partir des sources pour différents essais pour des tutoriaux.
Mais dans le readme d’apache il n’est pas indiqué comme ajouter apache dans les différents runlevel pour permettre le démarrage automatique au boot de la machine.

Quelle commandes appliquer et comment créer le script de démarrage du service ? : /etc/init.d/apache ?

Je viens trouver une commande mais je ne connais sa conséquence :

pour ta commande, tu n’as rien du changer, puisque l’arret comme le démarrage d’apache se faisaient déjà en 91.
Sinon: man update-rc.d

Pour ton problême, tu as plusieurs solutions.
écrire de zero un script /etc/init.d/apache en t’inspirant des scripts de /etc/init.d.
En récupèrer un sur une autre install et t’en inspirer.
par exemple le mien standard debian:

[quote="/etc/init.d/apache2"]#!/bin/bash -e

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”

#edit /etc/default/apache2 to change this.
NO_START=0

set -e
if [ -x /usr/sbin/apache2 ] ; then
HAVE_APACHE2=1
else
exit 0
fi

. /lib/lsb/init-functions

test -f /etc/default/rcS && . /etc/default/rcS
test -f /etc/default/apache2 && . /etc/default/apache2
if [ “$NO_START” != “0” -a “$1” != “stop” ]; then
[ “$VERBOSE” != “no” ] && log_warning_msg “Not starting apache2 - edit /etc/default/apache2 and change NO_START to be 0.”;
exit 0;
fi

APACHE2="$ENV /usr/sbin/apache2"
APACHE2CTL="$ENV /usr/sbin/apache2ctl"

apache_stop() {
PID="“
PIDFILE=”"
AP_CONF=/etc/apache2/apache2.conf

    # apache2 allows more than PidFile entry in the config but only the
    # last found in the config is used; we attempt to follow includes
    # here, but only first-level includes are supported, not nested ones

    for i in $AP_CONF `awk '$1 ~ /^\s*[Ii]nclude$/ && $2 ~ /^\// {print $2}' $AP_CONF`; do
            PIDFILE=`grep -i ^PidFile $i | tail -n 1 | awk '{print $2}'`
            if [ -e "$PIDFILE" ]; then
                    PID=`cat $PIDFILE`
            fi
    done

    errors=`$APACHE2 -t 2>&1`
    if [ $? = 0 ]; then
            # if the config is ok than we just stop normaly

            if [ -n "$PID" ]
            then
                    $APACHE2CTL stop

                    CNT=0
                    while [ 1 ]
                    do
                            CNT=$(expr $CNT + 1)

                            [ ! -d /proc/$PID ] && break

                            if [ $CNT -gt 60 ]
                            then
                                    if [ "$VERBOSE" != "no" ]; then
                                            echo " ... failed!"
                                            echo "Apache2 failed to honor the stop command, please investigate the situation by ha

nd."
fi
return 1
fi

                            sleep 1
                    done
            else
                    if [ "$VERBOSE" != "no" ]; then
                            echo -n " ... no pidfile found! not running?"
                    fi
            fi

    else
            [ "$VERBOSE" != "no" ] && echo "$errors"

            # if we are here something is broken and we need to try
            # to exit as nice and clean as possible

            # if pidof is null for some reasons the script exits automagically
            # classified as good/unknown feature
            PIDS=`pidof apache2` || true

            REALPID=0
            # if there is a pid we need to verify that belongs to apache2
            # for real
            for i in $PIDS; do
                    if [ "$i" = "$PID" ]; then
                            # in this case the pid stored in the
                            # pidfile matches one of the pidof apache
                            # so a simple kill will make it
                            REALPID=1
                    fi
            done

            if [ $REALPID = 1 ]; then
                    # in this case everything is nice and dandy
                    # and we kill apache2
                    kill $PID
            else
                    # this is the worst situation... just kill all of them
                    #for i in $PIDS; do
                    #       kill $i
                    #done
                    # Except, we can't do that, because it's very, very bad
                    if [ "$PIDS" ] && [ "$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)
[ -f /etc/apache2/httpd.conf ] || touch /etc/apache2/httpd.conf
# ssl_scache shouldn’t be here if we’re just starting up.
[ -f /var/run/apache2/ssl_scache ] && rm -f /var/run/apache2/ssl_scache
# /var/run and /var/lock could be on a tmpfs
[ ! -d /var/run/apache2 ] && mkdir /var/run/apache2
[ ! -d /var/lock/apache2 ] && mkdir /var/lock/apache2
# Make sure /var/lock/apache2 has the correct permissions
chown www-data /var/lock/apache2

            log_begin_msg "Starting apache 2.0 web server..."
            if $APACHE2CTL startssl; then
                    log_end_msg 0
            else
                    log_end_msg 1
            fi
    ;;
    stop)
            log_begin_msg "Stopping apache 2.0 web server..."
            if apache_stop; then
                    log_end_msg 0
            else
                    log_end_msg 1
            fi
    ;;
    reload)
            log_begin_msg "Reloading apache 2.0 configuration..."
            if $APACHE2CTL graceful $2 ; then
                    log_end_msg 0
            else
                    log_end_msg 1
            fi
    ;;
    restart | force-reload)
            log_begin_msg "Forcing reload of apache 2.0 web server..."
            if ! apache_stop; then
                    log_end_msg 1
            fi
            if $APACHE2CTL startssl; then
                    log_end_msg 0
            else
                    log_end_msg 1
            fi
    ;;
    status)
            exit 4
    ;;
    *)
            echo "Usage: /etc/init.d/apache2 start|stop|restart|reload|force-reload" >&2
            exit 2
    ;;

esac
[/quote]
Une fois que tu as un script qui sait faire start et stop, tu fais un update-rc.d <tonscript> defaults 91

Merci matt,
j’ai suivi tes indications et je me suis inspiré d’un script existant, celui d’apache
1.3.34 pour faire celui d’apache 1.3.37 et ça marche.

Pour l’update-rc aussi !