Ressources informatiques

Ressources informatiques

Ressources informatiques

Installer un serveur Web (LAMP)

Serveur Apache Module php Serveur MariaDB Transférer son site Web HTTPS

Installer le serveur Apache (Serveur Web)

Documentation : Apache HTTP Server Documentation

Installer

adminX@serveurX:~$ sudo apt update
adminX@serveurX:~$ sudo apt install apache2

Valider l'installation

Vérifier que le processus est démarré
adminX@serveurX:~$  ps -e | grep -E '(apache|PID)'
    PID TTY          TIME CMD
   1780 ?        00:00:00 apache2
   1782 ?        00:00:00 apache2
   1783 ?        00:00:00 apache2
Vérifier que le port utilisé par Apache (80 par défaut) est ouvert

Commande ss : another utility to investigate sockets
Options :

adminX@serveurX:~$ ss -lnt sport = :80
State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process
LISTEN  0       511                  *:80                  *:*

Le port 80 accepte les connexions IPv4 et IPv6.

Vérifier l'état du serveur
adminX@serveurX:~$ sudo systemctl status apache2
 apache2.service - The Apache HTTP Server
...
   Active: active (running) ...
...
................ raspberrypi systemd[1]: Starting The Apache HTTP Server...
................ raspberrypi apachectl[1319]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
................ raspberrypi systemd[1]: Started The Apache HTTP Server.

La commande précédente indique que le serveur est démarré mais que son nom n'a pas pu être déterminé. On doit affecter la directive ServerName dans le fichier /etc/apache2/apache2.conf après en avoir fait une sauvegarde.

Sauvegarder la configuration initiale
adminX@serveurX:~$ sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.origin
Modifier /etc/apache2/apache2.conf

A l'aide de la commande ci-dessous ajoutez la directive ServerName suivie du nom FQDN de votre serveur à la fin du fichier /etc/apache2/apache2.conf. Exemple :

adminX@serveurWebX:~$ echo "ServerName serveurX.x.lan" | sudo tee -a /etc/apache2/apache2.conf

Visualisez le résultat :

adminX@serveurX:~$ tail -1 /etc/apache2/apache2.conf
ServerName serveurX.x.lan
Redémarrer Apache et vérifiez de l'état du serveur
adminX@serveurX:~$ sudo systemctl restart apache2
adminX@serveurX:~$ sudo systemctl status apache2
 apache2.service - The Apache HTTP Server
...
   Active: active (running) ...
...
................ raspberrypi systemd[1]: Starting The Apache HTTP Server...
................ raspberrypi systemd[1]: Started The Apache HTTP Server.
Tester

Dans un navigateur, saisissez l'adresse IP de votre RPI, la page par défaut ci-dessous doit apparaître :

Installer Apache

Les pages du site Web se trouvent dans le répertoire /var/www/html.

Après avoir sauvegardé la page par défaut index.html, créez la page index.html ci-dessous :

adminX@serveurX:~$ sudo  mv /var/www/html/index.html /var/www/html/indexDefault.html
adminX@serveurX:~$ sudo nano /var/www/html/index.html
adminX@serveurX:~$ cat /var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"> 
<title>Ma première page</title> 
</head>
<body> 
<p>Bonjour en HTML</p> 
</body> 
</html>
Apache : bonjour en HTML

Installer le module PHP

Installer

J'installe le module php-mysql car il est utile si on souhaite communiquer avec une base MySQL ce qui est la plupart du temps le cas.

adminX@serveurX:~$ sudo apt install php libapache2-mod-php php-mysql

Recharger la configuration

adminX@serveurX:~$ sudo service apache2 restart

Valider l'installation

Tester
Supprimez la page html précédemment créée
adminX@serveurX:~$ sudo rm /var/www/html/index.html
Créez la page index.php ci-dessous :
adminX@serveurX:~$ sudo nano /var/www/html/index.php
adminX@serveurX:~$ cat /var/www/html/index.php
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Ma première page</title>
</head> 
<body> 
<?php 
echo "<p>Bonjour en PHP</p>\n";
?> 
</body>

Pour que la page se charge automatiquement en entrant l'URL du site, il faut supprimer la page index.html.

adminX@serveurX:~$ sudo rm /var/www/html/index.html

Résultat :

bonjour en PHP

Transférer son site Web

Créer un groupe pour les administrateurs du site

Créer le groupe webMasterGroup
adminX@serveurX:~$ sudo groupadd webMasterGroup
Vérifier en consultant le fichier des groupes : /etc/group
adminX@serveurX:~$ cat /etc/group | grep webMasterGroup
webMasterGroup:x:1011:

Créer un utilisateur webMasterX membre du groupe webMasterGroup et lui attribuer un mot de passe

Créer l'utilisateur

J'attribue à l'utilisateur le répertoire de travail /var/www/html qui est la racine des sites Web utilisé par Apache.

adminX@serveurX:~$ sudo useradd webMasterX -g webMasterGroup -d /var/www/html
Verifier la création de l'utilisateur
adminX@serveurX:~$ id webMasterX
uid=1007(webMasterX) gid=1011(webMasterGroup) groupes=1011(webMasterGroup)
adminX@serveurX:~$ cat /etc/passwd | grep webMasterX
webMasterX:x:1007:1011::/var/www/html:/bin/sh
Attribuer un mot de passe à l'utilisateur webMasterX
adminX@serveurX:~$ sudo passwd webMasterX

Changer les droits sur le répertoire /var/www/html

Droits avant modification
adminX@serveurX:~$ ls -l /var/www/
total 4
drwxr-xr-x 2 root root 4096 oct.  24 20:56 html
Attribuer le répertoire /var/www/html(et les sous répertoires) au groupe webMaster
adminX@serveurX:~$ sudo chgrp -R webMasterGroup /var/www/html
Donner le droit d'écriture aux membres du groupe webMasterGroup
adminX@serveurX:~$ sudo chmod g+w /var/www/html
Vérifier l'attribution des droits
adminX@serveurX:~$  ls -l /var/www/ | grep html
drwxrwxr-x 2 root webMasterGroup 4096 17 oct.  09:29 html

Modifier le comportement de connexion ssh pour l’utilisateur webMasterX

Sauvegardez le fichier de configuration du serveur ssh
adminX@serveurX:~$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.origin
Créez un fichier de configuration sans commentaires et sans lignes vides
adminX@serveurX:~$ sudo  grep -E -v '^(#|$)' /etc/ssh/sshd_config.origin > sshd_config
adminX@serveurX:~$ sudo cp sshd_config  /etc/ssh/sshd_config
Modifier le comportement de connexion ssh pour l’utilisateur webMasterX
adminX@serveurX:~$ sudo nano /etc/ssh/sshd_config
adminX@serveurX:~$ sudo cat /etc/ssh/sshd_config
Include /etc/ssh/sshd_config.d/*.conf
KbdInteractiveAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
#Subsystem      sftp    /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp


Match User webMasterX
        X11Forwarding no
        AllowTcpForwarding no
        ChrootDirectory /var/www
        ForceCommand internal-sftp
Redémarrez le serveur ssh
adminX@serveurX:~$ sudo systemctl restart sshd

A présent l’utilisateur webMasterX :

Tester en transférant son site Web

Résultat :

Exemple de site Web en PHP en lien avec une base de données :

Site Web PHP MySQL

Passer le site en HTTPS

Nécessite de se connecter : article réservé aux étudiants du BTS CIEL du Lycée Edmond Michelet à Arpajon