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 :
sudo apt-get install apache2
Assurez vous que le service apache2
est correctement en train de fonctionner.
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2020-12-14 18:04:15 CET; 2s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 31799 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 31810 (apache2)
Tasks: 55 (limit: 9345)
Memory: 17.0M
CGroup: /system.slice/apache2.service
├─31810 /usr/sbin/apache2 -k start
├─31811 /usr/sbin/apache2 -k start
└─31812 /usr/sbin/apache2 -k start
Trouver une erreur
Entrez la commande suivante, si possible sans trop l'analysez (le but est de créer une erreur)
sudo sed -i "s/ServerAdmin/Serverdmin/g" /etc/apache2/sites-enabled/000-default.conf
Redémarrez le service, que se passe-t-il ?
Lorsque l'on redémarre le service, une erreur se présente.
$ systemctl restart apache2
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
On remarque en effet que le service est désormais failed
.
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2020-12-14 18:09:36 CET; 35s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 32020 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
Comment trouver et corriger l'erreur ? (sans regarder la commande qui l'a introduite)
Les logs du service doivent indiquer l'erreur exacte.
On peut commencer par analysez les logs du service.
$ journalctl -u apache2
déc. 14 18:09:36 europa systemd[1]: Starting The Apache HTTP Server...
déc. 14 18:09:36 europa apachectl[32023]: AH00526: Syntax error on line 11 of /etc/apache2/sites-enabled/000-default.conf:
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
déc. 14 18:09:36 europa apachectl[32020]: Action 'start' failed.
déc. 14 18:09:36 europa apachectl[32020]: The Apache error log may have more information.
déc. 14 18:09:36 europa systemd[1]: apache2.service: Control process exited, code=exited, status=1/FAILURE
déc. 14 18:09:36 europa systemd[1]: apache2.service: Failed with result 'exit-code'.
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.
$ systemctl start apache2
$ systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2020-12-14 18:15:09 CET; 4s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 32379 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 32383 (apache2)
Tasks: 55 (limit: 9345)
Memory: 14.6M
CGroup: /system.slice/apache2.service
├─32383 /usr/sbin/apache2 -k start
├─32384 /usr/sbin/apache2 -k start
└─32385 /usr/sbin/apache2 -k start
déc. 14 18:15:09 europa systemd[1]: Starting The Apache HTTP Server...
déc. 14 18:15:09 europa systemd[1]: Started The Apache HTTP Server.
Auto-évaluation
Auto-évaluez votre capacité à répondre correctement aux questions de ce défi (sur une échelle de 1 à 4) :
Je ne sais répondre à aucune question (ou presque)
Je sais répondre à moins de la moitié des questions
Je sais répondre à plus de la moitié des questions
Je sais répondre à toutes les questions (ou presque)
Auto-évaluez votre capacité à répondre correctement aux questions de ce défi (sur une échelle de 1 à 4) :
Je ne sais répondre à aucune question (ou presque)
Je sais répondre à moins de la moitié des questions
Je sais répondre à plus de la moitié des questions
Je sais répondre à toutes les questions (ou presque)