Sur Scalingo (ou PaaS) — 🟱 DĂ©butant¶

Scalingo est le PaaS (Platform as a Service) utilisĂ© par la DINUM pour dĂ©ployer Sites Conformes. C’est la mĂ©thode la plus simple et la plus documentĂ©e, recommandĂ©e si vous n’avez pas d’équipe d’administration systĂšme : la plateforme gĂšre elle-mĂȘme le serveur web, le systĂšme d’exploitation, les mises Ă  jour de sĂ©curitĂ© de l’infrastructure, etc.

Astuce

C’est quoi un PaaS ? Le sigle veut dire « Platform as a Service » (plateforme en tant que service). ConcrĂštement, c’est un site web sur lequel vous dĂ©posez votre application, et qui s’occupe de tout le reste (le serveur, sa sĂ©curitĂ©, sa maintenance) Ă  votre place. Vous travaillez depuis votre navigateur, sans jamais gĂ©rer de serveur vous-mĂȘme.

Avertissement

Une Ă©tape demande un petit outil Ă  installer. La quasi-totalitĂ© des Ă©tapes se fait depuis le site de Scalingo, dans votre navigateur. Une seule Ă©tape (l’initialisation du site, Ă©tape 4) nĂ©cessite un petit logiciel gratuit appelĂ© « CLI Scalingo ». Pas d’inquiĂ©tude : la marche Ă  suivre est dĂ©taillĂ©e le moment venu, et si vous travaillez avec un collĂšgue technique, c’est l’étape idĂ©ale Ă  lui confier.

Prérequis¶

  • Un compte Scalingo

  • Un compte GitHub ayant accĂšs au code de Sites Conformes (pour le rĂ©cupĂ©rer). Rapprochez-vous de l’équipe Sites Conformes pour cette Ă©tape qui vous indiquera la marche Ă  suivre (rĂ©cupĂ©rer l’accĂšs au rĂ©pertoire GitHub ou crĂ©er un fork).

  • Un espace de stockage S3 (voir l’encart ci-dessous). Ce n’est pas indispensable pour le tout premier essai, mais le deviendra dĂšs que vous ajouterez des images.

Astuce

C’est quoi un stockage S3 ? C’est un espace en ligne, chez un autre prestataire (OVH ou CleverCloud par exemple), oĂč sont rangĂ©es les images et les documents que vous mettrez sur votre site. Sur Scalingo, ces fichiers ne peuvent pas rester sur le serveur du site : sans S3, les images ajoutĂ©es disparaĂźtraient Ă  la prochaine mise Ă  jour. On le configure Ă  l’étape 2c.

Étape 1 — CrĂ©er l’application et sa base de donnĂ©es¶

Tout se passe dans votre navigateur, sur le tableau de bord Scalingo.

  1. Connectez-vous Ă  votre espace/tableau de bord Scalingo.

  2. Cliquez sur « crĂ©ez une app » et donnez-lui un nom (par exemple mon-site). Ce nom servira aussi d’adresse de test, du type mon-site.osc-fr1.scalingo.io.

  3. Une fois l’application créée, ajoutez-lui une base de donnĂ©es : dans le menu de l’app, allez dans « Addons » (modules complĂ©mentaires), choisissez PostgreSQL, puis l’offre Starter – 512 Mo (suffisante pour dĂ©marrer).

Astuce

C’est quoi une base de donnĂ©es ? C’est l’endroit oĂč votre site range toutes ses informations (les pages que vous crĂ©ez, les comptes, les rĂ©glages). PostgreSQL est le type de base de donnĂ©es utilisĂ© par Sites Conformes. Sur Scalingo, l’ajouter est aussi simple que d’activer une option.

Astuce

C’est quoi un « addon » ? Un service supplĂ©mentaire que l’on branche Ă  son application en quelques clics, ici la base de donnĂ©es.

Astuce

Quelle configuration pour mon app ? 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 Conformes 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.

Étape 2 — Renseigner les rĂ©glages (variables d’environnement)¶

Astuce

