Outils pour utilisateurs

Outils du site


admin:services:benevalibre.chapril.org

Service benevalibre.chapril.org

Introduction

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,
    • mettre un avatar 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

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

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
Avant de lancer la dernière commande, on s'assurera de la présence du dossier ./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
  1. <VirtualHost *:80>
  2. ServerName benevalibre.chapril.org
  3. ServerAdmin benevalibre-support@chapril.org
  4.  
  5. ErrorLog ${APACHE_LOG_DIR}/benevalibre.chapril.org/benevalibre.chapril.org-error.log
  6. CustomLog ${APACHE_LOG_DIR}/benevalibre.chapril.org/benevalibre.chapril.org-access.log combined-proxy
  7.  
  8. Alias /static /var/www/benevalibre.chapril.org/benevalibre/var/static
  9.  
  10. <Directory /var/www/benevalibre.chapril.org/benevalibre/var/static/>
  11. Require all granted
  12. </Directory>
  13.  
  14. Alias /media /var/www/benevalibre.chapril.org/benevalibre/var/media
  15.  
  16. <Directory /var/www/benevalibre.chapril.org/benevalibre/var/media>
  17. Require all granted
  18. </Directory>
  19.  
  20. Alias /favicon.ico /var/www/benevalibre.chapril.org/benevalibre/var/static/favicon/favicon.ico
  21.  
  22. ProxyRequests Off
  23. ProxyPreserveHost On
  24.  
  25. ProxyPass /static !
  26. ProxyPass /media !
  27. ProxyPass /favicon.ico !
  28. ProxyPass / http://localhost:8345/
  29. ProxyPassReverse / http://localhost:8345/
  30.  
  31. # ChaprilInfos
  32. Include chaprilinfos.conf
  33.  
  34. </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
admin/services/benevalibre.chapril.org.txt · Dernière modification : 2026/02/07 20:11 de jeff