Déployer Strapi V4 sur Heroku
12 septembre 2022Services et pre-requis
Il est nécessaire de créer un compte sur ces différents services
- GitHub : Hébergement des sources
- Strapi : CMS open-source headless
-
Heroku : Plate-forme d'applications en ligne
À partir du 28 novembre 2022, les ressources gratuites Heroku Dynos, Heroku Postgres et Heroku Data for Redis® ne seront plus disponibles.
De la création du projet à sa mise en production
-
Créer un projet Strapi V4 :
Dans un terminal à l'emplacement du dossier de projet désiré
yarn create strapi-app dossier-du-projet --quickstart
-
Une fois l'installation terminée, le navigateur ouvre automatiquement un nouvel onglet.
Il faut enregistrer le premier utilisateur qui sera le super admin - Commit/push le projet sur GitHub
-
Allez sur Heroku.com, se connecté,
Cliquez sur "create a new app" - Entrez le nom de votre application (Heroku vous dira si le nom est disponible).
- Choisissez GitHub, puis recherchez le dépôt que vous souhaitez déployer
- Activez les déploiements automatiques, puis déployer
- Si vous avez une erreur, pas de panique, on continue !
-
Utiliser l'add-on Postgres de Heroku comme base de données
Cliquez sur le menu "Ressources"
puis dans la barre de recherche "Heroku Postgres" - Submit Order Form
- menu "Settings"
-
En cliquant sur "Reveal Config Vars" vous afficherez uniquement DATABASE_URL.
Voici à quoi devrait ressembler la syntaxe complète
postgres://{user}:{password}@{hostname}:{port}/{database-name}
-
Ajouter les "key value" selon votre DATABASE_URL
postgres://aaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbb@ccc-cc-ccc-cc:dddd/eeeeeee
KEY VALUE DATABASE_USERNAME aaaaaaaa DATABASE_PASSWORD bbbbbbbbbbbbbbbbbbbbbbbbbbb DATABASE_HOST ccc-cc-ccc-cc DATABASE_PORT dddd DATABASE_AUTHENTICATION_DATABASE eeeeeee DATABASE_NAME eeeeeee .env
vous trouveriez quatre autres jeux de "key value" à ajouter à la suiteKEY VALUE ADMIN_JWT_SECRET fffffffffff/fffff== API_TOKEN_SALT ggggg/ggggggggggg== APP_KEYS hhh/hhhh==,hhh/hhhh==,hhh/hhhh==,hhh/hhhh==, JWT_SECRET iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii== -
Ajoutez les variables d'environnement à Strapi
Dans le dossier./Config
de votre projet, créez les sous-dossierenv/production
puis les fichiersdatabase.js
etserver.js
à l'intérieur, ajoutez-y les codes suivantdatabase.js
const parse = require('pg-connection-string').parse; const config = parse(process.env.DATABASE_URL); module.exports = ({ env }) => ({ connection: { client: 'postgres', connection: { host: config.host, port: config.port, database: config.database, user: config.user, password: config.password, ssl: { rejectUnauthorized: false }, }, debug: false, }, });
server.js
module.exports = ({ env }) => ({ url: env('MY_HEROKU_URL'), });
-
Dans le terminal, lancer les commandes
yarn add pg-connection-string
et
yarn add pg
- Commit/push le code sur Github
-
Ajouter
/admin
pour accéder à Strapi