====== Installer le sous-domaine "awstats" ======
* **Notes** :
* Ce domaine hébergera l'outil //Awstats// permettant d'analyser et de visualiser les logs web.
* Cet outil est hébergé dans un container Docker.
* Il est nécessaire de réaliser cet installation sur le serveur hébergeant les log du serveur web que nous souhaitons analyser. Dans notre cas, l'instance "//web-srv//".
* **Ressources** :
* [[https://hub.docker.com/r/justb4/awstats/dockerfile| Dépôt justb4/awstats: Dockerfile et exemple Docker Compose]]
* [[http://www.awstats.org/docs/awstats_config.html| Configuration d'Awstats]]
* [[https://blogging.dragon.org.uk/installing-awstats-on-ubuntu-16-04-lts/| Installing AWstats on Ubuntu 16.04 LTS]]
===== Installer le domaine =====
* Créer un fichier de configuration : ''vi /etc/nginx/sites-available/awstats.conf''
* Y placer le contenu suivant :
server {
listen 80;
listen [::]:80;
server_name awstats.;
auth_basic "Zone restreinte";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:50083/;# ATTENTION : bien mettre un slash final ! Sinon => erreur 404
}
}
* Voir la section [[.:nginx#configurer_nginx|Configurer Nginx]] pour la création et la gestion du fichier //.htpasswd//.
* Créer un lien depuis les sites actifs : ''nginx_ensite awstats.conf'' ou ''cd /etc/nginx/sites-enabled/ ; ln -s ../sites-available/awstats.conf awstats.conf''
* Tester la config et relancer Nginx si OK : ''nginx-reload'' ou ''nginx -t && nginx -s reload''
* Tester l'URL http://awstats./ qui doit afficher une erreur 502 car nous n'avons pas encore lancé le container Docker.
* En local, sur votre machine, se placer dans le dépôt Github "//sinp--srv//" récupéré précédemment et si nécessaire resynchroniser le dossier //web-srv// avec le serveur de destination en exécutant la commande //Rsync// indiquée dans le fichier //README.md// : ''rsync -av ./web-srv/home/admin/docker/ admin@web--sinp:/home/admin/docker/ ''
* Sur le serveur "//web-srv//" dans le dossier //docker// de l'utilisateur //admin// :
* vérifier la présence du réseau Docker spécifique à notre utilisation de type //bridge// nommé //nginx-proxy// (voir fichier //.env//) : ''docker network ls''
* se placer dans le dossier //awstats// : ''cd ~/docker/awstats/''
* exécuter la commande : ''docker-compose up''
* vérifier que tout fonctionne à l'adresse : http://awstats.. Il se peut que les stats soient vides si le script de mise à jour n'a pas encore été lancé dans le container.
* arrêter le container : ''CTRL+C''
* relancer le container en tant que service : ''docker-compose up -d''
* si besoin de l'arrêter utiliser : ''docker compose down''
===== Activer le SSL et HTTP2 sur le domaine =====
* Installer un certificat SSL via Certbot (Letsencrypt) :
* Pour SINP PACA : '' certbot --nginx -d awstats.silene.eu ''
* Pour SINP AURA : '' certbot --nginx -d awstats.biodiversite-aura.net ''
* Répondre : 1
* Modifier le fichier de configuration de Nginx comme ci-dessous afin d'activer le support de SSL, HTTP2 et la redirection de HTTP vers HTTPS.
* Recharger les configs Nginx : ''nginx-reload'' ou ''nginx -t && nginx -s reload''
* Tester ensuite la redirection auto de HTTP vers HTTPS : http://awstats./ -> doit rediriger vers HTTPS automatiquement
* Tester la configuration SSL : https://www.ssllabs.com/ssltest/analyze.html?d=awstats.
* Tester l'URL https://awstats./
* La config finale :
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name awstats. ;
auth_basic "Zone restreinte";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:50083/;# ATTENTION : bien mettre un slash final ! Sinon => erreur 404
}
ssl_certificate /etc/letsencrypt/live/awstats./fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/awstats./privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
listen 80;
listen [::]:80;
server_name awstats. ;
return 302 https://awstats.$request_uri;
}
===== Configurer la génération des rapports par site =====
* Les analyses des logs du serveur web sont réalisées toutes les 15mn par un Cron lancé dans le container Docker hébergeant Awstats.
* Le stats sont générées par le script ''aw-update.sh'' présent dans le dossier ''/usr/local/bin/'' du container.
* Pour lancer manuellement la mise à jour des stats :
* Se connecter au container : '' docker exec -it awstats /bin/bash ''
* Se placer dans le dossier du script de mise à jour : '' cd /usr/local/bin/ ''
* Lancer le script : '' ./aw-update.sh ''
* Pour configurer des stats pour un nouveau site web, il suffit de rajouter un nouveau fichier ''.env'' ou ''.conf'' dans le dossier ''~/docker/awstats/sites/'' de l'utilsateur ''admin'' du serveur hébergeant le container Awstats.
* Ce dossier est lié avec le dossier ''/etc/awstats/sites/'' du container hébergeant Awstats. Tout ajout de fichier dans ce dossier de l'hôte, le rand accessible dans le container.
* Par défaut, le fichier ''docker-compose.yml'' se charge de lier le dossier de l'hôte contenant les logs du serveur Nginx (''/var/log/nginx'') avec le dossier ''/var/local/log'' du container.
==== Générer à nouveau d'ancienne statistiques =====
* Se connecter au container : '' docker exec -it awstats /bin/bash ''
* **ATTENTION** : S'assurer que les fichiers de log d'accès existe toujours dans ''/var/local/log'' pour le mois et l'année qui nous intéresse.
* Se placer dans le dossier contenant les stats : ''cd /var/lib/awstats''
* Supprimer le fichier à regénérer, par exemple : ''rm -f awstats012022.atlas.txt''
* **ATTENTION** : bien recréer un fichier vide correspondant au fichier prélablement supprimée. Si ce n'est pas fait Awstats indiquera trouvé de vieux enregistrement ''Found x old records'' au lieu de ''Found x new qualified records.''
* Récréer le fichier vide : ''touch awstats012022.atlas.txt''
* Lancer la commande de réanalyse : ''awstats -update -config="atlas" -LogFile="/usr/share/awstats/tools/logresolvemerge.pl /var/local/log/access.log.2022-01-*.gz |"''
* Vérifier sur l'interface que cela a bien fonctionné.
==== Ajouter un nouveau site ====
* Une fois le nouveau fichier .env créé dans ''~/docker/awstats/sites/'', se connecter au container : ''docker exec -it awstats /bin/bash''
* Se placer dans le dossier contenant les scripts : ''cd /usr/local/bin/''
* Lancer le script de mise à jour de la page d'accueil : ''./aw-setup.sh''