For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt, and this page is available as Markdown at https://docs.ovhcloud.com/fr/guides/public-cloud/databases/postgresql-tuto-connect-strapi-to-managed-postgresql.md.

Construire une application Strapi connectée à Public Cloud Databases pour PostgreSQL

Voir en Markdown

Découvrez comment créer une application Strapi connectée à un service PostgreSQL managé OVHcloud

Objectif

Dans ce tutoriel, nous allons vous montrer comment créer une application Strapi utilisant le service de base de données PostgreSQL managée OVHcloud.

Warning

OVHcloud fournit des services dont vous êtes responsable de la configuration et de la gestion. Vous êtes donc responsable de leur bon fonctionnement.

Ce tutoriel est conçu pour vous aider autant que possible dans les tâches courantes. Si vous rencontrez des difficultés pour réaliser ces actions, veuillez contacter un prestataire de services spécialisé et/ou en discuter avec notre communauté d'utilisateurs. OVHcloud ne peut pas vous fournir d'assistance technique à ce sujet.

Avant de commencer

Vous devez être en mesure de commander une solution de base de données dans l'espace client OVHcloud, comme expliqué dans notre guide Bien démarrer avec Public Cloud Databases.

Comme Strapi est écrit en Javascript, des paquets tels que nodejs, nvm et yarn sont nécessaires pour ce tutoriel.


Accès à l'espace client OVHcloud

  • Lien direct :
  • Chemin de navigation : Public Cloud > Sélectionnez votre projet

En pratique

Créer une base de données PostgreSQL

Souscrire au service

Cliquez sur Databases dans le menu de navigation de gauche, sous Storage.

Cliquez sur le bouton Créer une instance. (Créer un service si votre projet contient déjà des bases de données.)

Étape 1 : sélectionner une base de données PostgreSQL

Cliquez sur la base de données PostgreSQL, puis sélectionnez la version à installer dans le menu déroulant.

Choisir la base de données PostgreSQL

Cliquez sur Suivant pour continuer.

Étape 2 : sélectionner une solution

À cette étape, choisissez le plan de service qui vous convient. Vous pourrez faire évoluer le plan après la création.

Choisir un plan

Veuillez consulter la page des capacités pour des informations détaillées sur les propriétés de chaque plan.

Cliquez sur Suivant pour continuer.

Étape 3 : sélectionner un emplacement

Choisissez la région géographique du datacenter dans lequel votre base de données sera hébergée.

Choisir la région

Cliquez sur Suivant pour continuer.

Étape 4 : configurer les nœuds de la base de données

Vous pouvez choisir le modèle de nœud à cette étape. Le nombre initial et maximal de nœuds dépend de la solution choisie à l'étape 2.

Commander des nœuds

Veuillez consulter la page des capacités pour des informations détaillées sur les ressources matérielles et les autres propriétés de l'installation de la base de données MySQL.

Notez les informations tarifaires et cliquez sur Suivant pour continuer.

Étape 5 : configurer vos options

Vous pouvez nommer votre base de données à cette étape.

Configurer les options

Cliquez sur Suivant pour continuer.

Étape 6 : résumé et confirmation

La dernière section affiche un résumé de votre commande ainsi que l'équivalent API de la création de cette instance de base de données avec l'API OVHcloud.

Confirmer la commande

Cliquez sur Créer un service de base de données pour continuer.

En quelques minutes, votre nouveau service de base de données sera déployé. Des messages dans l'espace client OVHcloud vous informeront lorsque la base de données sera prête à être utilisée.

Votre base de données est prête lorsque le statut du cluster est « Ready », le statut du nœud est vert et le nombre d'utilisateurs est réglé sur « 1 user ».

Statuts verts dans l'espace client Databases

Autoriser votre adresse IP

Warning

Pour des raisons de sécurité, la configuration réseau par défaut n'autorise aucune connexion entrante. Pour permettre à votre application ou à votre environnement de développement d'accéder à votre service de base de données PostgreSQL, vous devez ajouter vos adresses IP à la liste des adresses autorisées du service.

Ajouter vos IP à la liste des IP autorisées de la base de données

En suivant la documentation associée sur la manière d'autoriser les adresses IP appropriées, ajoutez vos IP à la liste des adresses autorisées.

Statuts verts et IP autorisées configurées dans l'espace client Databases

Tester la connexion à la base de données PostgreSQL

Un moyen simple et rapide de tester la connexion est d'utiliser l'interface en ligne de commande (CLI) de Postgre psql.

💡 Astuce : si vous êtes familier avec Docker ou Kubernetes, vous pouvez utiliser l'outil psql à l'intérieur d'une image Docker postgres au lieu d'installer l'outil en local.

Exemples :

