Simplifier l'administration d'un serveur Apache 2 avec a2tools
a2tools est un script créé dans le but de simplifier et d'automatiser l'administration courante d'un serveur Apache 2. Ce guide présente comment le mettre en place et donne quelques exemples d'utilisation.
Ce guide est testé sur:
- Debian 5.0 Lenny
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
- Debian 8.0 Jessie
Prérequis
Ce guide nécessite:
- un serveur HTTP Apache 2, comme décrit par Installer Apache 2 sur Debian.
Ce guide recommande:
- l'activation d'HTTPS pour Apache 2, comme décrit par Activer le protocole HTTPS avec Apache 2 sur Debian.
- l'installation du client Let's Encrypt acme.sh, comme décrit par Installer le client certbot (Let's Encrypt) acme.sh sur Debian.
Installation
Détectez le proxy de commande (command ou sudo):
cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'
Installez l'outil:
${cmdProxy} wget "https://raw.github.com/biapy/howto.biapy.com/master/apache2/a2tools" \ --quiet --no-check-certificate --output-document="/usr/local/bin/a2tools"
Rendez-le exécutable:
${cmdProxy} chmod +x "/usr/local/bin/a2tools"
Présentation de a2tools
Le détail des options de l'outil est fourni par:
${cmdProxy} a2tools --help
Hôte virtuel simple
Créez un hôte virtuel servant un dossier:
# sudo a2tools "www.domain.com" "/opt/www.domain.com"
Redirection
Créez un hôte virtuel redirigeant un domaine et tous ses sous-domaines vers un autre site:
# sudo a2tools --template=redirect \
# --alias="*.domain.com" \
# "domain.com" "http://www.domain.com/"
Reverse proxy
Créez un hôte virtuel mettant à disposition un site hébergé sur un autre serveur (en reverse proxy):
# sudo a2tools --template=reverse-proxy "www.domain.com" "http://domain.server.lan/"
Remarque : Sur le serveur "domain.server.lan", un hôte virtuel "www.domain.com" doit être présent. Si le serveur "domain.server.lan" utilise Apache 2, paramétrez-le à l'aide du guide Obtenir l'adresse IP réelle d'un visiteur accédant à un serveur Apache 2 à travers un reverse proxy.
Suppression d'un domaine
Pour retirer tous les hôtes virtuels d'un domaine, utilisez :
# sudo a2tools --remove "www.domain.com"
Site sécurisé (HTTPS)
Tout site HTTPS nécessite la création d'un certificat SSL valide adapté à son nom de domaine, comme décrit par Créer un certificat SSL / TLS sur Debian, ou l'installation du client acme.sh pour Let's Encrypt.
Créez un hôte virtuel HTTPS avec l'option --ssl='auto' pour créer automatiquement un certificat Let's Encrypt:
# sudo a2tools --ssl='auto' 'www.domain.com' '/opt/www.domain.com'
Créez un hôte virtuel HTTPS avec l'option --ssl ayant en argument le nom du certificat SSL créé (en général, le nom de domaine du site), si vous disposez d'un certificat SSL existant:
# sudo a2tools --ssl='www.domain.com' 'www.domain.com' '/opt/www.domain.com'
Si le certificat créé est un certificat wildcard valide pour plusieurs sous-domaines, utilisez:
# sudo a2tools --ssl='*.domain.com' 'www.domain.com" '/opt/www.domain.com'
Remarque: Ajouter un argument à l'option --ssl équivaut à appeler la commande avec ces options:
# sudo a2tools --ssl \
# --private-key="/etc/ssl/private/www.domain.com.key" \
# --public-key="/etc/ssl/certificates/www.domain.com.crt" \
# --root-ca="/etc/ssl/roots/www.domain.com-root.ca" \
# --chain-ca="/etc/ssl/chains/www.domain.com.ca" \
# 'www.domain.com' '/opt/www.domain.com'
Une fonctionnalité manquante des navigateurs Internet Explorer 6 à 8 sur Windows XP limite à l'utilisation d'un seul certificat SSL par adresse IP. Pour héberger plusieurs sous-domaines sur un même serveur, l'utilisation de certificats "wildcard" (cad. "*.exemple.com") est recommandée.
Pour héberger plusieurs domaines sur un serveur sans erreurs sur Internet Explorer, utilisez l'option --bind-ip pour spécifier l'adresse IP associée au certificat SSL utilisé. Si vous utilisez un serveur OVH, assignez une IP failover au serveur.