Supposons que vous utilisiez AWS RDS, ou un serveur PostgreSQL existant géré ailleurs. Il est assez simple de faire en sorte que Discourse utilise une telle configuration, sans avoir besoin d’accorder des privilèges de superutilisateur à quoi que ce soit que Discourse exécute lui-même. Voici comment.
Prérequis
Discourse exige que la version majeure de PostgreSQL corresponde à celle que nous livrons dans nos images docker ; si vous essayez d’exécuter sur une version plus récente ou plus ancienne, cela pourrait fonctionner, mais nous ne le garantissons pas, et si quelque chose casse à l’avenir, vous gardez les deux morceaux. Nous exigeons également certaines extensions qui sont distribuées dans le paquet postgresql-contrib (ou son équivalent). Vous aurez également besoin de l’extension pgvector (paquet postgresql-<version>-pgvector), requise par le plugin Discourse AI qui est livré avec le cœur de Discourse.
Générez un mot de passe aléatoire pour la connexion (20+ caractères). Dans ce guide, nous utiliserons s3kr1t comme espace réservé.
Configuration de la base de données
En tant que superutilisateur de la base de données, exécutez ce qui suit :
CREATE USER discourse PASSWORD 's3kr1t';
CREATE DATABASE discourse OWNER discourse;
\c discourse
CREATE EXTENSION hstore;
CREATE EXTENSION pg_trgm;
CREATE EXTENSION unaccent;
CREATE EXTENSION vector;
C’est tout ce qui doit être fait pour préparer la base de données à être utilisée par Discourse.
Configuration de Discourse
Configurez Discourse de la manière habituelle, puis modifiez containers/app.yml comme suit :
-
Supprimez la ligne
- "templates/postgres.template.yml"sous la clé de niveau supérieurtemplates(vers le haut du fichier) ; -
Sous la clé de niveau supérieur
env, définissez ce qui suit :DISCOURSE_DB_USERNAME: discourse DISCOURSE_DB_PASSWORD: s3kr1t DISCOURSE_DB_HOST: <IP ou nom d'hôte> DISCOURSE_DB_NAME: discourse -
Vous devez également définir ce qui suit si votre base de données n’utilise pas le port par défaut (5432) :
DISCOURSE_DB_PORT: <port> DISCOURSE_DB_BACKUP_PORT: <port> -
Reconstruisez avec
./launcher rebuild app, et vous devriez être prêt à partir.