====== Service benevalibre.chapril.org ====== ===== Introduction ===== * Ce service est basé sur Bénévalibre. * Site principal : https://benevalibre.chapril.org/ * Sources : https://forge.cliss21.org/cliss21/benevalibre * Documentation : https://benevalibre.chapril.org/docs ===== Installation des pré-requis ===== apt install libapache2-mod-wsgi-py3 python3 virtualenv git make Le serveur de base de donnée MariaDB imposé par cette version de Django nécessite pas mal de dépendances de développement%%*%%. apt install build-essential python3-dev libmariadb-dev pkg-config %%*%% Le connecteur de Debian n'étant pas assez récent. ===== Préparation de la DB ===== mysql -u root -p CREATE DATABASE benevalibre ; CREATE USER 'benevalibre' IDENTIFIED BY 'xxxxxxxxx'; GRANT ALL PRIVILEGES ON `benevalibre`.* To 'benevalibre' IDENTIFIED BY 'xxxxxxxxx'; ===== Préparation des dossiers ===== mkdir /srv/benevalibre.chapril.org cd /srv/benevalibre.chapril.org/ mkdir -p /var/log/benevalibre.chapril.org mkdir -p /var/www/benevalibre.chapril.org ln -s /var/www/benevalibre.chapril.org www cd www/ ===== Installation de Bénévalibre ===== git clone https://forge.cliss21.org/cliss21/benevalibre.git cd benevalibre/ git checkout master On doit installer le connecteur SQL donc on procède en deux temps. make create-venv venv/bin/pip install mysqlclient make init Durant le ''make init'' un éditeur s'ouvre pour qu'on fasse la configuration de l'application. Je retiens ceci : ENV=production DJANGO_SECRET_KEY=s3cr3t DJANGO_ALLOWED_HOSTS=benevalibre.chapril.org, DJANGO_DATABASE_URL=mysql://benevalibre:xxxxxxxxxx@127.0.0.1:3306/benevalibre DEFAULT_FROM_EMAIL=benevalibre@chapril.org ADMINS=benevalibre-support@chapril.org Le ''make init'' se charge de : * Mettre à jour le ''virtualenv'' ; * Vérifier le chargement du logiciel ; * Appliquer les migrations de base ; * Collecter les statiques ; * Compiler la documentation. ===== Configuration Apache2 ===== On adapte la configuration de Nginx fournie par le fichier ''README.md'' en suivant la logique documentée pour un [[https://docs.djangoproject.com/fr/3.1/howto/deployment/wsgi/modwsgi/|projet Django]]: ServerName benevalibre.chapril.org ServerAdmin benevalibre-support@chapril.org ErrorLog ${APACHE_LOG_DIR}/benevalibre.chapril.org/benevalibre.chapril.org-error.log CustomLog ${APACHE_LOG_DIR}/benevalibre.chapril.org/benevalibre.chapril.org-access.log combined-proxy WSGIProcessGroup benevalibre WSGIDaemonProcess benevalibre python-home=/var/www/benevalibre.chapril.org/benevalibre/venv/ python-path=/var/www/benevalibre.chapril.org/benevalibre/ WSGIScriptAlias / /var/www/benevalibre.chapril.org/benevalibre/benevalibre/wsgi.py process-group=benevalibre Require all granted Alias /static/ /var/www/benevalibre.chapril.org/benevalibre/var/static/ Require all granted Alias /media/ /var/www/benevalibre.chapril.org/benevalibre/var/media/ Require all granted Alias /favicon.ico /var/www/benevalibre.chapril.org/benevalibre/var/static/favicon/favicon.ico ===== Configuration monitoring ===== /* == benevalibre.chapril.org == */ vars.http_vhosts["benevalibre.chapril.org"] = { http_vhost = "benevalibre.chapril.org" http_uri = "/" vhost_tls = "redirect" http_string = "Le logiciel libre qui facilite la gestion et la valorisation du bénévolat dans les associations." } ===== Tester l'envoi de courriels ===== cd /var/www/benevalibre.chapril.org/benevalibre ./venv/bin/python manage.py sendtestemail benevalibre-support@chapril.org ===== Personnaliser la présentation du logiciel ===== Fait via le dossier ''local/'' tel qu'indiqué dans le fichier ''README.md'' du projet. ===== Création d'un utilisateur admin ===== On se place en utilisateur ''www-data'' : su - www-data -s /bin/bash cd /var/www/benevalibre.chapril.org/benevalibre/ ./venv/bin/python manage.py createsuperuser Adresse mail: benevalibre-support@chapril.org Password: Password (again): Superuser created successfully. Puis : * Ajouter le mot de passe dans le gestionnaire dédié ; * Se connecter au service Web : * Mettre « ChaprilAdmin » en pseudonyme, * Mettre un avatar Chapril : {{:chapril-logo-compte.png?direct&50|Logotype du Chapril}}. ===== Administration régulière du service ===== ==== Export/import de la base de données ==== mysqldump -u root -p benevalibre > benevalibre_backup_db_$(date +%Y%m%d).sql mysql -u root -p benevalibre < benevalibre_backup_db_$(date +%Y%m%d).sql ==== Mise à jour de bénévalibre (version < 2.0.0) ==== git pull && make update Une autre procédure est possible : cd /var/www/benevalibre.chapril.org/benevalibre/ git fetch --all git rebase origin/master make update chown www-data: . -R ===== Administration exceptionnelle du service ===== ==== Mise à jour de Bénévalibre de la v1.6.x à la version 2.0.x ==== En août 2025, la sortie de la version 2.0 de Bénévalibre a été annoncée. Comme indiquée dans l'annonce du forum ([[https://forum.benevalibre.org/d/367-sortie-de-la-v200|sortie de la version 2]]), cette mise à jour amène une ré-écriture d'une partie du code source. La procédure d'installation //fraîche// a changé, ainsi que la procédure de mise à jour. Le protocole qui suit, en cours d'écriture, est celui prévu pour mettre à jour l'instance du Chapril. === Arrêt === Commençons par arrêter le service. a2dissite benevalibre.chapril.org systemctl reload apache2 === Sauvegarde === Sauvegardons ensuite notre configuration et les fichiers statiques, logos… Si besoin, créer un dossier de sauvegarde. mkdir ~/backup On sauvegarde le nécessaire ailleurs. cd /var/www/benevalibre.chapril.org/benevalibre/ cp -rp {config.env,var} ~/backup/ === Mise à jour === On s'assure d'être sur la branche actuelle du code et on tire les dernières modifications. git checkout main && git pull Copie de notre fichier ''config.env'' original et du fichier d'exemple de la nouvelle version. cp config.env config.env.ori cp config.env.example config.env On reporte les éléments de notre ancienne configuration dans le nouveau fichier, à savoir les variables : DJANGO_SECRET_KEY=s3cr3t DJANGO_ALLOWED_HOSTS=benevalibre.chapril.org, DJANGO_DATABASE_URL=mysql://benevalibre:xxxxxxxxxx@127.0.0.1:3306/benevalibre DEFAULT_FROM_EMAIL=benevalibre@chapril.org ADMINS=benevalibre-support@chapril.org On éditera la variable ''BASE_URL'', sinon le service ne fonctionnera pas. BASE_URL=https://benevalibre.chapril.org Les variables ''OPEN_REGISTRATION'' et ''MODERATED_REGISTRATION'' sont renommées respectivement en ''ASSOCIATION_REGISTRATION_OPEN'' et ''ASSOCIATION_REGISTRATION_MODERATED''. Dans notre cas, nous conservons les valeurs par défaut. === Installation de l'environnement virtuel === Après avoir supprimé l'ancien répertoire ''venv/'', on installe Benevalibre, comme indiqué dans la documentation. rm -rf ./venv python3 -m venv --system-site-packages ./venv source ./venv/bin/activate python -m pip install benevalibre ''(venv)'' doit préfixer l'invité de commande. On vérifie que tout va bien avec l'environnement virtuel activé, avant de poursuivre. python -m benevalibre check --deploy On passera sous silence, les erreurs affichées concernant les options ''SECURE_HSTS_SECONDS'' et ''SECURE_SSL_REDIRECT'' de Django. Avant de poursuivre on réalisera la commande suivante : ln -s /var/www/benevalibre.chapril.org/benevalibre/venv/lib/python3.11/site-packages/benevalibre/static \ /var/www/benevalibre.chapril.org/benevalibre/benevalibre/static Ceci permettra de rattraper un bug lors de la collecte des fichiers statiques qui va suivre. On migre la base de données et on récupère les fichiers statiques dans l'environnement virtuel. python -m benevalibre migrate python -m benevalibre collectstatic Avant de lancer la dernière commande, on s'assurera de la présence du répertoire ''./var/media/''. === Installation de Gunicorn === La mise à jour propose d'utiliser [[https://gunicorn.org/|Gunicorn]] pour servir l'application. Trois tâches sont à faire. Installer Gunicorn dans le répertoire ''venv/'' de Bénévalibre avant de désactiver l'environnement virtuel. python -m pip install gunicorn deactivate Créer puis activer un service Systemd pour lancer Gunicorn qui va servir Bénévalibre. [Unit] Description=Bénévalibre web service After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/var/www/benevalibre.chapril.org/benevalibre ExecStart=/var/www/benevalibre.chapril.org/benevalibre/venv/bin/gunicorn benevalibre.wsgi \ --name benevalibre --workers 4 \ --max-requests 1200 --max-requests-jitter 50 \ --log-level=info --bind=127.0.0.1:8345 Restart=on-failure [Install] WantedBy=multi-user.target systemctl daemon-reload systemctl enable --now benevalibre Modifier la configuration d'Apache afin de rediriger les requêtes vers Gunicorn. ServerName benevalibre.chapril.org ServerAdmin benevalibre-support@chapril.org ErrorLog ${APACHE_LOG_DIR}/benevalibre.chapril.org/benevalibre.chapril.org-error.log CustomLog ${APACHE_LOG_DIR}/benevalibre.chapril.org/benevalibre.chapril.org-access.log combined-proxy Alias /static /var/www/benevalibre.chapril.org/benevalibre/var/static Require all granted Alias /media /var/www/benevalibre.chapril.org/benevalibre/var/media Require all granted Alias /favicon.ico /var/www/benevalibre.chapril.org/benevalibre/var/static/favicon/favicon.ico ProxyRequests Off ProxyPreserveHost On ProxyPass /static ! ProxyPass /media ! ProxyPass /favicon.ico ! ProxyPass / http://localhost:8345/ ProxyPassReverse / http://localhost:8345/ # ChaprilInfos Include chaprilinfos.conf On ajoutera le module ''proxy'' avant de réactiver la configuration de Bénévalibre et de relancer Apache. a2enmod proxy a2enmod proxy_http a2ensite benevalibre.chapril.org systemctl restart apache2