Mise en œuvre d'un serveur LAMP (Linux, Apache, MySQL, PHP)
Un serveur LAMP (Linux, Apache, MySQL, PHP) est une pile logicielle courante pour héberger des sites web dynamiques. Cette activité présente l'installation et la configuration complète d'un tel serveur sur Debian.
Connexion au serveur depuis la machine cliente en ssh:
ssh administrateur@192.168.1.10
On modifie le hostname en debian-lamp :
sudo nano /etc/hostname
De memes pour le fichier hosts
sudo nano /etc/hosts
qui doit au final ressembler à ceci :
127.0.0.1 localhost 127.0.1.1 debian-lamp # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Il faut à ce point redémarrer le serveur :
sudo reboot
le redémarrage du serveur a coupé la session ssh et rendu la main du terminal à notre VM debian-gui (cliente) ; profitons-en pour lancer une mise à jour et installer des outils wget, curl et dnsutils :
sudo apt update && sudo apt upgrade && sudo apt -y install curl wget dnsutils
Puis on se reconnecte au serveur fraîchement relancé :
ssh pascal@192.168.1.10
On lance une mise à jour et l'installation des utilitaires wget et tree :
sudo apt update && sudo apt upgrade && sudo apt -y install wget tree
Sur notre serveur tout neuf, on installe tout simplement apache avec :
sudo apt install apache2
On peut dès lors tester le fonctionnement depuis le navigateur de la machine GUI :
Configuration type :
curl -I 192.168.1.10
On peut obtenir l’état du service apache2 avec cette commande habituelle (depuis le terminal connecté au serveur) :
systemctl status apache2
Pour arrêter le service :
sudo systemctl stop apache2
On voit alors qu’il ne répond plus (si on rafraichit la page web depuis le navigateur) :
Vérifiez aussi ce que donne la vérification du statut. Relaçons le service :
sudo systemctl restart apache2
L’installation d'Apache2 vient avec une configuration de base, qui s’appuie sur la structure du répertoire /etc/apache2, dont on peut voir l’arborescence au premier niveau en tapant cette commande :
tree -L 1 /etc/apache2
Ce qui donne :
/etc/apache2 ├── apache2.conf ├── conf-available ├── conf-enabled ├── envvars ├── magic ├── mods-available ├── mods-enabled ├── ports.conf ├── sites-available └── sites-enabled
Le fichier de configuration principal est /etc/apache2/apache2.conf, dont on affiche le contenu ci-dessous. A l’aide de grep, on supprime de l’affichage les lignes de commentaire (les lignes qui commencent par le caractère #) :
cat /etc/apache2/apache2.conf | grep ^[^#]
Nous obtenons ::
DefaultRuntimeDir ${APACHE_RUN_DIR}
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
Options FollowSymLinks
AllowOverride None
Require all denied
AllowOverride None
Require all granted
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
AccessFileName .htaccess
Require all denied
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
La page d’accueil par défaut post-installation nous invite à modifier le fichier /var/www/html/index.html :
On peut dès lors tester le fonctionnement depuis le navigateur de la machine GUI :
D'abord, on se rend dans le répertoire :
cd /etc/apache2/sites-enabled
On liste les fichiers, et on voit le lien symbolique de 000-default.conf :
ls -lht
Regardons son contenu, en supprimant les commentaires (grâce à l'outil grep) :
cat 000-default.conf | grep -v ^[[:space:]]*#
Ce qui donne :
VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
VirtualHost
Rendez-vous dans le répertoire racine (root) du virtualhost : /var/www/html
cd /var/www/html
On peut voir que le fichier index.html appartient à root :
ls -l
Pour le modifier, ne donc pas oublier le sudo :
sudo nano index.html
Pour créer un premier site web spécifique, on va configurer un nouveau serveur virtuel.
Créons donc notre fichier de configuration virtualhost :
sudo nano /etc/apache2/sites-available/example.com.conf
Qui contiendra le texte suivant :
VirtualHost *:80
ServerName example.com
ServerAlias www.example.com
DocumentRoot "/var/www/example"
Directory "/var/www/example"
Options +FollowSymLinks
AllowOverride all
Require all granted
/Directory
ErrorLog /var/log/apache2/error.example.com.log
CustomLog /var/log/apache2/access.example.com.log combined
VirtualHost
Le serveur LAMP est maintenant opérationnel. Vous pouvez y déployer des applications web en PHP et gérer les bases de données avec MySQL. Cette configuration de base peut être enrichie avec des modules supplémentaires selon les besoins.