Exercice : Défi

Mise en place

Dans cet exercice nous allons devoir manipuler un serveur web Apache. Il n'est pas nécessaire de savoir s'en servir particulier, la chose importante à savoir est que c'est un service qui permet d'héberger des pages web sur sa machine. On peut l'installer simplement avec :

1
sudo apt-get install apache2

Question

Assurez vous que le service apache2 est correctement en train de fonctionner.

Solution

1
$ systemctl status apache2 
2
● apache2.service - The Apache HTTP Server
3
     Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: enabled)
4
     Active: active (running) since Mon 2020-12-14 18:04:15 CET; 2s ago
5
       Docs: https://httpd.apache.org/docs/2.4/
6
    Process: 31799 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
7
   Main PID: 31810 (apache2)
8
      Tasks: 55 (limit: 9345)
9
     Memory: 17.0M
10
     CGroup: /system.slice/apache2.service
11
             ├─31810 /usr/sbin/apache2 -k start
12
             ├─31811 /usr/sbin/apache2 -k start
13
             └─31812 /usr/sbin/apache2 -k start
14

Trouver une erreur

Entrez la commande suivante, si possible sans trop l'analysez (le but est de créer une erreur)

1
sudo sed -i "s/ServerAdmin/Serverdmin/g" /etc/apache2/sites-enabled/000-default.conf

Question

Redémarrez le service, que se passe-t-il ?

Solution

Lorsque l'on redémarre le service, une erreur se présente.

1
$ systemctl restart apache2                                                           
2
Job for apache2.service failed because the control process exited with error code.
3
See "systemctl status apache2.service" and "journalctl -xe" for details.
4

On remarque en effet que le service est désormais failed.

1
$ systemctl status apache2  
2
● apache2.service - The Apache HTTP Server
3
     Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: enabled)
4
     Active: failed (Result: exit-code) since Mon 2020-12-14 18:09:36 CET; 35s ago
5
       Docs: https://httpd.apache.org/docs/2.4/
6
    Process: 32020 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
7

Question

Comment trouver et corriger l'erreur ? (sans regarder la commande qui l'a introduite)

Indice

Les logs du service doivent indiquer l'erreur exacte.

Solution

On peut commencer par analysez les logs du service.

1
$ journalctl -u apache2                    
2
déc. 14 18:09:36 europa systemd[1]: Starting The Apache HTTP Server...
3
déc. 14 18:09:36 europa apachectl[32023]: AH00526: Syntax error on line 11 of /etc/apache2/sites-enabled/000-default.conf:
4
déc. 14 18:09:36 europa apachectl[32023]: Invalid command 'Serverdmin', perhaps misspelled or defined by a module not included in the server configuration
5
déc. 14 18:09:36 europa apachectl[32020]: Action 'start' failed.
6
déc. 14 18:09:36 europa apachectl[32020]: The Apache error log may have more information.
7
déc. 14 18:09:36 europa systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
8
déc. 14 18:09:36 europa systemd[1]: apache2.service: Failed with result 'exit-code'.
9
déc. 14 18:09:36 europa systemd[1]: Failed to start The Apache HTTP Server.

Un des message indique une erreur de syntaxe dans le fichier /etc/apache2/sites-enabled/000-default.conf à la ligne 11, et le message suivant précise que le terme "Serverdmin" n'est pas correct.

En lisant la documentation de Apache, ou par simple déduction, on se rend compte qu'il faut modifier ce fichier pour indiquer "ServerAdmin". On peut ensuite démarrer le service sans soucis.

1
$ systemctl start apache2                              
2
$ systemctl status apache2
3
● apache2.service - The Apache HTTP Server
4
     Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: enabled)
5
     Active: active (running) since Mon 2020-12-14 18:15:09 CET; 4s ago
6
       Docs: https://httpd.apache.org/docs/2.4/
7
    Process: 32379 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
8
   Main PID: 32383 (apache2)
9
      Tasks: 55 (limit: 9345)
10
     Memory: 14.6M
11
     CGroup: /system.slice/apache2.service
12
             ├─32383 /usr/sbin/apache2 -k start
13
             ├─32384 /usr/sbin/apache2 -k start
14
             └─32385 /usr/sbin/apache2 -k start
15
16
déc. 14 18:15:09 europa systemd[1]: Starting The Apache HTTP Server...
17
déc. 14 18:15:09 europa systemd[1]: Started The Apache HTTP Server.