C’est quoi une « variable d’environnement » ? C’est un rĂ©glage que l’on donne Ă  l’application sous forme de nom + valeur. Par exemple, le rĂ©glage nommĂ© HOST_URL reçoit comme valeur l’adresse de votre site. L’application lit ces rĂ©glages au dĂ©marrage pour savoir comment se comporter.

Les variables d’environnement se configurent depuis le tableau de bord de votre application Scalingo, dans l’onglet « Environnement ». Vous y verrez deux colonnes, une pour le nom du rĂ©glage et une pour sa valeur. Pour chaque ligne du tableau ci-dessous, vous crĂ©ez une entrĂ©e, vous tapez le nom Ă  gauche et la valeur Ă  droite, puis vous enregistrez.

Voir aussi

Liste complĂšte de rĂ©fĂ©rence : tous les rĂ©glages possibles sont listĂ©s dans le fichier .env.example du dĂ©pĂŽt de Sites Conformes, et dĂ©crits un par un dans la rĂ©fĂ©rence des variables d’environnement. Vous n’avez pas Ă  le copier : il sert juste de rĂ©fĂ©rence si vous cherchez le nom exact d’un rĂ©glage ou sa valeur par dĂ©faut.

Indication

Tous les rĂ©glages ne sont pas obligatoires. Pour un premier dĂ©ploiement, seule la partie a ci-dessous est nĂ©cessaire. Les parties b, c et d s’ajoutent plus tard, selon vos besoins.

Pour s’y retrouver :

  • 🔮 INDISPENSABLE : sans ce rĂ©glage, le site ne dĂ©marre pas.

  • 🟠 RECOMMANDÉ : nĂ©cessaire pour un site complet (e-mails, images), mais pas pour un premier essai.

  • âšȘ OPTIONNEL : seulement si vous avez un besoin prĂ©cis.

a. RĂ©glages principaux — 🔮 INDISPENSABLE¶

Créez ces réglages. Le tableau indique exactement quoi taper dans la colonne « valeur » :

Nom du réglage (à gauche)

Valeur Ă  taper (Ă  droite) ou exemple

À quoi ça sert ?

🔮 HOST_URL

Exemple : test-sites-faciles.osc-fr1.scalingo.io

le nom de domaine de l’URL principale de votre site

🔮 ALLOWED_HOSTS

Exemple : test-sites-faciles.osc-fr1.scalingo.io,test-sites-faciles.numerique.gouv.fr

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

🔮 SECRET_KEY

(voir encart ci-dessous)

clĂ© secrĂšte, par exemple gĂ©nĂ©rĂ©e dans un terminal (rapprochez-vous d’un utilisateur technique pour cette Ă©tape)

🔮 DATABASE_URL

(rempli automatiquement)

Ce paramĂštre a normalement Ă©tĂ© rempli automatiquement par Scalingo Ă  l’étape 1, vĂ©rifiez que c’est bien le cas

Indication

Comment obtenir la valeur de SECRET_KEY ? Cette clĂ© protĂšge les connexions et les mots de passe de votre site. Elle doit rester secrĂšte et ĂȘtre vraiment tirĂ©e au hasard. N’utilisez pas un gĂ©nĂ©rateur de mot de passe trouvĂ© sur internet : vous ne savez pas si le site garde une copie de votre clĂ©, ce qui compromettrait la sĂ©curitĂ© de votre site.

La façon sĂ»re de l’obtenir est de la faire fabriquer par votre application elle-mĂȘme, Ă  l’étape 4 (qui utilise le petit outil « CLI »). En attendant, vous pouvez :

  • soit demander Ă  un collĂšgue technique de vous fournir une clĂ© gĂ©nĂ©rĂ©e sur sa machine ;

  • soit revenir remplir ce rĂ©glage juste aprĂšs l’étape 4, en utilisant la commande indiquĂ©e lĂ -bas.

Tant que SECRET_KEY n’est pas renseignĂ©e, le site ne dĂ©marrera pas. C’est normal, vous la remplirez Ă  l’étape 4.

