web-dev-qa-db-fra.com

Pourquoi n'avons-nous pas besoin de démarrer le serveur Apache sur Ubuntu comme sous Windows?

Le serveur LAMP est installé sur mon système et fonctionne parfaitement. Cependant, je suis très curieux de savoir pourquoi nous n’avons pas besoin de démarrer le serveur Apache dans LAMP. Lorsque nous avons WAMP sous Windows, nous devons au contraire le démarrer et activer Apache et MySQL. Apache démarre-t-il comme nous démarrons Ubuntu (c'est-à-dire qu'il fonctionne toujours en arrière-plan) ou démarre-t-il lorsque nous ouvrons localhost?

Les réponses à la question " Démarrage manuel du serveur LAMP " décrivent comment démarrer LAMP manuellement, mais pas comment cela fonctionne en interne pour démarrer LAMP automatiquement.

5
Rahul Satal

Linux en général, donc Ubuntu aussi, a des répertoires dans lesquels vous pouvez mettre des scripts qui démarrent/arrêtent/redémarrent/rechargent un service (ou toute action que ce service peut fournir): /etc/init.d/ (= ancien mais toujours utilisé très souvent).

/etc/init.d est le lieu de vie de tous les scripts sysvinit traditionnels et des scripts rétrocompatibles pour upstart. Les scripts rétrocompatibles exécutent essentiellement service myservice start au lieu de faire quoi que ce soit eux-mêmes. Certains affichent simplement un avis pour utiliser la commande service.

/etc/init.d$ ls
Apache2             glibc.sh               mysql          screen-cleanup
apparmor            halt                   mysql-ndb      sendsigs
...

A titre d'exemple, le début du script Apache2 (tous les autres seront de style similaire):

$ more Apache2
#!/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"

...


Il y a aussi /etc/init (= débutant):

/ etc/init est l'endroit où habitent les configurations init. Bien qu'ils ne soient pas des scripts eux-mêmes, ils exécutent essentiellement tout ce qui est nécessaire pour remplacer les scripts sysvinit.

cups - CUPS Printing spooler and server

description     "CUPS printing spooler/server"
author          "Michael Sweet <[email protected]>"

start on (filesystem
          and (started dbus or runlevel [2345]))
stop on runlevel [016]

respawn
respawn limit 3 12

Donc, fondamentalement, dans ces scripts/configuration, il est indiqué quel autre service doit être démarré avant que ce service puisse être démarré et quel service doit avoir été arrêté avant que ce service puisse être arrêté.

Apache démarre-t-il comme nous démarrons Ubuntu (c'est-à-dire qu'il fonctionne toujours en arrière-plan) ou démarre-t-il lorsque nous ouvrons localhost?

Lorsque vous installez un service comme Apache (ou mysql (bases de données) ou cups (serveur d’impression)), il inclut généralement un script de démarrage ET est également activé (car l’hypothèse est la suivante: s’il est installé, vous voulez le faire fonctionner).

La réponse est donc la suivante: il est toujours en cours d'exécution et n'est pas démarré lorsque vous accédez à une URL (c'est-à-dire http: // localhost ).

Il est également possible d'arrêter un service, de supprimer le démarrage automatique de /etc/init.d/ et de démarrer manuellement ce service.

Deux gestionnaires de session s’occupent de cela: le vieil Ubuntu (<15.10) utilise upstart. Nouvel Ubuntu (> 15.10) utilise systemd.

  • Upstart serait service start Apache2 ou service stop Apache2.
  • Systemd serait systemctl start Apache2 ou systemctl start Apache2 mais supporte également la méthode utilisée par Upstart sur les systèmes Debian/Ubuntu.
8
Rinzwind