====== 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