# Service WEB
# Apache 2
### Introduction
Dans cette docs vous retrouverez comment déploier un serveur apache2, le configurer proprement et mettre en place un reverse proxy ainsi que des commandes utiles.
Le logiciel libre Apache HTTP Server (Apache) est un serveur HTTP créé et maintenu au sein de la fondation Apache. Jusqu'en avril 20192, ce fut le serveur HTTP le plus populaire du World Wide Web. Il est distribué selon les termes de la licence Apache.
### Installation
Rien de plus simple pour l'installation de Apache 2
### Configuration
Les fichiers de configuration de site présent dans `/etc/apache2/sites-available/`, par défaut vous retrouverez le fichier `000-default.conf` avec la configuration suivante.
```bash
ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
```
Je vous conseil de garder un exemple de ce fichier, rendez-vous dans le dossier et faite un `cp 000-default.conf 000-template.conf` cela vous permettera de faire un retour en arrière ou de vous basé sur une préconfiguration existante lors du déploiement de nouvelle configuration.
Modifions le fichier **000-default.conf** pour une configuraiton basique.\\
```bash
nano 000-default.conf
ServerName www.iskia.fr #Renseignez votre nom de domaine
ServerAdmin contact@iskia.fr #Renseignez votre adresse mail de contact
DocumentRoot /var/www/vitrine #Renseignez le chemin d'accès à votre site
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
```
Si vous souhaitez avoir un deuxième site hébergé sur votre serveur mais accessible via un sous-domaine de votre site, voici la configuration de base à effectuer. Exemple de configuration pour Bookstack.
```bash
nano 001-bookstack.conf
ServerName wiki.iskia.fr #Renseignez votre nom de domaine avec le sous-domaine correspondant
ServerAdmin contact@iskia.fr #Renseignez votre adresse mail de contact
DocumentRoot /var/www/bookstack #Renseignez le chemin d'accès à votre site
Options FollowSymlinks
AllowOverride All
Require all granted
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
```
### Reverse Proxy
Si vous avez une application web qui utilise un port web autre que 80, mais que vous voulez qu'elle soit accessible via une URL sans port, vous devez mettre en place un reverse-proxy.
Dans l'exemple ci-dessous, je place mon reverse proxy sur le port 3000 dans mon fichier de configuration de site apache sous ssl `000-default-le-ssl.conf`. Vous pouvez retrouver comment déployer du ssl dans [la page suivante](https://wiki.iskia.fr/books/service-web/page/certbot) !.
```bash
RequestHeader set "X-Forwarded-Proto""https"
SetEnv proxy-nokeepalive 1
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
ProxyErrorOverride off
SetEnv proxy-nokeepalive 1
ProxyPreserveHost On
```
### Commandes
Commande | Description |
---|
`a2enmod [nom du module]` | Permet d'activer des modules apache |
`a2ensite [nom du fichier]` | Permet d'activer une nouvelle configuration de site |
`a2enconf [nom de la configuration]` | Permet d'activer une configuration |
`systemctl restart apache2` | Permet de relancer le service apache2 |
`cat /var/log/apache2/access.log` | Permet d'afficher les logs d'accès à votre site |
`cat /var/log/apache2/error.log` | Permet d'afficher les logs d'erreur à votre site |
# Certbot
### Introduction
Sur cette page nous expliquons comment utiliser de manière simple l'application certbot pour générer des certificats SSL rapidement pour **apache2** avec **certbot**.
### Installation
Pour installer certbot nous passons par snap un gestionnaire de paquet linux.
```bash
sudo snap install certbot
```
### Configuration
Suite à l'installation certbot n'est pas encore utilisable nous devons défnir un lien symbolique.
```bash
sudo ln -s /snap/bin/certbot /usr/bin/certbot
```
Certbot par défaut effectue un renouvellement automatique des certificats qu'il à généré. Nous pouvons tester la configuration en executant la commande suivante.
```bash
sudo certbot renew --dry-run
```
### Utilisation
Si votre configuration de **apache** est correctement établie, vous pouvez utiliser la commande ci-dessous.
Certbot se basera automatiquement sur votre configuration existante
```bash
certbot --apache
```
Suivez les instructions afficher dans le terminal.
Par défaut certbot mettera une redirection du http vers le https pour évtier les accès non sécurisé à votre site.