Implémenter un serveur web Linux
Page mise à jour le 17-04-2026 à 12:38
A l'heure du très haut débit avec les offres fibre, il devient tout aussi intéressant qu'économique d'héberger soi-même ses sites Web.
Le DNS dynamique est peu coûteux, il fonctionne très bien et les box actuelles le gèrent parfaitement.
L'incontestable avantage est que vous disposerez d'un serveur dédié que vous pourrez configurer de A à Z dans la plus totale liberté.
Le DNS dynamique est peu coûteux, il fonctionne très bien et les box actuelles le gèrent parfaitement.
L'incontestable avantage est que vous disposerez d'un serveur dédié que vous pourrez configurer de A à Z dans la plus totale liberté.
1 - Prérequis et conventions
Prérequis matériel
Serveur Intel Core i3 - RAM 2Go - HDD 500Go - Ethernet Gigabit
CDROM ou clé USB d’installation de la dernière version de Debian (la version utilisée ici est la 11.6.0 Bullseye)
Liaison Internet à haut débit (fibre fortement conseillée)
Conventions
Nous considérons le réseau local configuré comme suit :
Il vous appartient d'adapter ces paramètres selon votre environnement.
En ce qui concerne le nom de domaine public, nous prendrons pour exemple un abonnement DNS Dynamique chez No-IP.
Le routeur, ici une LiveBox 5, devrait donc être configuré d'une façon similaire à celle-ci :
Dans la partie NAT / PAT

Dans la partie DynDNS

Administration
Nous administrerons le serveur à distance et j'utilise pour cela un poste client Microsoft doté du sous-système Windows pour Linux.
Vous trouverez ici comment installer Debian sous Windows 10 ainsi que les deux excellents outils Windows Terminal et WinSCP.
(passez cette étape si vous préférez utiliser une autre méthode).
Serveur Intel Core i3 - RAM 2Go - HDD 500Go - Ethernet Gigabit
CDROM ou clé USB d’installation de la dernière version de Debian (la version utilisée ici est la 11.6.0 Bullseye)
Liaison Internet à haut débit (fibre fortement conseillée)
Conventions
Nous considérons le réseau local configuré comme suit :
|
En ce qui concerne le nom de domaine public, nous prendrons pour exemple un abonnement DNS Dynamique chez No-IP.
Le routeur, ici une LiveBox 5, devrait donc être configuré d'une façon similaire à celle-ci :
Dans la partie NAT / PAT

Dans la partie DynDNS

