diff --git a/deploiement/installer.sh b/deploiement/installer.sh index 982f8d7..2135c62 100755 --- a/deploiement/installer.sh +++ b/deploiement/installer.sh @@ -61,23 +61,31 @@ patcher_vhost() { return 0 fi cp -a "$fichier" "$fichier.bak-$(date +%Y%m%d%H%M)" - # Inséré juste avant le premier Include letsencrypt, donc dans le VirtualHost *:443. + # Inséré en tête du VirtualHost *:443. L'ancrage précédent — la ligne Include des + # options SSL de Let's Encrypt — n'existe que dans les vhosts écrits par certbot : + # celui qu'ISPConfig génère porte ses propres directives SSLCertificate*. awk ' - !fait && /Include \/etc\/letsencrypt\/options-ssl-apache\.conf/ { + { print } + !fait && /^[[:space:]]*]*:443>/ { print "\t\tProxyPass /deploy http://127.0.0.1:9877/deploy" print "\t\tProxyPassReverse /deploy http://127.0.0.1:9877/deploy" fait = 1 } - { print } - ' "$fichier" > "$fichier.tmp" && mv "$fichier.tmp" "$fichier" + ' "$fichier" > "$fichier.tmp" || return 1 + # Recopié dans le fichier plutôt que déplacé par-dessus : un `mv` remplacerait + # l'original par un fichier neuf, avec d'autres droits et sans son ACL. + cat "$fichier.tmp" > "$fichier" && rm -f "$fichier.tmp" grep -q "127.0.0.1:9877" "$fichier" || { echo " ÉCHEC sur $fichier" >&2; return 1; } echo " $fichier : relais ajouté" } # Sur owni, sites-enabled contient des copies et non des liens : les deux sont à traiter. +# Un vhost récalcitrant ne doit pas emporter la suite : c'est celui de sites-enabled qui +# sert, et Apache attend d'être rechargé. On note l'échec et on le dit à la fin. +manques="" for vhost in /etc/apache2/sites-enabled/100-alpinux.org.vhost \ /etc/apache2/sites-available/alpinux.org.vhost; do - patcher_vhost "$vhost" + patcher_vhost "$vhost" || manques="$manques $vhost" done if apache2ctl configtest; then @@ -88,6 +96,13 @@ else exit 1 fi +if [ -n "$manques" ]; then + echo + echo "Relais non posé dans :$manques" >&2 + echo "Le déploiement fonctionne — c'est sites-enabled qui sert — mais si ISPConfig" >&2 + echo "recopie un jour le vhost par-dessus, le relais sera à remettre." >&2 +fi + echo echo "────────────────────────────────────────────────────────────" echo "Reste à déclarer le webhook dans Gitea :"