Installation par vous même (technique)
Si l’utilisation de Sites Faciles au quotidien ne nécessite aucune compétence technique, l’installation est encore une étape complexe. Cette page explique comment déployer votre site.
Prérequis
- un serveur permettant de servir du Python 3.10 ou supérieur et Django 5.0 (par exemple Scalingo ou un VPS OVH)
- une base de données PostgreSQL 12 ou supérieur
- un stockage de fichier (S3 en cas de déploiement sur Scalingo)
- un serveur web WSGI ou ASGI, par exemple Gunicorn + Nginx (Scalingo prend automatiquement en charge cet aspect)
- un nom de domaine (pas forcément nécessaire au moment du déploiement initial, cela peut être changé à tout moment).
Si le site a très peu de trafic (notamment pendant la période de création/rédaction avant mise en production), un petit serveur suffit (sur Scalingo, Sites faciles peut être déployé sur les configurations les plus petites, en l'occurrence un container taille S et une base de données PostgreSQL Starter - 512 Mo.)
Procédure de déploiement sur Scalingo
Au sein de l'Opérateur des Produits Interministériels de la DINUM, Scalingo est utilisé pour ce type d’usage. Ce document décrit comment procéder à l’installation par ce moyen.
1. Créer une app Scalingo
Si vous n’avez pas d’accès pour cela, contactez-nous.
Dans la suite de cet exemple, nous allons présumer qu’une app nommée test-sites-faciles
a été créée, répondant à l’URL https://test-sites-faciles.osc-fr1.scalingo.io/ pendant le développement, puis à https://test-sites-faciles.numerique.gouv.fr une fois en production.
2. Créer un addon PostgreSQL
Un starter 512M suffit en principe. Il est toujours possible d’augmenter la taille après coup
3. Ajouter les variables d’environnement
3.1 Paramètres principaux
A minima, les variables suivantes doivent êtres définies :
HOST_URL
: le nom de domaine de l’URL principale de votre site, par exemple «test-sites-faciles.osc-fr1.scalingo.io
»ALLOWED_HOSTS
: le ou les domaines autorisés à accéder au site, séparés par des virgules s’il y en a plusieurs. On peut déjà entrer le domaine définitif si on le connaît, donc : «test-sites-faciles.osc-fr1.scalingo.io,test-sites-faciles.numerique.gouv.fr
»SECRET_KEY
: clé secrète, par exemple générée dans un terminal avec la commande «openssl rand -hex 32
»
Le paramètre DATABASE_URL
a normalement été rempli automatiquement par Scalingo à l’étape 2, vérifiez que c’est bien le cas.
3.2 Paramètres pour l’envoi de courriels
Afin de pouvoir envoyer des courriels de réinitialisation de mot de passe ou de notification quand une réponse à un formulaire est soumise, il faut également configurer les paramètres suivants :
DEFAULT_FROM_EMAIL
: l’adresse d’envoi des courrielsEMAIL_HOST
: l’hôte à utiliser pour envoyer des courriels.EMAIL_PORT
: le port à utiliser pour le serveur SMTP défini dans le paramètre précédentEMAIL_HOST_USER
: le nom d’utilisateur à utiliser pour le serveur SMTP défini dans EMAIL_HOST. S’il est vide, Django ne tente pas de s’authentifier.EMAIL_HOST_PASSWORD
: le mot de passe du compte défini dans le paramètre précédentEMAIL_USE_TLS
: indique si une connexion TLS (sécurisée) doit être utilisée pour le dialogue avec le serveur SMTPEMAIL_USE_SSL
= indique si une connexion TLS implicite (sécurisée) doit être utilisée pour le dialogue avec le serveur SMTP.EMAIL_TIMEOUT=30
: définit un délai d’expiration en secondes pour des opérations bloquantes telles que la tentative de connexion. Ne doit pas être mis à zéro.EMAIL_SSL_KEYFILE
: si EMAIL_USE_SSL ou EMAIL_USE_TLS valent True, vous pouvez définir de manière facultative le chemin vers un fichier de clé privée de type PEM à utiliser pour la connexion SSL.EMAIL_SSL_CERTFILE
: si EMAIL_USE_SSL ou EMAIL_USE_TLS valent True, vous pouvez définir de manière facultative le chemin vers un fichier de chaîne de certificat de type PEM à utiliser pour la connexion SSL.WAGTAIL_PASSWORD_RESET_ENABLED=True
: autorise les utilisateurs à faire une demande de réinitialisation de mot de passe.
Lorsque le paramètre WAGTAIL_PASSWORD_RESET_ENABLED
est à True
, le lien vers le formulaire de réinitalisation de mot de passe devient visible dans le formulaire de connexion.
Voir aussi les documentations de Django et Wagtail.
3.3 Configurer le stockage objet
(Cette étape est obligatoire sur Scalingo, qui ne dispose pas de stockage permanent, mais optionnelle dans le cas d’un déploiement sur un VPS)
Configurez un object storage S3, chez CleverCloud ou OVH par exemple.
Ajoutez les variables d’environnement suivantes à votre application Scalingo :
S3_BUCKET_NAME= (normalement, le nom de l’app)
S3_BUCKET_REGION=
S3_HOST=(sans le https://)
S3_KEY_ID=
S3_KEY_SECRET=
S3_LOCATION= (optionnel, utiliser le nom de l’app est recommandé, cf. ci-dessous)
Le paramètre S3_LOCATION
est optionnel mais permet de partager le bucket S3 avec plusieurs installations de Sites faciles. Il est recommandé d’utilier le nom de l’app comme valeur (ici test-sites-faciles
)
3.4 Paramètre supplémentaire
Il est aussi possible de modifier le paramètre suivant si besoin:
- WAGTAILADMIN_PATH
: l’adresse de l’administration (par défaut, "cms-admin/
")
5. Déployer le code
Dans l’onglet « Déploiement » de votre app Scalingo, connectez et configurez le lien au dépôt de code https://github.com/numerique-gouv/sites-faciles (si vous n'avez pas d'accès à ce dépôt, vous pouvez faire un fork)
Déployez la branche « production ».
6. Créer un compte super-administrateur pour votre première connexion à l’admin
Si ce n’est pas déjà fait, installez le CLI de Scalingo https://doc.scalingo.com/platform/cli/start
Puis, dans un terminal, entrez :
APP_NAME=test-sites-faciles
scalingo -a ${APP_NAME} run python manage.py createsuperuser
et donnez les identifiants qui vous permettront d’accéder à l’interface.
7. Initialiser le contenu du site
scalingo -a ${APP_NAME} run python manage.py migrate
scalingo -a ${APP_NAME} run python manage.py collectstatic --noinput --ignore="*.sass"
scalingo -a ${APP_NAME} run python manage.py set_config
scalingo -a ${APP_NAME} run python manage.py import_dsfr_pictograms
scalingo -a ${APP_NAME} run python manage.py create_starter_pages
8. Se connecter à l’administration du site
C’est l’interface depuis laquelle vous pourrez éditer votre site. Elle est accessible depuis <votre_URL>/cms-admin/` (par exemple : “https://test-sites-faciles.osc-fr1.scalingo.io/cms-admin/” )
Ici, entrez les identifiants du super-utilisateur créé à l’étape 6.
Vous pouvez notamment configurer le site dans Configuration > Configuration du site, et ajouter d’autres utilisateurs via Configuration > Utilisateurs.
9. Changement de l’adresse du site
Le site est pour l’instant sur le domaine correspondant à l’app Scalingo. Une fois que vous êtes prêts à basculer sur l’URL définitive, il faut :
- Dans la configuration du DNS, faire une redirection CNAME de test-sites-faciles.numerique.gouv.fr vers test-sites-faciles.osc-fr1.scalingo.io
- Dans l’app Scalingo, dans l’onglet Environnement, passer la valeur de la variable d’environnement
HOST_URL
àtest-sites-faciles.numerique.gouv.fr
(etALLOWED_HOSTS
àtest-sites-faciles.osc-fr1.scalingo.io, test-sites-faciles.numerique.gouv.fr
si ce n’était pas déjà le cas), puis relancer l’app. - Dans l’administration de Sites faciles, aller dans Configuration > Sites, sélectionner le site à modifier et mettez
test-sites-faciles.numerique.gouv.fr
dans le champ Nom d’hôte, puis sauvegardez.