b. RĂ©glages pour l’envoi d’e-mails — 🟠 RECOMMANDɶ

Ces rĂ©glages permettent au site d’envoyer des e-mails (rĂ©initialisation de mot de passe, notification quand un formulaire est rempli).

Vous pouvez les laisser de cÎté pour un premier essai et y revenir ensuite.

Vous aurez besoin des informations de connexion d’un service d’envoi d’e-mails (fournies par votre service informatique ou un prestataire).

Nom du réglage (à gauche)

Valeur Ă  taper (Ă  droite) ou exemple

À quoi ça sert ?

DEFAULT_FROM_EMAIL

L’adresse qui apparaĂźtra comme expĂ©diteur des e-mails.
Si ce réglage est absent ou vide, le reste des réglages concernant les e-mails sera ignoré.

EMAIL_HOST

L’adresse du serveur d’envoi (fournie par votre prestataire e-mail)

EMAIL_PORT

le port à utiliser pour le serveur SMTP défini dans le paramÚtre précédent

EMAIL_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édent

EMAIL_USE_TLS

True (recommandé) / False

indique si une connexion TLS (sĂ©curisĂ©e) doit ĂȘtre utilisĂ©e pour le dialogue avec le serveur SMTP

EMAIL_USE_SSL

True / False

indique si une connexion TLS implicite (sĂ©curisĂ©e) doit ĂȘtre utilisĂ©e pour le dialogue avec le serveur SMTP

EMAIL_TIMEOUT

30 (ne doit pas ĂȘtre mis Ă  0 !)

dĂ©finit un dĂ©lai d’expiration en secondes pour des opĂ©rations bloquantes telles que la tentative de connexion

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

WAGTAIL_PASSWORD_RESET_ENABLED

True

active le lien « mot de passe oublié »

Astuce

Ces rĂ©glages trĂšs techniques sont gĂ©nĂ©ralement fournis clĂ©s en main par votre service informatique ou votre prestataire de messagerie. Recopiez simplement les valeurs qu’ils vous donnent.

Voir aussi les documentations de Django et Wagtail.

c. ParamĂštres pour le stockage objet — 🟠 RECOMMANDɶ

À configurer dùs que vous commencez à ajouter des images ou des documents au site (sinon ils disparaütraient à la mise à jour suivante). Il vous faut d’abord un espace S3 chez un prestataire (OVH, CleverCloud
), qui vous fournira les cinq informations ci-dessous.

  • Configurez un object storage S3, chez CleverCloud ou OVH par exemple.

  • Ajoutez les variables d’environnement suivantes Ă  votre application Scalingo :

Nom du réglage (à gauche)

Valeur Ă  taper (Ă  droite) ou exemple

À quoi ça sert ?

S3_BUCKET_NAME

gĂ©nĂ©ralement le nom de l’app — fournie par votre prestataire

Le nom de votre espace de stockage

S3_BUCKET_REGION

eu-west-3 — fournie par votre prestataire

La région indiquée par votre prestataire

S3_HOST

fournie par votre prestataire

L’adresse du service, sans https://

S3_KEY_ID

clĂ© d’identifiant unique — fournie par votre prestataire

L’identifiant d’accùs fourni par le prestataire

S3_KEY_SECRET

clĂ© secrĂšte — fournie par votre prestataire

La clĂ© secrĂšte d’accĂšs fournie par le prestataire

âšȘ S3_LOCATION

optionnel, permet de partager un mĂȘme S3 pour plusieurs sites

Astuce

C’est quoi un « bucket » ? C’est simplement le nom technique d’un espace de rangement S3 (littĂ©ralement un « seau »). Votre prestataire vous fait en crĂ©er un et vous donne son nom et deux clĂ©s d’accĂšs, que vous recopiez ici.

Le paramĂštre S3_LOCATION est optionnel mais permet de partager le bucket S3 avec plusieurs installations de Sites Conformes. Il est recommandĂ© d’utiliser le nom de l’app comme valeur (ici test-sites-faciles).

