L'utiliter d'Apache peut être multiple :
Reverse proxy
Site internet mutualisé
Si vous utilisez qu'un service Apache pour toutes vos instances, cela peut vite devenir compliqué. Lors du redémarrage, vous relancez toutes les connexions des différents Vhost mis en place
Les clients risques de ne pas apprecier
La solution est donc de mettre en place une instance par site, ce qui évitera tout problèmes lors du redémarrage
Voici la différence entre le monoservice et le multiservice
Il va vous falloir un pool d'IP interne, car il faudra attribuer une IP par service crée
Attention : les nouveaux services crées se basent sur le dossier d'apache d'origine /etc/apache2
les modifications effectuées sur apache2 seront implémentées sur le nouveau service
Pour cela il est préférable de ne pas toucher au dossier /etc/apache de base, celui-ci deviendra un template
Désactiver le service apache2
systemctl stop apache2
systemctl disable apache2
Cette extrait du fichier de création de nouveau service /usr/share/doc/apache2.2-common/examples/setup-instance atteste bien que le dossier d'apache2 est bien dupliqué
cp -a /etc/apache2 /etc/apache2-$SUFFIX
Concernant la mise en place et la gestion des IP, vous avez differentes façons de procéder
https://wiki.debian.org/fr/NetworkConfiguration
sh /usr/share/doc/apache2.2-common/examples/setup-instance NewService
Attention, le chemin peut varier suivant les OS. Dans debian 11, vous le trouverez : /usr/share/doc/apache2/examples/setup-instance
Newservice est à remplacer par le nom souhaitez
Newservice sera utilisé comme nom du service pour toute la documentation
Le service crée, modifier le fichier suivant :
/etc/apache2-NewService/ports.conf
Remplacez
Listen 80/443
par
IPINTERFACESUP:80
IPINTERFACESUP est une IP (fixe de préférence) que vous avez définie pour votre nouveau service, chaque nouveau service aura une nouvelle IP
Listen 80
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
par
Listen IPINTERFACESUP:80
<IfModule ssl_module>
Listen IPINTERFACESUP:443
</IfModule>
<IfModule mod_gnutls.c>
Listen IPINTERFACESUP:443
</IfModule>
Redémarrer le service apache
systemctl restart apache2@NewService.service
Vérifiez que le service est en cours de fonctionnement
systemctl status apache2@NewService.service
netstat -ltpen | grep IPINTERFACESUP
Il suffit d'utiliser le script que j'ai créé (qui est repris du script d'origine)
#!/bin/sh
if [ $# != 1 ] ; then
echo usage: $0 '<suffix>'
exit 1
fi
is_systemd () {
case "$(readlink -f /proc/1/exe || true)" in
*systemd*)
return 0
;;
*)
return 1
;;
esac
}
# the SUFFIX must not contain spaces or shell meta characters
SUFFIX=$1
if [ -e /etc/apache2-$SUFFIX ]
then
echo "---------------------------Verification des fichier avant effacement"
echo "------------------ /etc/apache-$SUFFIX ----------------"
ls -d /etc/apache2-$SUFFIX 2>/dev/null
echo "------------------ /etc/init.d/apache-$SUFFIX ----------------"
ls /etc/init.d/apache2-$SUFFIX 2>/dev/null
echo "------------------ /usr/local/sbin/ ----------------"
ls /usr/local/sbin/*-$SUFFIX 2>/dev/null
echo "------------------ /etc/logrotate.d/apache2-$SUFFIX ----------------"
ls /etc/logrotate.d/apache2-$SUFFIX 2>/dev/null
echo "------------------ /var/log/apache2-$SUFFIX ----------------"
ls -d /var/log/apache2-$SUFFIX 2>/dev/null
echo "------------------ /etc/default/apache-htcacheclean-$SUFFIX ----------------"
ls /etc/default/apache-htcacheclean-$SUFFIX 2>/dev/null
echo "----------------------------- Fin de verification---------------------\n \n"
echo "suppression de /etc/apache2-$SUFFIX"
rm -rf /etc/apache2-$SUFFIX
if is_systemd ; then
echo "systemctl stop and disable apache2@$SUFFIX.service"
systemctl stop apache2@$SUFFIX.service
systemctl disable apache2@$SUFFIX.service
else
echo "stop et supression /etc/init.d/apache2-$SUFFIX ..."
/etc/init.d/apache2-$SUFFIX stop
rm /etc/init.d/apache2-$SUFFIX
fi
echo -n "supression des liens symbolique a2:"
for a in a2enmod a2dismod a2ensite a2dissite a2enconf a2disconf apache2ctl ; do
echo -n " $a-$SUFFIX"
rm -f /usr/local/sbin/$a-$SUFFIX
done
echo
echo "Supression des fichier logrotate du service /etc/logrotate.d/apache2-$SUFFIX"
rm -f /etc/logrotate.d/apache2-$SUFFIX
rm -rf /var/log/apache2-$SUFFIX
echo "Supression /etc/default/apache-htcacheclean-$SUFFIX"
rm -f /etc/default/apache-htcacheclean-$SUFFIX
echo "---------------------------Verification des fichiers effaces"
echo "------------------ /etc/apache-$SUFFIX ----------------"
ls -d /etc/apache2-$SUFFIX 2>/dev/null
echo "------------------ /etc/init.d/apache-$SUFFIX ----------------"
ls /etc/init.d/apache2-$SUFFIX 2>/dev/null
echo "------------------ /usr/local/sbin/ ----------------"
ls /usr/local/sbin/*-$SUFFIX 2>/dev/null
echo "------------------ /etc/logrotate.d/apache2-$SUFFIX ----------------"
ls /etc/logrotate.d/apache2-$SUFFIX 2>/dev/null
echo "------------------ /var/log/apache2-$SUFFIX ----------------"
ls -d /var/log/apache2-$SUFFIX 2>/dev/null
echo "------------------ /etc/default/apache-htcacheclean-$SUFFIX ----------------"
ls /etc/default/apache-htcacheclean-$SUFFIX 2>/dev/null
else
echo "ERROR: /etc/apache2-$SUFFIX Not-exist"
exit 2
fi
Voici les outils pour les nouveaux services
a2enmod-Newservice
a2dismod-Newservice
a2ensite-Newservice
a2dissite-Newservice
a2enconf-Newservice
a2disconf-Newservice
apache2ctl-Newservice
Concernant systemd, il faudra ajouter un @NOMDUSERVICE.service
systemctl reload apache2@NewService.service