# 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
<VirtualHost *:80>
        ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

```

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
<VirtualHost *:80>
        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
</VirtualHost>

```

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
<VirtualHost *:80>
        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
        <Directory /var/www/bookstack/public>
          Options FollowSymlinks
          AllowOverride All
          Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

```

### 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

<table id="bkmrk-commande-description"><thead><tr><th align="left">Commande</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left">`a2enmod [nom du module]`</td><td align="left">Permet d'activer des modules apache</td></tr><tr><td align="left">`a2ensite [nom du fichier]`</td><td align="left">Permet d'activer une nouvelle configuration de site</td></tr><tr><td align="left">`a2enconf [nom de la configuration]`</td><td align="left">Permet d'activer une configuration</td></tr><tr><td align="left">`systemctl restart apache2`</td><td align="left">Permet de relancer le service apache2</td></tr><tr><td align="left">`cat /var/log/apache2/access.log`</td><td align="left">Permet d'afficher les logs d'accès à votre site</td></tr><tr><td align="left">`cat /var/log/apache2/error.log`</td><td align="left">Permet d'afficher les logs d'erreur à votre site</td></tr></tbody></table>

# 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.