Une alternative au S3 est le stockage des médias directement en base PostgreSQL, voir Stockage des médias en base de données (DB Storage).

d. ParamĂštres supplĂ©mentaires — âšȘ OPTIONNEL¶

À ne toucher que si vous avez un besoin particulier ; sinon, ignorez cette partie.

Nom du réglage (à gauche)

Valeur Ă  taper (Ă  droite) ou exemple

À quoi ça sert ?

WAGTAILADMIN_PATH

par défaut : cms-admin/

permet de dĂ©finir l’adresse d’accĂšs au back-office

SF_USE_WHITENOISE

par défaut : 0 (False) / 1 (True)

active ou non l’usage de WhiteNoise, laisser tel quel sauf cas spĂ©ciaux

SF_DISABLE_TUTORIALS

par défaut : True

permet de dĂ©sactiver le panel des tutoriels sur la page d’accueil du back-office

PROCONNECT_ACTIVATED

par défaut : False

active ProConnect

Étape 3 — RĂ©cupĂ©rer le code du site¶

Toujours dans votre navigateur, sur le tableau de bord de votre app :

  1. Ouvrez l’onglet « Deploy » (dĂ©ploiement).

  2. Dans la partie « connexion à un dépÎt de code », reliez votre compte GitHub, puis sélectionnez le dépÎt de Sites Conformes.

  3. Choisissez la branche Ă  dĂ©ployer : production (c’est la version stable, prĂ©vue pour les sites en service).

  4. Lancez le déploiement.

    Astuce

    Si vous n’avez pas accĂšs au dĂ©pĂŽt : crĂ©ez-en une copie personnelle gratuite en cliquant sur « Fork » sur la page GitHub du projet, puis reliez cette copie Ă  Scalingo. Un « fork » est simplement votre exemplaire personnel du code. Attention : pour bĂ©nĂ©ficier rĂ©guliĂšrement des mises Ă  jour, il est nĂ©cessaire de mettre Ă  jour votre fork lorsqu’une nouvelle version de Sites Conformes est publiĂ©e.

    Astuce

    C’est quoi un « dĂ©pĂŽt » et une « branche » ? Le dĂ©pĂŽt est l’endroit oĂč est rangĂ© le code du logiciel Sites Conformes sur GitHub. Une branche est une version de ce code : la branche production est la version finie et testĂ©e, celle qu’on installe pour un vrai site.

Étape 4 — Mettre le site en route (initialisation)¶

C’est la seule Ă©tape qui demande le petit outil « CLI Scalingo ». Elle ne se fait qu’une fois, Ă  la premiĂšre installation.

Astuce

C’est quoi la « CLI » ? Le sigle signifie « Command Line Interface » (interface en ligne de commande). C’est un petit outil gratuit que vous installez sur votre ordinateur, et dans lequel vous tapez des commandes pour piloter votre application Scalingo.

Pour cette Ă©tape, vous n’aurez qu’à copier-coller les commandes ci-dessous, sans rien avoir Ă  comprendre ni inventer.

Note

Vous prĂ©fĂ©rez ne pas toucher au terminal ? Cette Ă©tape est la candidate idĂ©ale Ă  confier Ă  un collĂšgue technique, Ă  votre service informatique, ou Ă  l’équipe de Sites Conformes. Une fois faite, vous reprenez la main entiĂšrement dans le navigateur.

a. Installer le CLI en suivant la page officielle (instructions pour Windows, Mac et Linux) : https://doc.scalingo.com/platform/cli/start. Vous vous y connecterez ensuite avec votre compte Scalingo.

b. GĂ©nĂ©rer la clĂ© secrĂšte (celle de l’étape 2a) en copiant-collant cette commande, aprĂšs avoir remplacĂ© mon-site par le nom de votre application :

scalingo -a mon-site run python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"

Une longue suite de 50 caractĂšres s’affiche : copiez-la, retournez dans l’onglet « Environment » (Ă©tape 2) et collez-la comme valeur de SECRET_KEY.

c. Créer votre compte administrateur (celui qui vous permettra de vous connecter pour gérer le site) :

