Le projet peut se lancer en local ou avec Docker.
Dans le cas d’une installation en local, voir la section « Préparation de l’environnement de travail » ci-dessous.
- Copier le fichier
cp .env.example .env- Générer la
SECRET_KEY
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"- Mettre les valeurs pertinentes dans le fichier
.env, notamment :DEBUG=TrueHOST_PROTO=http
- mettre la variable d’environnement
USE_UVà1dans le fichier.env - il est possible de configurer l’envoi des emails vers la console Django (cf. CONTRIBUTING.md)
- La commande suivante installe les dépendances, fait les migrations et collecte les fichiers
just init-dev- La commande suivante crée un utilisateur administrateur avec tous les droits:
just createsuperuser
just runserverdocker compose upProcédure testée sous Ubuntu.
Installer :
Sous Ubuntu, la commande pour cela est :
sudo apt install -y git python3 pipx just gettext
pipx ensurepath
pipx install uvgit clone https://github.com/numerique-gouv/sites-faciles.git
# ou en ssh
git clone git@github.com:numerique-gouv/sites-faciles.gitEt rentrer dans le dossier du dépôt
cd sites-facilesAvoir un PostgreSQL qui tourne en local (cf. procédure d’installation sur Ubuntu ou sur Mac.)
# créer un utilisateur avec les droits nécessaires aux scripts d’administration
psql -c "CREATE USER sitesconformes WITH CREATEDB LOGIN PASSWORD 'votre_mot_de_passe';" -U postgres
# créer la base de données (vide pour l’instant)
psql -c "CREATE DATABASE sitesconformes OWNER sitesconformes;" -U postgresLorsque la variable FORCE_SCRIPT_NAME est configurée, le site tourne dans un sous-répertoire, fonctionnalité qui n’est pas gérée par le serveur de développement de base de Django (runserver).
Pour tester le fonctionnement en local, il faut donc passer par gunicorn et nginx. À cette fin :
- Installer nginx si ce n'est pas déjà fait : https://nginx.org/en/docs/install.html
- Après avoir configuré les variables d’environnement (cf. ci-dessus), lancer la commande suivante pour générer et mettre en place la configuration nginx :
just nginx-generate-config-file- Lancer le serveur local via gunicorn avec la commande suivante (à la place de
just runserverdonc) :
just run_gunicorn- Accéder au site via nginx en ajoutant 1 au port utilisé par gunicorn. Par exemple, si le
.envcontient les valeurs suivantes :
DEBUG=False
HOST_PROTO=http
HOST_URL=sites-conformes.localhost
HOST_PORT=8000
FORCE_SCRIPT_NAME="/pages"
ALLOWED_HOSTS=localhost,0.0.0.0,127.0.0.1,.localhost
CSRF_TRUSTED_ORIGINS="http://127.0.0.1:18000,http://localhost:18000,http://*.localhost:18000"- On peut alors accéder au site via http:/sites-conformes.localhost:18000/pages/
Un ensemble de scripts pour gérer la base de données et les fichiers médias, que ce soit ceux de la base locale de dev ou ceux de la production.
Ils sont regroupés dans la catégorie « [Dev DB and medias management] » de la commande just.
La gestion des sauvegardes locales nécessite de définir la variable BACKUP_DIR dans le fichier .env, en spécifiant un répertoire situé hors du projet Django pour ne pas risquer de commiter une sauvegarde par erreur.
La gestion des sauvegardes de production nécessite de définir les variables supplémentaires dans le fichier .env.
Il faut aussi installer deux dépendances : d’une part, la CLI de Scalingo, en suivant la documentation d’installation et celle de connexion, pour pouvoir récupérer la dernière sauvegarde de la base de données.
D’autre part, le paquet rclone (via apt install rclone) pour gérer la récupération des fichiers média depuis un S3.
PROD_APP= (le nom de l’app Scalingo, par ex sites-conformes)
PROD_DB_NAME= (le nom de la base de données dans Scalingo, par ex sites_facil_123)
PROD_S3_BUCKET_NAME=
PROD_S3_LOCATION=
RCLONE_CONFIG_MYS3_REGION_NAME=
RCLONE_CONFIG_MYS3_ENDPOINT=
RCLONE_CONFIG_MYS3_ACCESS_KEY_ID=
RCLONE_CONFIG_MYS3_SECRET_ACCESS_KEY=
RCLONE_CONFIG_MYS3_PROVIDER=Other
RCLONE_CONFIG_MYS3_TYPE="s3"- Le préfixe
RCLONE_CONFIG_MYS3_*permet àrclonede récupérer automatiquement ces paramètres depuis les variables d’environnement.
### Données locales Il est possible de faire une sauvegarde de la base de données et des fichiers médias de l’instance via
just backup-localIl est fortement recommandé d’en faire un avant de remplacer ces données par celles de production, sinon elles seront perdues !
### Récupération des données de production Pour récupérer la base de données et les fichiers média de production en local, taper la commande suivante :
just descend-prodIl est possible de restaurer les données locales ou de production via, respectivement,
just restore-localet
just restore-prod