kubectl run postgres-client --image=postgres:latest -it --rm --restart=Never -- /bin/bash

ou

docker run -it --rm postgres /bin/bash

Se connecter à la base de données

Les paramètres utiles sont les suivants :

  • L'hôte (db Host) et le port (db Port) de la base de données
    • Récupérez-les depuis l'onglet « General Information »
  • Le nom de la base de données (db Name)
    • Récupérez-le depuis l'onglet « Databases », généralement « defaultdb »
  • L'utilisateur de la base de données (db User)
    • Récupérez-le depuis l'onglet « Users », généralement « avnadmin »
  • Le mot de passe de la base de données (db Password)
    • Récupérez-le après l'avoir régénéré.
Mot de passe régénéré

Connectez-vous maintenant à la base de données avec la commande suivante

psql --dbname=defaultdb  --host=postgresql-ab1cd2ef-gh1ij2kl3.database.cloud.ovh.net --port=20184 --username=avnadmin  --password

Saisissez le mot de passe et appuyez sur Entrée.

$ psql --dbname=defaultdb  --host=postgresql-ab1cd2ef-gh1ij2kl3.database.cloud.ovh.net --port=20184 --username=avnadmin  --password
Password:
psql (14.1 (Debian 14.1-1.pgdg110+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

defaultdb=>

La configuration est terminée, votre base de données PostgreSQL managée est pleinement opérationnelle. Allons plus loin en l'utilisant avec Strapi.

Avant de commencer, préparez votre environnement

Vous devez ici vérifier vos versions de nodejs et de yarn. Selon la documentation officielle sur GitHub, vérifiez que votre installation nodejs existante correspond à « NodeJS >= 12 <= 16 ».

Warning

Aucune version spécifique de yarn n'est requise ; ce tutoriel a été réalisé avec la version 1.22.17.

Vous pouvez suivre ces différents tutoriels si vous avez besoin d'installer certains de ces outils :

Déclarer la version de nodejs

Nous voulons utiliser la dernière version LTS de nodejs. Dans votre environnement de développement, utilisez donc cette commande :

nvm use 16.13.1
$ nvm use 16.13.1
Now using node v16.13.1 (npm v8.1.2)

Configurer une nouvelle instance de Strapi

Strapi propose un moyen simple d'installer son produit, avec yarn. Exécutez la commande suivante dans un terminal :

yarn create strapi-app my-strapi

Vous serez invité à choisir entre la méthode Quickstart ou Custom, sélectionnez Custom et appuyez sur Entrée. Si vous choisissez Quickstart, les paramètres par défaut seront appliqués et un serveur démarrera automatiquement.

$ yarn create strapi-app my-strapi
yarn create v1.22.17
warning package.json: No license field
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "create-strapi-app@4.0.2" with binaries:
      - create-strapi-app
? Choose your installation type
  Quickstart (recommended)
 Custom (manual settings)

À l'étape suivante, sélectionnez postgres et appuyez sur Entrée.

? Choose your installation type Custom (manual settings)
? Choose your default database client
  sqlite
 postgres
  mysql

Ensuite, saisissez les paramètres de votre base de données PostgreSQL, et sélectionnez Yes lorsqu'il vous est demandé d'activer la connexion SSL.

? Choose your installation type Custom (manual settings)
? Choose your default database client postgres
? Database name: defaultdb
? Host: postgresql-ab1cd2ef-gh1ij2kl3.database.cloud.ovh.net
? Port: 20184
? Username: avnadmin
? Password: ********************
? Enable SSL connection: Yes

Creating a project with custom database options.
Creating a new Strapi application at /home/my/app/path/my-strapi.
Creating files.
Dependencies installed successfully.

Your application was created at /home/my/app/path/my-strapi.

Available commands in your project:

  yarn develop
  Start Strapi in watch mode. (Changes in Strapi project files will trigger a server restart)

  yarn start
  Start Strapi without watch mode.

  yarn build
  Build Strapi admin panel.

  yarn strapi
  Display all available commands.

You can start by doing:

  cd /home/my/app/path/my-strapi
  yarn develop

Done in 662.54s.

Si vous préférez choisir No lorsqu'il vous est demandé d'activer la connexion SSL, voici ce qui se passe :

$ yarn develop
yarn run v1.22.17
warning ../../../package.json: No license field
$ strapi develop
Building your admin UI with development configuration ...
Admin UI built successfully
[2021-12-31 13:16:32.632] debug: ⛔️ Server wasn't able to start properly.
[2021-12-31 13:16:32.633] error: no pg_hba.conf entry for host "109.190.xxx.xxx", user "avnadmin", database "defaultdb", no encryption
error: no pg_hba.conf entry for host "109.190.xxxx.xxxx", user "avnadmin", database "defaultdb", no encryption
    at Parser.parseErrorMessage (/home/my/app/path/my-strapi/node_modules/pg-protocol/dist/parser.js:287:98)
    at Parser.handlePacket (/home/my/app/path/my-strapi/node_modules/pg-protocol/dist/parser.js:126:29)
    at Parser.parse (/home/my/app/path/my-strapi/node_modules/pg-protocol/dist/parser.js:39:38)
    at Socket.<anonymous> (/home/my/app/path/my-strapi/node_modules/pg-protocol/dist/index.js:11:42)
    at Socket.emit (node:events:390:28)
    at Socket.emit (node:domain:475:12)
    at addChunk (node:internal/streams/readable:315:12)
    at readableAddChunk (node:internal/streams/readable:289:9)
    at Socket.Readable.push (node:internal/streams/readable:228:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:199:23)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Il s'agit d'un bug connu ; vous pouvez suivre l'issue ici : https://github.com/strapi/strapi/issues/12058.

Nous pouvons le corriger en modifiant manuellement le fichier de configuration de la base de données.
Ouvrez le fichier config/database.js.

Il devrait ressembler à ceci :

module.exports = ({ env }) => ({
  connection: {
    client: 'postgres',
    connection: {
      host: env('DATABASE_HOST', 'postgresql-ab1cd2ef-gh1ij2kl3.database.cloud.ovh.net'),
      port: env.int('DATABASE_PORT', 20184),
      database: env('DATABASE_NAME', 'defaultdb'),
      user: env('DATABASE_USERNAME', 'avnadmin'),
      password: env('DATABASE_PASSWORD', 'MyStrongPassword'),
      ssl: env.bool('DATABASE_SSL', false),
    },
  },
});

Remplacez la ligne :

ssl: env.bool('DATABASE_SSL', false),

par cette ligne :

ssl: { rejectUnauthorized: env.bool('DATABASE_SSL_SELF', false), },

Enregistrez et fermez le fichier.

Maintenant, si vous choisissez Yes lorsqu'il vous est demandé d'activer la connexion SSL, récupérez le certificat CA depuis l'espace client OVHcloud :

Télécharger le certificat

Enregistrez le fichier généré dans le dossier config, juste à côté du fichier database.js, et renommez-le en ca-certificate.crt. Ouvrez maintenant le fichier config/database.js et modifiez le bloc ssl comme suit :

const fs = require('fs');

module.exports = ({ env }) => ({
  connection: {
    client: 'postgres',
    connection: {
      host: env('DATABASE_HOST', 'postgresql-ab1cd2ef-gh1ij2kl3.database.cloud.ovh.net'),
      port: env.int('DATABASE_PORT', 20184),
      database: env('DATABASE_NAME', 'defaultdb'),
      user: env('DATABASE_USERNAME', 'avnadmin'),
      password: env('DATABASE_PASSWORD', 'MyStrongPassword'),
      ssl: {
	      ca: fs.readFileSync(`${__dirname}/ca-certificate.crt`).toString(),
      }
    },
  },
});

${__dirname} est l'emplacement du dossier config. Enregistrez et fermez le fichier, la configuration est terminée !

Démarrer Strapi

Lancez l'application Strapi avec la commande yarn :

yarn develop
$ yarn develop
yarn run v1.22.17
warning ../../../package.json: No license field
$ strapi develop
Building your admin UI with development configuration ...
Admin UI built successfully

 Project information                                                          

┌────────────────────┬──────────────────────────────────────────────────┐
│ Time               │ Fri Dec 31 2021 13:26:35 GMT+0100 (Central Euro… │
│ Launched in        │ 13253 ms                                         │
│ Environment        │ development                                      │
│ Process PID        │ 1861833                                          │
│ Version            │ 4.0.2 (node v16.13.1)                            │
│ Edition            │ Community                                        │
└────────────────────┴──────────────────────────────────────────────────┘

 Actions available                                                            

One more thing...
Create your first administrator 💻 by going to the administration panel at:

┌─────────────────────────────┐
│ http://localhost:1337/admin │
└─────────────────────────────┘

[2021-12-31 13:26:35.437] http: GET /admin (24 ms) 200
[2021-12-31 13:26:35.497] http: GET /admin/runtime~main.2d8596f7.js (7 ms) 200
[2021-12-31 13:26:35.498] http: GET /admin/main.dfa22c7a.js (3 ms) 200
[2021-12-31 13:26:35.775] http: GET /admin/project-type (1 ms) 200
[2021-12-31 13:26:35.808] http: GET /admin/497.726adbfa.chunk.js (2 ms) 200
[2021-12-31 13:26:35.813] http: GET /admin/2664.f33f619d.chunk.js (1 ms) 200
[2021-12-31 13:26:35.822] http: GET /admin/4362.c65ab24b.chunk.js (1 ms) 200
[2021-12-31 13:26:35.855] http: GET /admin/fontawesome-css.32df0f91.chunk.js (1 ms) 200
[2021-12-31 13:26:35.860] http: GET /admin/en-json.4c3c1c95.chunk.js (4 ms) 200
[2021-12-31 13:26:35.861] http: GET /admin/fr-json.c75e1a2e.chunk.js (2 ms) 200
[2021-12-31 13:26:35.870] http: GET /admin/fontawesome-css-all.90be2358.chunk.js (1 ms) 200
[2021-12-31 13:26:35.878] http: GET /admin/content-type-builder-translation-en-json.81257d0d.chunk.js (2 ms) 200
[2021-12-31 13:26:35.881] http: GET /admin/content-type-builder-translation-fr-json.2156f48c.chunk.js (4 ms) 200
[2021-12-31 13:26:35.885] http: GET /admin/email-translation-en-json.ef8208e3.chunk.js (5 ms) 200
[2021-12-31 13:26:35.886] http: GET /admin/email-translation-fr-json.76afb1c3.chunk.js (3 ms) 200
[2021-12-31 13:26:35.893] http: GET /admin/i18n-translation-en-json.a90b9dc5.chunk.js (5 ms) 200
[2021-12-31 13:26:35.894] http: GET /admin/upload-translation-en-json.d205cecd.chunk.js (5 ms) 200
[2021-12-31 13:26:35.897] http: GET /admin/i18n-translation-fr-json.482f6933.chunk.js (6 ms) 200
[2021-12-31 13:26:35.898] http: GET /admin/upload-translation-fr-json.0f4b3839.chunk.js (6 ms) 200
[2021-12-31 13:26:35.902] http: GET /admin/users-permissions-translation-en-json.3e650c44.chunk.js (7 ms) 200
[2021-12-31 13:26:35.904] http: GET /admin/users-permissions-translation-fr-json.12f3c930.chunk.js (4 ms) 200
[2021-12-31 13:26:35.906] http: GET /admin/fontawesome-js.2639263c.chunk.js (1 ms) 200
[2021-12-31 13:26:35.989] http: GET /admin/cropper-css.b71d1229.chunk.js (3 ms) 200
[2021-12-31 13:26:36.006] http: GET /admin/init (40 ms) 200
[2021-12-31 13:26:36.173] http: GET /admin/fde9b1ad0670d29a2516.png (1 ms) 200

Félicitations ! Vous venez de terminer la configuration, le serveur démarre et ouvre votre navigateur sur la page de création du compte d'administration http://localhost:1337/admin/auth/register-admin.

Page de création du compte administrateur Strapi

Remplissez les champs du formulaire comme demandé, puis appuyez sur le bouton Let's start.

Page du tableau de bord Strapi

Vous utilisez maintenant une application Strapi connectée à une base de données PostgreSQL managée OVHcloud.

Contrôles

Ajouter une entrée dans Strapi

Depuis l'interface d'administration, cliquez sur le menu Content Manager, et ajoutez un utilisateur, par exemple :

Page de création d'utilisateur Strapi

Puis appuyez sur le bouton Save.

Vérifier la base de données

Comme décrit ci-dessus, connectez-vous à la base de données PostgreSQL avec l'interface en ligne de commande psql.

$ psql --dbname=defaultdb  --host=postgresql-ab1cd2ef-gh1ij2kl3.database.cloud.ovh.net --port=20184 --username=avnadmin  --password

Puis recherchez, dans la table up_users, l'entrée précédemment créée. Ici, l'utilisateur se nomme « demo » :

defaultdb=> SELECT id,username,email,created_at FROM public.up_users WHERE username='demo';
 id | username |      email      |       created_at       
----+----------+-----------------+------------------------
  1 | demo     | demo@mymail.com | 2021-12-31 13:46:08.04
(1 row)

Nettoyage

Pour nettoyer votre installation Strapi, assurez-vous qu'elle est bien arrêtée en appuyant sur CTRL+C dans le terminal utilisé pour la lancer, puis supprimez votre dossier d'installation.

rm -rf /home/my/app/path/my-strapi/

Pour nettoyer votre base de données PostgreSQL, utilisez l'espace client OVHcloud pour supprimer votre service PostgreSQL managé :

Menu de suppression du service

Nous voulons vos retours !

Nous serions ravis de répondre à vos questions et apprécions tout retour que vous pourriez nous faire.

Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.

Vous êtes sur Discord ? Rejoignez notre chaîne via https://discord.gg/ovhcloud et interagissez directement avec l’équipe qui développe notre service de bases de données !

Cette page vous a-t-elle aidé ?