You must be registered for see images attach
Je ne ferai pas la partie sécurisation du serveur, mais uniquement l'installation.
Pour réaliser ce tutoriel, il vous faudra évidemment un serveur (dans mon cas, sous Ubuntu 22.04) et éventuellement un ou plusieurs noms de domaine.
You must be registered for see images attach
Premièrement, nous allons mettre à jour la liste des paquets disponibles.
Code:
sudo apt-get update
Ensuite, nous allons mettre à jour nos paquets (cette mise à jour peut durer plusieurs minutes).
Code:
sudo apt-get upgrade
Une fois notre serveur à jour, nous allons procéder à l'installation d'Apache.
Code:
sudo apt install apache2
Pour la réalisation de ce tutoriel, j'ai loué un nom de domaine (paradisergfr.eu). De votre côté, il faudra remplacer par vos informations dans la suite du tutoriel.
Nous allons maintenant créer le répertoire dans lequel nous déposerons les fichiers de notre site (PHP, HTML, CSS, JS…).
Code:
sudo mkdir -p /var/www/paradisergfr.eu/public_html
Si nous nous connectons avec FileZilla à notre serveur, nous pouvons voir que notre répertoire s'est correctement créé.
You must be registered for see images attach
Pour éviter tout problème de droits, nous allons modifier les autorisations sur notre dossier /var/www.
Code:
sudo chmod -R 755 /var/www
Maintenant, nous allons créer un fichier index.html pour vérifier que tout fonctionne bien. Vous êtes libre de mettre ce que vous voulez dans ce fichier. Comme nous n'avons pas encore installé PHP, il est important de créer un fichier HTML.
HTML:
<html>
<head>
<title>Bienvenue !</title>
</head>
<body>
<h1>Cela fonctionne correctement !</h1>
</body>
</html>
Une fois le fichier créé, nous allons le placer dans notre répertoire public_html.
Maintenant, il va falloir créer notre fichier d'hôte virtuel afin que les requêtes vers notre serveur soient redirigées vers notre dossier public_html.
Les fichiers d’hôte virtuel sont les fichiers qui spécifient la configuration réelle de nos hôtes virtuels et dictent comment le serveur web Apache répondra aux diverses requêtes de domaine.
Lors de l'installation d'Apache, un fichier d'hôte virtuel par défaut est créé. Vous pouvez le retrouver dans le répertoire suivant : /etc/apache2/sites-available/000-default.conf. Ce que nous allons donc faire, c'est copier ce fichier pour créer le nôtre. Vous pouvez le faire directement depuis FileZilla en le prenant sur votre poste, ou à l'aide de cette commande :
Code:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/paradisergfr.eu.conf
Pour la modification du fichier (car oui, il faut le modifier), vous pouvez le faire depuis votre ordinateur, soit avec Nano (ou un autre éditeur de texte de votre serveur). Pour ma part, je récupère le fichier sur mon poste. Une fois les commentaires supprimés (ligne commençant par #), vous devriez avoir quelque chose comme ça :
You must be registered for see images attach
En premier lieu, il faut modifier la valeur de ServerAdmin, qui est une adresse e-mail sur laquelle l'administrateur du site (logiquement, vous) peut recevoir des mails.
Ensuite, on rajoute deux directives. La première, ServerName, correspond au domaine de base qui doit correspondre à cette définition d'hôte virtuel ; il s'agira de votre domaine. La seconde, appelée ServeurAlias, définit d'autres noms qui doivent correspondre comme s'ils étaient le nom de base. C'est utile pour faire correspondre les hôtes que vous avez définis, comme www.
Pour finir, il faut modifier DocumentRoot pour mettre le répertoire de votre dossier public_html créé précédemment.
Voici, pour mon exemple, le fichier VirtualHost :
Code:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName paradisergfr.eu
ServerAlias www.paradisergfr.eu
DocumentRoot /var/www/paradisergfr.eu/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Une fois que notre fichier est en place sur notre serveur, il va falloir l'activer en utilisant cette commande :
Code:
sudo a2ensite paradisergfr.eu.conf
Avec cette commande, vous pouvez aussi désactiver la configuration par défaut d'Apache :
Code:
sudo a2dissite 000-default.conf
Dans votre console, vous voyez qu'il est indiqué qu'il faut redémarrer Apache pour que les modifications soient prises en compte.
Code:
sudo systemctl restart apache2
Pour finir, depuis l'hébergeur (dans mon cas, OuiHeberg) où vous louez votre nom de domaine, il va falloir modifier les DNS afin de faire pointer votre domaine vers votre serveur Apache.
Normalement, vous devriez avoir une (ou des) entrées A pointant vers une adresse IP qui correspond à une page de votre hébergeur. Nous allons modifier ces entrées pour pointer vers l'adresse IP de votre serveur. Le processus de modification ou d'ajout peut varier en fonction de votre hébergeur, je vous laisse chercher de votre côté.
You must be registered for see images attach
Félicitations ! Votre serveur Apache est correctement installé et votre nom de domaine est bien redirigé vers le serveur !
You must be registered for see images attach
Vous pouvez maintenant effectuer cette opération pour chacun de vos noms de domaine. Un serveur peut héberger plusieurs sites
You must be registered for see images attach
Commençons par installer MySQL Server. Cette installation ne vous demandera aucun mot de passe ni de modifications de configuration. Veuillez noter que cette installation de MySQL n'est pas sécurisée.
Code:
sudo apt-get install mysql-server mysql-client mysql-common
Cependant, il existe un script pour sécuriser l'installation. À travers une série d'invites, vous pourrez effectuer des changements aux options de sécurité de MySQL.
Code:
sudo mysql_secure_installation
La première question vous demande de choisir le mot de passe pour l'utilisateur root (MySQL).
La seconde question vous demande si vous voulez activer la validation des mots de passe afin qu'ils soient suffisamment sécurisés.
La troisième question vous demande si vous voulez retirer les accès anonymes.
La quatrième question vous demande si vous voulez retirer l'accès root distant.
La cinquième question vous demande si vous voulez retirer la base 'test' et ses accès.
La dernière question vous demande si vous voulez mettre à jour les privilèges suite à vos modifications.
Vous pouvez maintenant tester la connexion en utilisant cette commande.
Code:
mysql -ulogin -pmotdepasse
En remplaçant ces informations par ce que vous avez défini (le "-u" pour l'utilisateur et "-p" pour le mot de passe doivent être devant vos informations).
Vous devriez tomber sur la console SQL. (Commande pour en sortir : exit)
You must be registered for see images attach
Maintenant que votre serveur SQL est installé, pour plus de visibilité, nous allons procéder à l'installation de PHPMyAdmin.
Code:
sudo apt install phpmyadmin
Lors de l'installation, il vous sera demandé de choisir un mot de passe pour l'utilisateur MySQL phpmyadmin, d'indiquer le mot de passe que vous avez précédemment choisi pour l'utilisateur root ainsi que le type de serveur que vous utilisez (dans notre cas, Apache2).
Une fois que l'installation est terminée, si vous vous rendez à l'adresse suivant VOTRESITE/phpmyadmin, vous devriez avoir la page de connexion à PHPMyAdmin. (VOTRESITE est bien sûr à remplacer par votre domaine)
You must be registered for see images attach
Vous pouvez donc vous connecter avec vos identifiants et accéder à l'interface de PHPMyAdmin.
Le problème est que l'accès à votre PHPMyAdmin est configuré par défaut, c'est-à-dire que l'URL /phpmyadmin est la première adresse qu'une personne mal intentionnée va tester pour accéder à votre base de données.
Ce que nous allons donc faire, c'est modifier l'alias de la page d'accès. Pour cela, nous allons récupérer (ou éditer directement) le fichier de configuration /etc/phpmyadmin/apache.conf.
Dans votre fichier, vous aurez au début l'alias d'accès :
Alias /phpmyadmin /usr/share/phpmyadmin
Il faut donc modifier "/phpmyadmin" par ce que vous voulez. Pour ma part, je vais mettre "/database" (je ne vous recommande pas non plus /database).
Une fois votre fichier mis à jour, il va falloir recharger la configuration d'Apache avec cette commande :
Code:
sudo systemctl reload apache2
Si vous retentez d'accéder à votre page "/phpmyadmin", elle ne devrait plus fonctionner, mais l'adresse "/database" devrait fonctionner normalement.
Si vous souhaitez avoir plus de sécurité sur votre page PHPMyAdmin, vous pouvez configurer un .htaccess ainsi qu'un .htpasswd (ceci est recommandé).
Pour ce faire, nous allons à nouveau modifier notre fichier Apache.conf pour ajouter la directive " AllowOverride All ".
You must be registered for see images attach
Nous allons donc créer un fichier .htaccess basique. Vous pouvez bien sûr y mettre ce que vous souhaitez, comme par exemple un blocage sur toutes les adresses IP sauf la vôtre, etc.
Code:
AuthType Basic
AuthName "Accès restreint"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Nous allons déposer notre fichier .htaccess dans le dossier /usr/share/phpmyadmin.
Maintenant, il ne nous reste plus qu'à créer notre fichier .htpasswd.
Code:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd utilisateur
Il faut bien entendu remplacer "utilisateur" par le nom d'utilisateur de votre choix. Ensuite, saisissez votre mot de passe et validez.
Redémarrez ensuite votre service Apache, puis en vous rendant sur votre page PHPMyAdmin, vous devriez maintenant être invité à fournir les identifiants :
You must be registered for see images attach
Pour finir, on va procéder à l'installation de PHP avec la commande suivante.
Code:
sudo apt-get install php
Maintenant, est-ce que cela fonctionne ? (J'espère bien)
Je vais donc créer un fichier config.php pour établir la connexion à ma base de données. (J'ai préalablement créer une base de données tutorielrgfr)
PHP:
<?php
session_start();
$BDD_hote = 'localhost';
$BDD_bd = 'tutorielrgfr';
$BDD_utilisateur = 'root';
$BDD_mot_passe = '';
try{
$bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_bd, $BDD_utilisateur, $BDD_mot_passe);
$bdd->exec("SET CHARACTER SET utf8mb4");
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo 'Erreur : '.$e->getMessage();
echo 'N° : '.$e->getCode();
}
ini_set("dislay_errors",1);
error_reporting(0);
Voici le contenu de ma table "utilisateurs" :
You must be registered for see images attach
Dans ma page index.php, je vais essayer de récupérer ses informations pour les afficher. Voici son contenu :
PHP:
<?php
require_once('config.php');
$id = 1;
$query = "SELECT * FROM utilisateurs WHERE id_utilisateur = :id";
$statement = $bdd->prepare($query);
$statement->execute(array(
":id" => $id
));
$resultat = $statement->fetch();
$pseudo = $resultat['pseudo'];
echo "Bienvenue à $pseudo !";
Maintenant, voici le résultat : comme on peut le voir, PHP fonctionne correctement, et notre base de données aussi.
You must be registered for see images attach
You must be registered for see images attach
Code:
sudo apt install certbot python3-certbot-apache python3-certbot-nginx
Avant de faire la demande pour le certificat SSL, vous devez arrêter Apache sur votre serveur.
Code:
sudo systemctl stop apache2
Maintenant, vous pouvez faire la demande de certificat. (les URL sont bien sur à adapter).
Code:
sudo certbot certonly -d paradisergfr.eu -d www.paradisergfr.eu
Lorsqu'il vous demande, veuillez choisir Apache (choix 1), puis saisir votre adresse e-mail. L'adresse e-mail sert à vous envoyer des mails quand il faudra renouveler votre certificat, donc il est recommandé d'en mettre une valide.
Ensuite, acceptez les conditions d'utilisation (en appuyant sur

You must be registered for see images attach
Maintenant, nous allons installer les modules SSL et rewrite et redémarrer Apache.
Code:
a2enmod ssl
a2enmod rewrite
service apache2 restart
En exécutant la commande apachectl -M vous devriez maintenant voir les modules SSL et rewrite apparaître..
You must be registered for see images attach
Vous vous souvenez tout à l'heure ? On avait créé un fichier d'hôte virtuel ? Il va falloir le modifier, cette fois-ci il sera un peu plus important.
Pour commencer, vos certificats SSL générés se trouvent ici : /etc/letsencrypt/live puis dans le dossier qui correspond à votre domaine.
Voici le fichier qui met en place certificat SSL, et qui redirige les requêtes en HTTP redirige vers HTTPS. Il faut bien sûr le modifier avec vos informations.
Pour information, le port 443 est le HTTPS et le 80 HTTP.
Code:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin [email protected]
ServerName paradisergfr.eu
ServerAlias www.paradisergfr.eu
DocumentRoot /var/www/paradisergfr.eu/public_html
<Directory />
Require all denied
Options -Indexes -Includes -ExecCGI -FollowSymlinks
</Directory>
<Directory /var/www/paradisergfr.eu/public_html>
Require all granted
Options -Indexes -Includes -ExecCGI +FollowSymlinks
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/paradisergfr.eu/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/paradisergfr.eu/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
<VirtualHost *:80>
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.paradisergfr.eu [OR]
RewriteCond %{SERVER_NAME} =paradisergfr.eu
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
ServerAdmin [email protected]
ServerName paradisergfr.eu
ServerAlias www.paradisergfr.eu
DocumentRoot /var/www/paradisergfr.eu/public_html
<Directory />
Require all denied
Options -Indexes -Includes -ExecCGI -FollowSymlinks
</Directory>
<Directory /var/www/paradisergfr.eu/public_html>
Require all granted
Options -Indexes -Includes -ExecCGI +FollowSymlinks
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Pour rappel, l'emplacement où doit se trouver le fichier est : /etc/apache2/sites-available. Ensuite, vous devez redémarrer (encore) Apache.
Code:
service apache2 restart
Si vous avez tout bien fait, lorsque vous vous rendez sur votre site, vous devriez maintenant être en HTTPS ! Vous serez également automatiquement redirigé vers HTTPS si vous saisissez http://.
You must be registered for see images attach
Vous avez maintenant les bases pour transformer un serveur Linux en serveur Web. Cependant, je vous recommande vivement de mettre en place un peu de sécurité !
Si besoin, je reste disponible

Correction et reformulation des phrases : ChatGPT