Administration
Nous administrerons le serveur à distance et j'utilise pour cela un poste client Microsoft doté du sous-système Windows pour Linux.
Vous trouverez ici comment installer Debian sous Windows 10 ainsi que les deux excellents outils Windows Terminal et WinSCP.
(passez cette étape si vous préférez utiliser une autre méthode).
2 - Montage du serveur Debian
Bootez sur le support d’installation
Retirez le support d’installation et redémarrez le serveur.
(1) Utilisez un nom court mais explicite, en minuscules et sans espaces.
(2) Créez des mots de passe robustes : 12 caractères minimum, majuscules, minuscules, chiffres et caractères spéciaux.
(3) Le disque sera intégralement effacé et alloué à Debian.
(4) Créez une seule partition, car en optant pour des partitions séparées la totalité de l'espace disponible serait réservé à /home.
Or le répertoire HTTP se trouvera dans /var alors que /home restera inutilisé.
(5) Pas de bureau ni de logiciels, nous sommes sur un serveur et nous n'installons que le strict nécessaire.
| Mode d'installation | Graphical install |
| Choix de la langue | Français / France |
| Interface réseau principale | [l'interface gigabit généralement proposée par défaut] |
| Nom de machine | web-server (1) |
| Domaine | [laissez vide] |
| Mot de passe super utilisateur root | [mot de passe root] (2) |
| Nom complet du nouvel utilisateur | [votre nom complet] |
| Identifiant pour le compte utilisateur | [votre nom d'utilisateur] (1) |
| Mot de passe pour le nouvel utilisateur | [votre mot de passe] (2) |
| Méthode de partitionnement | Assisté - utiliser un disque entier (3) |
| Schéma de partitionnement | Tout dans une seule partition (4) |
| Faut-il analyser d’autres supports d’installation ? | Non |
| Pays du miroir de l’archive Debian | France |
| Miroir de l’archive Debian | deb.debian.org |
| Mandataire http | [laissez vide] |
| Souhaitez-vous participer à l’étude statistique sur l’utilisation des paquets ? | Non |
| Logiciels à installer | Aucun, décochez tout (5) |
(1) Utilisez un nom court mais explicite, en minuscules et sans espaces.
(2) Créez des mots de passe robustes : 12 caractères minimum, majuscules, minuscules, chiffres et caractères spéciaux.
(3) Le disque sera intégralement effacé et alloué à Debian.
(4) Créez une seule partition, car en optant pour des partitions séparées la totalité de l'espace disponible serait réservé à /home.
Or le répertoire HTTP se trouvera dans /var alors que /home restera inutilisé.
(5) Pas de bureau ni de logiciels, nous sommes sur un serveur et nous n'installons que le strict nécessaire.
3 - Configuration de base du serveur
Connectez-vous en local en tant que root
Installez les paquets requis pour la suite des opérations
Installez les paquets requis pour la suite des opérations
apt-get update
apt-get -y install sudo
apt-get -y install wget
apt-get -y install openssh-server
Configurez SUDO pour votre compte d'utilisateurapt-get -y install sudo
apt-get -y install wget
apt-get -y install openssh-server
nano /etc/sudoers
# User privilege specification
root ALL=(ALL :ALL) ALL
<utilisateur> ALL=(ALL :ALL) ALL
Configurez TCP/IP# User privilege specification
root ALL=(ALL :ALL) ALL
<utilisateur> ALL=(ALL :ALL) ALL
nano /etc/network/interfaces
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eno1
auto eno1
iface eno1 inet static
address 192.168.1.254
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
/etc/init.d/networking restart
Configurez SSHsource /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eno1
auto eno1
iface eno1 inet static
address 192.168.1.254
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 192.168.1.1
/etc/init.d/networking restart
nano /etc/ssh/sshd_config
# Authentication:
PermitRootLogin yes
systemctl restart sshd
Déconnectez-vous et redémarrez le serveur (facultatif mais conseillé)# Authentication:
PermitRootLogin yes
systemctl restart sshd
exit
reboot
reboot
4 - Installation et configuration des services web
Il est plus pratique de poursuivre les opérations depuis un poste client.
Initiez une connexion SSH en tant que root depuis le poste client
Créez un utilisateur MySQL disposant de tous les privilèges.
Remplacez new_user et new_password par le nom d'utilisateur et le mot de passe que vous souhaitez pour MySQL.
Placez toujours les mots de passe entre quotes et mettez un point-virgule en fin de chaque commande.
Chaque commande doit recevoir une réponse Query OK
Les commandes et chemins courants sont répertoriés en fin de ce document.
Initiez une connexion SSH en tant que root depuis le poste client
ssh root@192.168.1.254
Installez Apache
apt-get -y install apache2
Installez PHP et ses extensions
apt-get -y install php
apt-get -y install php-gd
apt-get -y install php-cgi
apt-get -y install php-mysqli
apt-get -y install php-pear
apt-get -y install php-mbstring
apt-get -y install php-php-gettext
apt-get -y install php-common
apt-get -y install php-phpseclib
apt-get -y install php-mysql
apt-get -y install libapache2-mod-php
Installez MariaDB (version libre de MySQL)apt-get -y install php-gd
apt-get -y install php-cgi
apt-get -y install php-mysqli
apt-get -y install php-pear
apt-get -y install php-mbstring
apt-get -y install php-php-gettext
apt-get -y install php-common
apt-get -y install php-phpseclib
apt-get -y install php-mysql
apt-get -y install libapache2-mod-php
apt-get -y install mariadb-server
apt-get -y install mariadb-client
Vérifiez le fonctionnement des servicesapt-get -y install mariadb-client
systemctl status apache2
systemctl status mariadb
Configurez MySQLsystemctl status mariadb
| mysql_secure_installation | |
| > Enter current password for root | tapez Enter (le mot de passe est vide par défaut) |
| > Switch to unix_socket authentication [Y/n] | N |
| > Set root password? [Y/n] | Y (définissez le mot de passe pour root) |
| > Remove anonymous users? [Y/n] | Y |
| > Disallow root login remotely? [Y/n] | Y |
| > Remove test database and access to it? [Y/n] | Y |
| > Reload privilege tables now? [Y/n] | Y |
Remplacez new_user et new_password par le nom d'utilisateur et le mot de passe que vous souhaitez pour MySQL.
Placez toujours les mots de passe entre quotes et mettez un point-virgule en fin de chaque commande.
Chaque commande doit recevoir une réponse Query OK
mysql -u root
> create user new_user@localhost identified by 'new_password';
> grant all privileges on *.* to new_user@localhost;
> flush privileges;
> show grants for new_user@localhost;
> exit
Installez et configurez phpMyAdmin> create user new_user@localhost identified by 'new_password';
> grant all privileges on *.* to new_user@localhost;
> flush privileges;
> show grants for new_user@localhost;
> exit
wget -P Downloads https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
mkdir /var/www/html/phpmyadmin
cd /root/Downloads
tar xvf phpMyAdmin-latest-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpmyadmin
cp /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php
chmod 660 /var/www/html/phpmyadmin/config.inc.php
chown -R www-data:www-data /var/www/html/phpmyadmin
systemctl restart apache2
Créez le fichier /var/www/html/phpinfo.php contenant le code suivant :mkdir /var/www/html/phpmyadmin
cd /root/Downloads
tar xvf phpMyAdmin-latest-all-languages.tar.gz --strip-components=1 -C /var/www/html/phpmyadmin
cp /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php
chmod 660 /var/www/html/phpmyadmin/config.inc.php
chown -R www-data:www-data /var/www/html/phpmyadmin
systemctl restart apache2
<?php phpinfo(); ?>
Vérifiez le fonctionnement des services depuis un navigateur
http://192.168.1.254/
http://192.168.1.254/phpinfo.php
http://192.168.1.254/phpmyadmin
Notez qu'à des fins d'administration, le répertoire phpmyadmin pourra être recopié et exploité dans les répertoires des sites.http://192.168.1.254/phpinfo.php
http://192.168.1.254/phpmyadmin
Les commandes et chemins courants sont répertoriés en fin de ce document.
5 - Mise en place d'un certificat SSL auto-signé
Bien que terme SSL soit toujours largement employé, ce protocole est devenu obsolète et il est aujourd'hui remplacé par TLS.
Un certificat auto signé est une solution gratuite et fiable sans pour autant être approuvée par une autorité de certification (CA).
Un certificat auto signé est une solution gratuite et fiable sans pour autant être approuvée par une autorité de certification (CA).
Installez les paquets requis pour la suite des opérations
dpkg --list
apt-get update
apt-get -y install openssl
apt-get -y install net-tools
Activez les modules SSLapt-get update
apt-get -y install openssl
apt-get -y install net-tools
a2enmod ssl
a2enmod headers
Pour info la commande inverse est a2dismod
a2enmod headers
Vérifiez que le serveur Apache écoute sur le port 443 (HTTPS)
Identifiez le fichier qui permet de configurer les ports en écoute et éditez celui qui correspond à Listen 80
Il s'agit généralement de /etc/apache2/ports.conf et ajoutez-lui le code qui indique à Apache d’écouter sur le port 443
Redémarrez Apache et vérifiez à nouveau
netstat -tanpu | grep "LISTEN" | grep "443"
Si aucun processus Apache n’est en écoute sur le port 443 (si la commande ne donne aucun résultat) :Identifiez le fichier qui permet de configurer les ports en écoute et éditez celui qui correspond à Listen 80
Il s'agit généralement de /etc/apache2/ports.conf et ajoutez-lui le code qui indique à Apache d’écouter sur le port 443
grep -R "Listen" /etc/apache2
nano /etc/apache2/ports.conf
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
On peut ajouter d’autres ports d’écoute HTTP sous Listen 80 (ex. Listen 8080)nano /etc/apache2/ports.conf
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Redémarrez Apache et vérifiez à nouveau
systemctl restart apache2
netstat -tanpu | grep "LISTEN" | grep "443"
tcp6 0 0 :::443 :::*  LISTEN 96371/apache2
netstat -tanpu | grep "LISTEN" | grep "443"
tcp6 0 0 :::443 :::*  LISTEN 96371/apache2
Générez le certificat auto signé dans un répertoire portant le nom du site afin de bien le différencier.
Il est important que Common Name soit le FQDN du site concerné.
server.key qui contient la clé privée à ne jamais communiquer et à sauvegarder car il n'y a pas moyen de la récupérer en cas de perte.
Elle est utilisée pour générer toute demande de signature de certificat CSR.
server.csr qui contient la clé publique et les informations de demande de certificat. Par défaut, sa durée de validité est de 1 an.
Il est important que Common Name soit le FQDN du site concerné.
mkdir /etc/ssl/site.com
openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/site.com/server.key -out /etc/ssl/site.com/server.csr
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: France
Locality Name (eg, city) []: votre_ville
Organization Name (eg, company) [Internet Widgits Pty Ltd]: votre_nom
Organizational Unit Name (eg, section) []: IT
Common Name (eg, server FQDN or YOUR name) []: site.com
Email Address []: votre_email
A challenge password []: (laisser vide)
An optional company name []: (laisser vide)
La procédure a créé deux fichiers :openssl req -new -newkey rsa:2048 -nodes -keyout /etc/ssl/site.com/server.key -out /etc/ssl/site.com/server.csr
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: France
Locality Name (eg, city) []: votre_ville
Organization Name (eg, company) [Internet Widgits Pty Ltd]: votre_nom
Organizational Unit Name (eg, section) []: IT
Common Name (eg, server FQDN or YOUR name) []: site.com
Email Address []: votre_email
A challenge password []: (laisser vide)
An optional company name []: (laisser vide)
server.key qui contient la clé privée à ne jamais communiquer et à sauvegarder car il n'y a pas moyen de la récupérer en cas de perte.
Elle est utilisée pour générer toute demande de signature de certificat CSR.
server.csr qui contient la clé publique et les informations de demande de certificat. Par défaut, sa durée de validité est de 1 an.
6 - Activation du CSR chez le registrar
Pour exemple le cas d'un DNS dynamique enregistré chez No-IP
Dans le formulaire Web du processus d'inscription de No-IP :
My Services / SSL Certificates / Add CSR

Dans le formulaire Web du processus d'inscription de No-IP :
My Services / SSL Certificates / Add CSR

Server : sélectionnez Apache 2
Enter your CSR : collez le contenu du fichier server.csr puis validez.
Fin de la procédure après avoir renseigné les champs demandés
tels que nom, prénom, téléphone, adresse et code postal.

Enter your CSR : collez le contenu du fichier server.csr puis validez.

Fin de la procédure après avoir renseigné les champs demandés
tels que nom, prénom, téléphone, adresse et code postal.

Téléchargement des certificats.
La mise à jour et la réception de l’email sont quasi instantanées.

Le cadenas apparaît maintenant fermé pour l’hôte concerné.

Téléchargez les quatre fichiers (bien que nous n'utiliserons que le fichier PEM Chain)
et placez-les dans le répertoire /etc/ssl/site.com

Attention : les fichiers PEM Chain et PEM portent la même extension (.pem)
Téléchargez tout d'abord le fichier PEM Chain et renommez-le avec l'extension .pem-chain
La mise à jour et la réception de l’email sont quasi instantanées.

Le cadenas apparaît maintenant fermé pour l’hôte concerné.

Téléchargez les quatre fichiers (bien que nous n'utiliserons que le fichier PEM Chain)
et placez-les dans le répertoire /etc/ssl/site.com

Attention : les fichiers PEM Chain et PEM portent la même extension (.pem)
Téléchargez tout d'abord le fichier PEM Chain et renommez-le avec l'extension .pem-chain
7 - Configuration des hôtes virtuels
Les hôtes virtuels sont décrits dans un fichier indiquant au serveur les routes à prendre pour atteindre les données des différents sites hébergés selon leur nom de domaine et le port utilisé.
Un chemin par défaut doit également être défini pour traiter les requêtes qui ne correspondent à aucune des entrées présentes.
Créez un fichier par défaut
Un chemin par défaut doit également être défini pour traiter les requêtes qui ne correspondent à aucune des entrées présentes.
Créez un fichier par défaut
nano /etc/apache2/sites-available/default.conf
Dans un premier temps déclarez une unique écoute HTTPS
<VirtualHost *:443>
# Active le SSL
SSLEngine On
# Active tous les protocoles (TLS v1.0, TLS v1.1, TLS v1.2 et TLS v1.3)
# et désactive SSL v2 et v3 (obsolètes et remplacés par TLS)
SSLProtocol All -SSLv3 -SSLv2
# Active les méthodes de chiffrement et désactive les méthodes de chiffrement non sécurisés
SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH
# Demande au navigateur de sélectionner une méthode de chiffrement
# en respectant l'ordre envoyée par le serveur (HIGH uniquement)
SSLHonorCipherOrder on
# Renseigne le chemin vers le certificat SSL de l'adresse à sécuriser (fichier téléchargé)
SSLCertificateFile "/etc/ssl/cmclub.ddns.net/cmclub_ddns_net.pem-chain"
# Renseigne le chemin vers la clé privée correspondant au certificat SSL de l'adresse à sécuriser
SSLCertificateKeyFile "/etc/ssl/cmclub.ddns.net/server.key"
# Renseigne le chemin vers le certificat SSL racine, puis vers le ou les certificats SSL intermédiaires
# Il est possible d’ajouter d'autres directives SSLCACertificateFile
# SSLCACertificateFile "/etc/ssl/cmclub.ddns.net/certificat-racine.cer"
# SSLCACertificateFile "/etc/ssl/cmclub.ddns.net/certificat-intermediaire.cer"
# L’utilisation de certificats racine et intermédiaires est optionnelle
# Spécifie que le serveur requiert toujours des connexions HTTPS durant 1 an
Header always set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
Activez le fichier VirtualHost# Active le SSL
SSLEngine On
# Active tous les protocoles (TLS v1.0, TLS v1.1, TLS v1.2 et TLS v1.3)
# et désactive SSL v2 et v3 (obsolètes et remplacés par TLS)
SSLProtocol All -SSLv3 -SSLv2
# Active les méthodes de chiffrement et désactive les méthodes de chiffrement non sécurisés
SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH
# Demande au navigateur de sélectionner une méthode de chiffrement
# en respectant l'ordre envoyée par le serveur (HIGH uniquement)
SSLHonorCipherOrder on
# Renseigne le chemin vers le certificat SSL de l'adresse à sécuriser (fichier téléchargé)
SSLCertificateFile "/etc/ssl/cmclub.ddns.net/cmclub_ddns_net.pem-chain"
# Renseigne le chemin vers la clé privée correspondant au certificat SSL de l'adresse à sécuriser
SSLCertificateKeyFile "/etc/ssl/cmclub.ddns.net/server.key"
# Renseigne le chemin vers le certificat SSL racine, puis vers le ou les certificats SSL intermédiaires
# Il est possible d’ajouter d'autres directives SSLCACertificateFile
# SSLCACertificateFile "/etc/ssl/cmclub.ddns.net/certificat-racine.cer"
# SSLCACertificateFile "/etc/ssl/cmclub.ddns.net/certificat-intermediaire.cer"
# L’utilisation de certificats racine et intermédiaires est optionnelle
# Spécifie que le serveur requiert toujours des connexions HTTPS durant 1 an
Header always set Strict-Transport-Security "max-age=31536000"
</VirtualHost>
a2ensite /etc/apache2/sites-available/default.conf
Pour info la commande inverse est a2dissite
Rechargez la configuration d’Apache et effectuez un test.
Vous devez obtenir le message Syntax Ok et ne tenez pas compte de l'erreur de directive globale 'ServerName'.
Vous devez obtenir le message Syntax Ok et ne tenez pas compte de l'erreur de directive globale 'ServerName'.
systemctl reload apache2
apache2ctl configtest
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
Syntax OK
Redémarrez Apacheapache2ctl configtest
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
Syntax OK
systemctl restart apache2
Rendez vous sur
www.sslshopper.com
pour vérifier le bon fonctionnement du certificat et le niveau de sécurité du site.
Cette capture est l'exemple d'un résultat correct :

Cette capture est l'exemple d'un résultat correct :

Voici à présent l'exemple commenté d'une version plus complète du fichier default.conf
Le premier <VirtualHost> est appliqué par défaut si aucun des sites ne correspond aux autres directives ServerName.
Il est judicieux d’y définir le localhost et de le placer en tête de liste.
Les <VirtualHost> suivants sont évalués et exécutés selon la correspondance de leur directive ServerName et du port d'écoute.
Dans cet exemple, site1.com reste en http (port 80) et site2.com est redirigé en https (port 443).
A retenir :
• La directive ServerName est toujours le FQDN du site.
• La directive DocumentRoot est le chemin absolu vers le répertoire du site.
• La directive Redirect permanent est une redirection permanente de type 301 (mise en cache par les robots et les navigateurs).
• Sans l'option permanent, la directive Redirect est une redirection temporaire de type 302 (à réserver pour les tests).
Plusieurs fichiers VirtualHost peuvent être créés et activés mais cela rend la gestion plus complexe.
Consultez la documentation Apache pour l'intégration d'autres directives dans le code.
Important :
• Rechargez la configuration d’Apache après chaque modification : systemctl reload apache2
• Lors de tests il peut être nécessaire d’effacer l’historique du navigateur pour confirmer le résultat.
• Veillez à ce que le fichier soit bien actif : a2ensite default.conf
Le premier <VirtualHost> est appliqué par défaut si aucun des sites ne correspond aux autres directives ServerName.
Il est judicieux d’y définir le localhost et de le placer en tête de liste.
Les <VirtualHost> suivants sont évalués et exécutés selon la correspondance de leur directive ServerName et du port d'écoute.
Dans cet exemple, site1.com reste en http (port 80) et site2.com est redirigé en https (port 443).
A retenir :
• La directive ServerName est toujours le FQDN du site.
• La directive DocumentRoot est le chemin absolu vers le répertoire du site.
• La directive Redirect permanent est une redirection permanente de type 301 (mise en cache par les robots et les navigateurs).
• Sans l'option permanent, la directive Redirect est une redirection temporaire de type 302 (à réserver pour les tests).
Plusieurs fichiers VirtualHost peuvent être créés et activés mais cela rend la gestion plus complexe.
Consultez la documentation Apache pour l'intégration d'autres directives dans le code.
Important :
• Rechargez la configuration d’Apache après chaque modification : systemctl reload apache2
• Lors de tests il peut être nécessaire d’effacer l’historique du navigateur pour confirmer le résultat.
• Veillez à ce que le fichier soit bien actif : a2ensite default.conf
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/html
# autres directives...
</VirtualHost>
<VirtualHost *:80>
ServerName site1.com
DocumentRoot /var/www/html/site1
# autres directives...
</VirtualHost>
<VirtualHost *:80>
ServerName site2.com
DocumentRoot /var/www/html/site2
Redirect permanent "/" "https://site2.com/"
# autres directives...
</VirtualHost>
<VirtualHost *:443>
ServerName site2.com
DocumentRoot /var/www/html/site2
SSLEngine On
SSLProtocol All -SSLv3 -SSLv2
SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH
SSLHonorCipherOrder on
SSLCertificateFile "/etc/ssl/site2/site2.pem-chain"
SSLCertificateKeyFile "/etc/ssl/site2/server.key"
Header always set Strict-Transport-Security "max-age=31536000"
# autres directives...
</VirtualHost>
ServerName localhost
DocumentRoot /var/www/html
# autres directives...
</VirtualHost>
<VirtualHost *:80>
ServerName site1.com
DocumentRoot /var/www/html/site1
# autres directives...
</VirtualHost>
<VirtualHost *:80>
ServerName site2.com
DocumentRoot /var/www/html/site2
Redirect permanent "/" "https://site2.com/"
# autres directives...
</VirtualHost>
<VirtualHost *:443>
ServerName site2.com
DocumentRoot /var/www/html/site2
SSLEngine On
SSLProtocol All -SSLv3 -SSLv2
SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH
SSLHonorCipherOrder on
SSLCertificateFile "/etc/ssl/site2/site2.pem-chain"
SSLCertificateKeyFile "/etc/ssl/site2/server.key"
Header always set Strict-Transport-Security "max-age=31536000"
# autres directives...
</VirtualHost>
8 - Outils d'administration
Installez les paquets additionnels
Commandes courantes
# commande man pour l'aide
apt-get install -y man-db
# gestionnaire d'instantanés
apt-get install -y timeshift
Créez les snapshots à des moments où le serveur est inactif,
les principales options de la commande sont détaillées ici
apt-get install -y man-db
# gestionnaire d'instantanés
apt-get install -y timeshift
timeshift --create --comments "Snapshot Debian" --tags O
Chemins courants| Répertoire des sites | /var/www/html/ |
| Répertoire des virtualhosts | /etc/apache2/sites-available/ |
| Fichier de configuration PHP | /etc/php/7.4/apache2/php.ini |
| Fichier de configuration TCP/IP | /etc/network/interfaces |
| Fichier de configuration DNS | /etc/resolv.conf |
| Fichier de résolution de noms | /etc/hosts |
| Fichier du nom de machine | /etc/hostname |
| Fichier de configuration SSH | /etc/ssh/sshd_config |
| Fichier de configuration SUDO | /etc/sudoers |
| Rechargement de la configuration Apache | systemctl reload apache2 |
| Redémarrage de Apache | systemctl restart apache2 |
| Redémarrage du service SSH | systemctl restart sshd |
| Redémarrage des services TCP/IP | /etc/init.d/networking restart |
| Version de Apache | apache2ctl -V |
| Version de PHP | php --version |
| Version de MariaDB | mysql -V |
| Version de Debian | cat /etc/debian_version |
| Statut de Apache | systemctl status apache2 |
| Statut de MariaDB | systemctl status mariadb |
| Statut de SSH | systemctl status ssh |
| Redémarrage du serveur | reboot |
| Arrêt du serveur | shutdown 0 |
Papy WinTux - Philippe DESLOGES - 2023-2026 - Powered by Debian - Apache 2.4.54 - PHP 7.4.33 - Last update 20-04-2026 19:05 - Page size 45 ko built in 1 ms
All trademarks, logos, images and documents on these pages belong exclusively to their respective owners.
All trademarks, logos, images and documents on these pages belong exclusively to their respective owners.
