Application de gestion de l'inventaire et des emprunts de la bibliothèque du Club BD Manga de l'INSA Lyon. Elle présente aussi les actualités de l’association, avec les informations pratiques pour la rejoindre.
L'application est écrite en Python avec le framework Django. 🐍
- installer
mariadb
oumysql
(les deux sont interchangeables) mariadb -u root -p -e "create database BDMANGA"
- cloner le projet
python -m venv env
source env/bin/activate
pip install -r requirements.txt
- définir les variables d'environnement suivantes :
DB_NAME=BDMANGA
DB_USER=root
(utilisateur de la db)DB_PASSWORD=*****
(mot de passe de l'utilisateur)DEBUG=1
pour faciliter le développement
python manage.py migrate
(créé le schéma de la base de donnée)python manage.py createsuperuser
(pour avoir accès au site admin)python manage.py runserver
- installer Docker
- cloner le projet
- créer un fichier
.env
et définir les mêmes variables d'environnements. docker compose up --build
Docker est prévu pour le déploiement. Ce n'est pas pratique pour le développement, car il faut rebuild à chaque changement (à moins d'adapter le docker-compose.yml
).
Des backups journalières de la base de donnée sont réalisées sur le serveur avec une GitHub action. Il faut penser à les copier régulièrement, par exemple avec scp
. Il peut aussi être utile de créer des backups manuellement, et surtout de les restaurer :
mariadb-dump -u root -p BDMANGA > dump.sql
mariadb -u root -p BDMANGA < dump.sql
docker exec -i clubbdmanga-db-1 mariadb-dump -u django -p BDMANGA > dump.sql
cat dump.sql | docker exec -i clubbdmanga-db-1 mariadb -u django -p BDMANGA
Pour avoir un shell dans docker :
docker exec -it clubbdmanga-app-1 bash
Le déploiement se fait automatiquement sur le serveur hébergeant l'action runner à chaque push sur main
, ou en lançant l'action manuellement. Il y a une autre action pour arrêter l'application.
- Installer Docker et nginx.
- Définir les variables d'environnement comme plus haut, et ajouter :
SITE_URL=bdmanga.asso-insa-lyon.fr
SECRET_KEY=************
a générer avecdjango.core.management.utils.get_random_secret_key
DEBUG=0
(DEBUG=1 compromet la sécurité)
- Clone et lancer l'application avec
docker compose up --build
- Copier nginx.conf dans
/etc/nginx/sites-available/bdmanga
ln -s /etc/nginx/sites-available/bdmanga /etc/nginx/sites-enabled/bdmanga
sudo systemtcl reload nginx
- Vérifier que le site est accessible en HTTP (malgré l'avertissement que la connexion n'est pas sécurisée).
- Installer Certbot et suivre les instructions pour générer un certificat, en laissant Certbot modifier la config nginx.
sudo systemtcl reload nginx
- Le site doit maintenant être accessible en HTTPS.
Plutôt que de définir les variables et lancer l'application manuellement, on peut utiliser les actions avec un self hosted runner. Les paramètres du repo fournissent un script pour l'installer. Les variables doivent alors être définies dans un "environnement" GitHub, là encore dans les paramètres du repo.