Table des matières
Service benevalibre.chapril.org
Introduction
- Ce service est basé sur Bénévalibre.
- Site principal : https://benevalibre.chapril.org/
- Documentation : https://benevalibre.chapril.org/docs
Installation des pré-requis
# apt install libapache2-mod-wsgi-py3 python3 virtualenv git make
Le backend mariadb imposée par cette version de django nécessite pas mal de dépendances de dev (le connecteur version debian n'étant pas assez récent).
# apt install build-essential python3-dev libmariadb-dev pkg-config
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'appli. 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 :
- updater le virtualenv
- vérifier le chargement du logiciel
- appliquer les migrations de base
- collecter les statiques
- compiler la doc
Configuration apache2
On adapte la conf nginx fournie par le README.md en suivant la logique documentée pour un projet Django:
- /etc/apache2/sites-available/benevalibre.chapril.org.conf
<VirtualHost *:80> 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 <Directory /var/www/benevalibre.chapril.org/benevalibre/benevalibre/> <Files wsgi.py> Require all granted </Files> </Directory> Alias /static/ /var/www/benevalibre.chapril.org/benevalibre/var/static/ <Directory /var/www/benevalibre.chapril.org/benevalibre/var/static/> Require all granted </Directory> Alias /media/ /var/www/benevalibre.chapril.org/benevalibre/var/media/ <Directory /var/www/benevalibre.chapril.org/benevalibre/var/media/> Require all granted </Directory> Alias /favicon.ico /var/www/benevalibre.chapril.org/benevalibre/var/static/favicon/favicon.ico </VirtualHost>
Configuration monitoring
- /etc/icinga2/zones.d/master/cluster/lamp.conf
/* == 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 README 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 pseudo,
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
ou
# 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), 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'ećriture, est celui prévu pour mettre à jour l'instance du Chapril.
1. Commençons par arrêter le service.
# a2dissite benevalibre.chapril.org
# systemctl reload apache2
2. 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/
3. 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 config.env original et du fichier exemple de la nouvelle version.
# cp config.env config.env.bak # cp config.env.exemple 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
BASE_URL, sinon le service ne fonctionnera pas.
BASE_URL=https://benevalibre.chapril.org
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.
4. Après avoir supprimer l'ancien venv, on installe benevalibre, comme indiqué dans la documentation.
# rm -rf ./venv
# python3 -m venv --system-site-packages ./venv # source ./venv/bin/activate (venv)# python -m pip install benevalibre
- On vérifie que tout va bien, avant de poursuivre.
(venv)# 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 :
(venv)# 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.
(venv)# python -m benevalibre migrate (venv)# python -m benevalibre collectstatic
./var/media.
5. La mise à jour propose d'utiliser gunicorn pour servir l'application. Trois choses à faire :
- installer gunicorn dans le venv de benevalibre.
(venv)# python -m pip install gunicorn (venv)# deactivate
- créer puis activer un service systemd pour lancer gunicorn qui va servir benevalibre.
- /etc/systemd/system/benevalibre.service
[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.
- /etc/apache2/sites-available/benevalibre.chapril.org
- <VirtualHost *:80>
- 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
- <Directory /var/www/benevalibre.chapril.org/benevalibre/var/static/>
- Require all granted
- </Directory>
- Alias /media /var/www/benevalibre.chapril.org/benevalibre/var/media
- <Directory /var/www/benevalibre.chapril.org/benevalibre/var/media>
- Require all granted
- </Directory>
- 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
- </VirtualHost>
On ajoutera le module proxy avant de réactiver la configuration de benevalibre et de relancer apache :
# a2enmod proxy # a2ensite benevalibre.chapril.org # systemctl restart apache2

