# Ajout d'un Virtualhost
## Création du fichier de configuration du site a déployer
```
sudo nano /etc/apache2/sites-available/www.exemple.com.conf
```
Renseignez le fichier comme suit:
```conf
<VirtualHost *:80>
ServerName www.exemple.com
ServerAlias exemple.com
DocumentRoot /var/www/dossier-du-site/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
```
## Activation du site
```
sudo a2ensite www.exemple.com.conf && sudo systemctl restart apache2
```
# Configuration de HTTPS
## Installation de Certbot
```
sudo nano /etc/apt/sources.list
```
Décommentez la ligne suivante:
`# deb http://deb.debian.org/debian stretch-backports main contrib non-free`
Puis mettez à jour la liste des dépots et installez Certbot pour Apache2
```
sudo apt update && sudo apt install python-certbot-apache -t stretch-backports
```
ou lancez cette commande pour Nginx
```
sudo apt update && sudo apt install python-certbot-nginx -t stretch-backports
```
## Activation des certificats SSL Let's Encrypt
```
sudo certbot
```
* **Which names would you like to activate HTTPS for?**
Entrez le numéro du site concerné
* **Enter email address (used for urgent renewal and security notices):**
Entrez l'email de contact
* **Please read the Terms of Service...:**
Acceptez en appuyant sur A
### Rediriger automatiquement sans www et/ou HTTPS vers www et HTTPS
Vous devez créer un certificat unique pour les url avec et sans www d'un même domaine.
Pour ce faire, lancez la commande:
```
sudo certbot
```
Et renseignez les deux numéros correspondant aux 2 url (avec et sans www).
Il ne sera pas nécessaire de demander la redirection automatique dans ce cas.
Une fois le certificat généré, ajoutez les lignes suivantes dans le virtualhost 80:
```
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)$
RewriteRule ^ https://www.%2%{REQUEST_URI} [R=301,L]
```
Ainsi que les lignes suivantes dans le virtualhost 443 du domaine:
```conf
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
```
## Renouvellement automatique des certificats
```
sudo crontab -e
```
Ajoutez à la fin du fichier les lignes suivante:
```conf
# Renouvellement automatique des certificats SSL
0 6 * * 0 certbot renew
```
## Activation du HTTP2
### Édition du fichier de configuration ssl
```
sudo nano /etc/apache2/sites-available/www.exemple.com-ssl.conf
```
Avant ServerName, ajoutez la ligne suivante:
```
Protocols h2 http/1.1
```
### Activation du module http2
```
sudo a2enmod http2
```
### Prise en compte des modifications
```
sudo systemctl restart apache2
```