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.
mysql -u root -p
CREATE DATABASE benevalibre ; CREATE USER 'benevalibre' IDENTIFIED BY 'xxxxxxxxx'; GRANT ALL PRIVILEGES ON `benevalibre`.* TO 'benevalibre' IDENTIFIED BY 'xxxxxxxxx';
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/
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 :
virtualenv ;
On adapte la configuration de Nginx fournie par le fichier README.md en suivant la logique documentée pour un projet Django:
<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>
/* == 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." }
cd /var/www/benevalibre.chapril.org/benevalibre ./venv/bin/python manage.py sendtestemail benevalibre-support@chapril.org
Fait via le dossier local/ tel qu'indiqué dans le fichier README.md du projet.
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 :
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
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
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 (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.
Commençons par arrêter le service.
a2dissite benevalibre.chapril.org systemctl reload apache2
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/
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
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.
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
./var/media/.
La mise à jour propose d'utiliser 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.
<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 Bénévalibre et de relancer Apache.
a2enmod proxy a2enmod proxy_http a2ensite benevalibre.chapril.org systemctl restart apache2