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.
Connectez-vous Ă votre espace/tableau de bord Scalingo.
Cliquez sur « créez une app » et donnez-lui un nom (par exemple
mon-site). Ce nom servira aussi dâadresse de test, du typemon-site.osc-fr1.scalingo.io.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 ? |
|---|---|---|
đŽ |
Exemple : |
le nom de domaine de lâURL principale de votre site |
đŽ |
Exemple : |
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 |
đŽ |
(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) |
đŽ |
(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 ? |
|---|---|---|
|
Lâadresse qui apparaĂźtra comme expĂ©diteur des e-mails. |
|
|
Lâadresse du serveur dâenvoi (fournie par votre prestataire e-mail) |
|
|
le port à utiliser pour le serveur SMTP défini dans le paramÚtre précédent |
|
|
le nom dâutilisateur Ă utiliser pour le serveur SMTP dĂ©fini dans |
|
|
le mot de passe du compte défini dans le paramÚtre précédent |
|
|
|
indique si une connexion TLS (sĂ©curisĂ©e) doit ĂȘtre utilisĂ©e pour le dialogue avec le serveur SMTP |
|
|
indique si une connexion TLS implicite (sĂ©curisĂ©e) doit ĂȘtre utilisĂ©e pour le dialogue avec le serveur SMTP |
|
|
dĂ©finit un dĂ©lai dâexpiration en secondes pour des opĂ©rations bloquantes telles que la tentative de connexion |
|
si |
|
|
|
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.
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 ? |
|---|---|---|
|
gĂ©nĂ©ralement le nom de lâapp â fournie par votre prestataire |
Le nom de votre espace de stockage |
|
|
La région indiquée par votre prestataire |
|
fournie par votre prestataire |
Lâadresse du service, sans |
|
clĂ© dâidentifiant unique â fournie par votre prestataire |
Lâidentifiant dâaccĂšs fourni par le prestataire |
|
clĂ© secrĂšte â fournie par votre prestataire |
La clĂ© secrĂšte dâaccĂšs fournie par le prestataire |
âȘ |
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 ? |
|---|---|---|
|
par défaut : |
permet de dĂ©finir lâadresse dâaccĂšs au back-office |
|
par défaut : |
active ou non lâusage de WhiteNoise, laisser tel quel sauf cas spĂ©ciaux |
|
par défaut : |
permet de dĂ©sactiver le panel des tutoriels sur la page dâaccueil du back-office |
|
par défaut : |
active ProConnect |
Ătape 3 â RĂ©cupĂ©rer le code du site¶
Toujours dans votre navigateur, sur le tableau de bord de votre app :
Ouvrez lâonglet « Deploy » (dĂ©ploiement).
Dans la partie « connexion à un dépÎt de code », reliez votre compte GitHub, puis sélectionnez le dépÎt de Sites Conformes.
Choisissez la branche à déployer :
production(câest la version stable, prĂ©vue pour les sites en service).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
productionest 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
productionest 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.