Mise à jour : Debian 10.4 / Buster
L'installation décrite ici concerne un serveur web apache avec le langage de programmation php.
En Annexe sont indiqués
Sommaire
$ sudo aptitude install apache2
$ firefox http://127.0.0.1
$ firefox http://localhost
/var/www/html/
Par défaut, apache est démarré automatiquement lors du démarrage du PC et il n'est pas nécessaire de relancer apache pour faire prendre en compte des modifications qui concernent les sites.
Néanmoins, les commandes usuelles de systemd sont disponibles pour le service apache2.service:
$ sudo systemctl status apache2
Démarrage / Arrête démarrage à la mise sous tension
$ sudo systemctl enable apache2
$ sudo systemctl disable apache2
Arrêt, démarrage, redémarrage :
$ sudo systemctl [stop|start|restart] apache2.service
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
donner un nom au serveur, permettra de supprimer l'erreur
# echo "ServerName localhost" >> /etc/apache2/apache2.conf
Afficher le fichier hosts
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 buster.lan buster
....
$ firefox http://127.0.0.1
$ firefox http://localhost
$ firefox http://127.100.10.27
$ firefox http://buster.lan
$ firefox http://buster
Installer la dernière version disponible de php avec la commande
$ sudo aptitude install php
Vérifier la bonne installation, pour cela :
$ echo "<?php phpinfo();?>" |sudo tee /var/www/html/index.php
$ firefox http://localhost/index.php
Une page avec les caractéristiques du php s'affiche
Par défaut, apache héberge un site situé dans le répertoire /var/www/html. Pour héberger plusieurs sites de façon indépendante, des sous-répertoires de /var/www sont utilisés et on parle alors de Virtual Hosts.
$ sudo mkdir -p /var/www/mondomaine.xyz
$ sudo chown -R $USER:$USER /var/www/mondomaine.xyz/
$ nano /var/www/mondomaine.xyz/index.html
<html>
<head>
<meta charset="UTF-8">
<title>Bienvenue sur mondomaine.xyz</title>
</head>
<body>
<h1>Félicitations! L'hôte virtuel "mondomaine.xyz" fonctionne</h1>
</body>
</html>
$ sudo nano /etc/apache2/sites-available/mondomaine.xyz.conf
<VirtualHost *:80>
ServerName mondomaine.xyz
ServerAlias www.mondomaine.xyz
ServerAdmin webmaster@localhost
DocumentRoot /var/www/mondomaine.xyz
<Directory /var/www/mondomaine.xyz>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
$ sudo apache2ctl configtest
Syntax OK
$ sudo a2ensite mondomaine.xyz.conf
Enabling site mondomaine.xyz.
To activate the new configuration, you need to run:
systemctl reload apache2
$ sudo systemctl reload apache2
$ firefox http://mondomaine.xyz
$ firefox http://www.mondomaine.xyz
$ sudo a2dissite 000-default.conf
$ sudo systemctl reload apache2
$ sudo a2dissite mondomaine.xyz.conf
$ sudo a2ensite mondomaine.xyz.conf
$ sudo systemctl reload apache2
Certificate = Clé publique SSL ou fichier du certificat
Private key = Clé privée associée au certificat
Certificate chain = Chaîne de confiance entre l'autorité certifiée (Let's Encrypt par exemple) et le certificat du domaine certifié
Let's Encrypt est une autorité de confiance (CA) automatique et ouverte qui fournit gratuitement des certificats SSL/TLS utilisé généralement pour chiffrer des communications à des fins de sécurité et de confidentialité, le cas le plus connu étant HTTPS
Let's Encrypt repose sur le protocole ACME (Automatic Certificate Management Environment) pour délivrer, révoquer et renouveller les certificats
Certbot est un utilitaire gratuit et libre principalement utilisé pour gérer les certificats SSL/TLS certificates délivrés par Let's Encrypt
Il est nécessaire de disposer d'un nom de domaine enregistré avec un enregistrement DNS de type A pointant vers l'adresse IPv4 du serveur. Dans ce qui suit, www.mondomaine.xyz est pris comme exemple
$ host -t A www.mondomaine.xyz
www.mondomaine.xyz has address 109.9.177.167
$ curl -4 icanhazip.org
109.9.177.167
$ sudo aptitude install certbot python-certbot-apache
https://www.howtoforge.com/how-to-manage-lets-encrypt-ssl-tls-certificates-with-certbot/
$ sudo certbot run
$ sudo certbot run --apache ....
$ sudo certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Attempting to parse the version 1.4.0 renewal configuration file found at /etc/letsencrypt/renewal/jitsi.mondomaine.xyz.conf with version 0.31.0 of Certbot. This might not work.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: mondomaine.xyz
Domains: mondomaine.xyz www.mondomaine.xyz
Expiry Date: 2020-08-13 16:56:28+00:00 (VALID: 88 days)
Certificate Path: /etc/letsencrypt/live/mondomaine.xyz/fullchain.pem
Private Key Path: /etc/letsencrypt/live/mondomaine.xyz/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$ sudo systemctl list-timers |grep certbot
Wed 2020-05-13 17:58:43 CEST 3h 59min left Wed 2020-05-13 09:46:21 CEST 4h 12min ago certbot.timer certbot.service
$ sudo certbot renew
$ sudo certbot revoke --cert-name mondomaine.xyz
$ sudo certbot delete
$ sudo certonly --webroot
$ sudo certonly --webroot --webroot-path /var/www/html \
--agree-tos -m your_email@example.co \
-d www.mondomaine.xyz
Vérifier que le site est accessible en mode https sans avoir à accorder d'autorisations supplémentaires