APP_NAME=test-sites-faciles
scalingo -a ${APP_NAME} run python manage.py createsuperuser

L’outil vous demandera de choisir un identifiant et un mot de passe. Notez-les soigneusement : ce sont vos accùs à l’administration du site.

Initialiser le contenu du site en faisant passer ces commandes via la CLI Scalingo:

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

Astuce

Et les autres commandes de mise en route ? Le remplissage initial du site (crĂ©ation des premiĂšres pages, prĂ©paration de la recherche, etc.) est lancĂ© automatiquement par Scalingo aprĂšs chaque dĂ©ploiement. Vous n’avez donc normalement que les commandes ci-dessus Ă  exĂ©cuter vous-mĂȘme. Si jamais une commande devait ĂȘtre relancĂ©e manuellement, elle se prĂ©senterait sous la mĂȘme forme : scalingo -a mon-site run python manage.py <nom-de-la-commande>.

Votre site est maintenant en ligne Ă  l’adresse dĂ©finie dans HOST_URL, et son administration est accessible par dĂ©faut Ă  l’adresse de votre site suivie de /cms-admin/.

Indexation des contenus¶

Les contenus des pages sont indexés pour permettre la recherche sur le site, par la commande update_index (cf. la documentation de Wagtail).

Sur Scalingo, cette commande est lancĂ©e automatiquement aprĂšs chaque dĂ©ploiement : vous n’avez rien Ă  faire pour que la recherche fonctionne.

Il est toutefois recommandĂ© de programmer une rĂ©indexation hebdomadaire, pour corriger d’éventuels Ă©carts entre l’index et les contenus. Le dĂ©pĂŽt fournit un fichier cron.json.example prĂȘt Ă  l’emploi :

{
  "jobs": [
    {
      "command": "0 3 * * SUN python manage.py update_index"
    }
  ]
}

Renommez-le en cron.json à la racine du projet et redéployez : Scalingo lancera la réindexation chaque dimanche à 3 h du matin. Voir la documentation du planificateur Scalingo.

Mise à jour¶

La mise Ă  jour est presque entiĂšrement automatique et se fait dans le navigateur.

  • Si le dĂ©ploiement automatique est activĂ© (le plus courant : la branche production est reliĂ©e Ă  votre app), il n’y a rien Ă  faire : Ă  chaque nouvelle version du logiciel, Scalingo redĂ©ploie tout seul et lance automatiquement les opĂ©rations techniques nĂ©cessaires.

Avertissement

Si votre app est reliĂ©e Ă  un fork (une copie personnelle du dĂ©pĂŽt officiel, voir l’étape 3), pensez Ă  mettre ce fork Ă  jour rĂ©guliĂšrement depuis GitHub. Scalingo dĂ©ploie le code de votre fork, pas celui du dĂ©pĂŽt officiel : tant que le fork n’est pas synchronisĂ©, vous ne recevez aucune nouvelle version, mĂȘme avec le dĂ©ploiement automatique activĂ©. Sur la page GitHub de votre fork, le bouton « Sync fork » rĂ©cupĂšre les derniĂšres modifications du dĂ©pĂŽt d’origine ; le dĂ©ploiement Scalingo se dĂ©clenche ensuite (automatiquement ou manuellement selon votre rĂ©glage).

  • Si le dĂ©ploiement est manuel : retournez dans l’onglet « Deploy » et cliquez pour relancer un dĂ©ploiement de la branche production.

Astuce

Et mes données pendant la mise à jour ? Vos contenus (pages, images, comptes) sont conservés : ils sont rangés dans la base de données et le stockage S3, qui ne sont pas touchés par une mise à jour du code.

Important

Sauvegardes : sur Scalingo, la base de donnĂ©es PostgreSQL est sauvegardĂ©e automatiquement par la plateforme. Vous pouvez consulter et tĂ©lĂ©charger ces sauvegardes depuis l’interface de l’addon PostgreSQL, dans votre navigateur. Voir aussi Sauvegarde locale de la base de donnĂ©es et des mĂ©dias.