Installer un serveur LAMP (Linux, Apache, MySQL, PHP)
Installer un serveur LAMP (Linux, Apache, MySQL, PHP)
Présentation
LAMP est un acronyme désignant un ensemble de logiciels libres permettant de construire des serveurs de sites web. Nous allons voir aujourd'hui la mise en place de ce type de serveur, même si vous n'êtes pas une lumière.
Prérequis
Pour réaliser un véritable serveur Web, il vous faudra une machine ou un serveur avec le système d'exploitation Linux (ici Debian 10). Vous pouvez aussi utiliser une machine virtuelle. Ce tutoriel est conçu pour un serveur VPS OVH avec un nom de domaine. Pour faciliter les manipulations, nous utiliserons MobaXterm. Connectez-vous en SSH avec un utilisateur ayant les droits administrateur, ou utilisez directement le terminal si vous êtes sur une VM.
set @my_var = 'foo';
set @my_other_var = 'bar';
(out)
CREATE TABLE people (
(con)first_name VARCHAR(30) NOT NULL,
(con)last_name VARCHAR(30) NOT NULL
(con));
(out)Query OK, 0 rows affected (0.09 sec)
(out)
insert into people
(con)values ('John', 'Doe');
(out)Query OK, 1 row affected (0.02 sec)
(out)
select *
(con)from people
(con)order by last_name;
(out)+------------+-----------+
(out)| first_name | last_name |
(out)+------------+-----------+
(out)| John | Doe |
(out)+------------+-----------+
(out)1 row in set (0.00 sec)
/
|-- test/
| `-- ok.txt
Pour vous simplifier la tâche, voici un aperçu des dossiers importants (TreeView). Certains fichiers ou dossiers peuvent ne pas encore exister sur votre système fraîchement installé.
/
|-- home/
| `-- user
|-- etc/
| |-- apache2/
| | |-- sites-enabled/
| | `-- sites-available/
| | |-- default-ssl.conf
| | |-- 000-default.conf
| | `-- 001-myDomain.conf
| `-- letsencrypt/
| `-- live/
| `-- myDomain/
| |-- cert.pem
| |-- chain.pem
| |-- fullchain.pem
| `-- privkey.pem
`-- var/
`-- www/
|-- html/
| `-- index.html
`-- myDomain/
`-- index.php
Installation
La première chose à faire sur un système fraîchement installé est de le mettre à jour :
sudo apt update
sudo apt upgrade
Ensuite, installez les logiciels et modules nécessaires :
sudo apt install php
sudo apt install php-mysql php-json php-xml php-curl php-intl php-mbstring php-gd php-imap
sudo apt install apache2
sudo apt install libapache2-mod-php
sudo apt install mariadb-server
sudo apt install certbot
sudo apt install php
sudo apt install php-mysql php-json php-xml php-curl php-intl php-mbstring php-gd php-imap
sudo apt install apache2
sudo apt install libapache2-mod-php
sudo apt install mariadb-server
sudo apt install certbot
sudo apt install php
sudo apt install php-mysql php-json php-xml php-curl php-intl php-mbstring php-gd php-imap
sudo apt install apache2
sudo apt install libapache2-mod-php
sudo apt install mariadb-server
sudo apt install certbot
sudo apt install php
sudo apt install php-mysql php-json php-xml php-curl php-intl php-mbstring php-gd php-imap
sudo apt install apache2
sudo apt install libapache2-mod-php
sudo apt install mariadb-server
sudo apt install certbot
sudo apt install php
sudo apt install php-mysql php-json php-xml php-curl php-intl php-mbstring php-gd php-imap
sudo apt install apache2
sudo apt install libapache2-mod-php
sudo apt install mariadb-server
sudo apt install certbot
sudo apt install php
sudo apt install php-mysql php-json php-xml php-curl php-intl php-mbstring php-gd php-imap
sudo apt install apache2
sudo apt install libapache2-mod-php
sudo apt install mariadb-server
sudo apt install certbot
sudo apt install php
sudo apt install php-mysql php-json php-xml php-curl php-intl php-mbstring php-gd php-imap
sudo apt install apache2
sudo apt install libapache2-mod-php
sudo apt install mariadb-server
sudo apt install certbot
php: installe le langage PHP.php-mysql php-json php-xml php-curl php-intl php-mbstring php-gd php-imap: ajoute des modules PHP pour la gestion des bases de données, du JSON, XML, des requêtes HTTP, de l’internationalisation, du traitement de texte, des images, et des emails.apache2: installe le serveur web Apache2.libapache2-mod-php: permet à Apache d’exécuter du code PHP.mariadb-server: installe le serveur de base de données MariaDB (remplaçant de MySQL).certbot: outil pour obtenir et gérer des certificats SSL Let’s Encrypt.
PHP
Nous avons installé PHP et plusieurs modules pour gérer différentes fonctionnalités (connexion à une base de données, gestion du JSON, XML, etc.). Vous pouvez ajouter d'autres modules selon vos besoins, par exemple php-soap pour le protocole SOAP.
Apache2
Avant d'installer votre site web, il est utile de comprendre la structure d'Apache2. Il peut héberger plusieurs sites web grâce à des fichiers de configuration dans /etc/apache2/sites-available (pour tous les sites) et /etc/apache2/sites-enabled (pour les sites actifs).
Pour naviguer dans le dossier Apache2 :
cd /etc/apache2
Pour désactiver le site par défaut :
sudo a2dissite 000-default.conf
Pour activer ou désactiver un site :
sudo a2dissite [fichier conf du site]
sudo a2ensite [fichier conf du site]
Créez la configuration de votre site :
cd sites-available
sudo nano [myDomain].conf
Exemple de configuration pour un VirtualHost HTTP :
# Virtualhost écoutant sur le port 80
<VirtualHost *:80>
ServerName myDomain.fr
ServerAlias www.myDomain.fr
ServerAdmin webmaster@myDomain.fr
ErrorLog /var/log/apache2/myDomain.fr-error_log
TransferLog /var/log/apache2/myDomain.fr-access_log
DocumentRoot "/var/www/myDomain.fr/"
<Directory "/var/www/myDomain.fr/">
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Créez le répertoire de votre site :
cd /var/www
sudo mkdir myDomain.fr
cd myDomain.fr
sudo nano index.php
Exemple de fichier index.php :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
Activez votre site :
sudo a2ensite [myDomain].conf
SSL (HTTPS)
Pour sécuriser votre site avec HTTPS, il vous faut un nom de domaine et un certificat SSL. Nous utiliserons Let's Encrypt via Certbot.
Pour générez le certificat :
sudo certbot certonly --webroot -w /var/www/myDomain.fr/ -d myDomain.fr -d www.myDomain.fr
Notez les chemins des certificats générés, par exemple :
/etc/letsencrypt/live/myDomain.fr/fullchain.pem
/etc/letsencrypt/live/myDomain.fr/privkey.pem
Modifiez la configuration de votre site pour supporter HTTPS et rediriger HTTP vers HTTPS :
cd /etc/apache2/sites-available
sudo nano [myDomain].conf
Modifier :
<VirtualHost *:80>
ServerName myDomain.fr
ServerAlias www.myDomain.fr
Redirect permanent / https://myDomain.fr/
</VirtualHost>
<VirtualHost *:443>
ServerName myDomain.fr
ServerAlias www.myDomain.fr
DocumentRoot /var/www/myDomain.fr
<Directory /var/www/myDomain.fr>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/myDomain.fr/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/myDomain.fr/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/myDomain.fr/fullchain.pem
</VirtualHost>
Activez le module SSL et rechargez Apache :
sudo a2enmod ssl
sudo systemctl reload apache2
Pour renouveler les certificats SSL :
sudo certbot renew --apache
ou pour renouveler un certificarts :
sudo certbot certonly --force-renew -d myDomain.fr