Installation serveur web Apache - php

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

1 - Installation du serveur apache

$ sudo aptitude install apache2
$ firefox http://127.0.0.1
$ firefox http://localhost
/var/www/html/

2 - Commandes

$ sudo systemctl status apache2
$ sudo systemctl enable apache2
$ sudo systemctl disable apache2
$ 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

3 - Lancement

$ 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

4 - Installation du langage php

$ sudo aptitude install php
$ 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

Annexe 1 - Hôtes virtuels

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.

1 - Création d'un hôte virtuel

$ 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

2 - Gestion des hôtes virtuels

$ sudo a2dissite 000-default.conf

$ sudo systemctl reload apache2
$ sudo a2dissite mondomaine.xyz.conf
$ sudo a2ensite mondomaine.xyz.conf

$ sudo systemctl reload apache2

Annexe 2 - Certificat SSL via Let's encrypt :

1 - Terminologie - Principe

2 - Prérequis

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

3 - Installation

$ sudo aptitude install certbot python-certbot-apache

4 - Création d'un certificat

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

5 - Test

Vérifier que le site est accessible en mode https sans avoir à accorder d'autorisations supplémentaires