Comment utiliser PostgreSQL avec votre application Ruby on Rails sur Ubuntu 18.04

introduction

Lorsque vous utilisez le framework Web Ruby on Rails, votre application est configurée par défaut pour utiliser SQLite. SQLite est une base de données relationnelle légère, portable et conviviale qui fonctionne particulièrement bien dans les environnements à faible mémoire et qui fonctionnera bien dans de nombreux cas. Toutefois, pour les applications très complexes qui nécessitent une intégrité des données et une extensibilité des programmes plus fiables, une base de données PostgreSQL constituera un choix plus robuste et plus flexible. Pour configurer votre configuration Ruby on Rails de manière à utiliser PostgreSQL, vous devez effectuer quelques étapes supplémentaires pour le rendre opérationnel.

Dans ce didacticiel, vous allez configurer un environnement de développement Ruby on Rails connecté à une base de données PostgreSQL sur un serveur Ubuntu 18.04. Vous allez installer et configurer PostgreSQL, puis tester votre configuration en créant une application Rails qui utilise PostgreSQL en tant que serveur de base de données.

Conditions préalables

Ce tutoriel nécessite les éléments suivants:

Étape 1 - Installation de PostgreSQL

Afin de configurer Ruby on Rails pour créer votre application Web avec PostgreSQL en tant que base de données, vous devez d’abord installer la base de données sur votre serveur.

En utilisant les privilèges sudo +, mettez à jour votre index de paquet APT pour vous assurer que vos référentiels sont à jour:

sudo apt update

Ensuite, installez PostgreSQL et ses bibliothèques de développement:

sudo apt install postgresql postgresql-contrib libpq-dev

Dans la commande précédente, le paquet + postgresql + contient le programme principal PostgreSQL, alors que https://packages.debian.org/jessie/postgresql-contrib-9.4 [+ postgresql-contrib +] ajoute plusieurs fonctionnalités PostgreSQL qui étendent ses fonctions. capacités. + libpq-dev + est une bibliothèque PostgreSQL qui permet aux clients d’envoyer des requêtes et de recevoir des réponses du serveur d’arrière-plan, ce qui permettra à votre application de communiquer avec sa base de données.

Une fois PostgreSQL et ses dépendances installés, l’étape suivante consiste à créer un rôle que votre application Rails utilisera ultérieurement pour créer votre base de données.

Étape 2 - Création d’un nouveau rôle de base de données

Dans PostgreSQL, les * rôles * peuvent être utilisés de la même manière que les utilisateurs sous Linux pour organiser les autorisations et les autorisations. Cette étape vous montrera comment créer un nouveau rôle de super utilisateur pour votre nom d’utilisateur Linux, ce qui vous permettra d’opérer dans le système PostgreSQL pour créer et configurer des bases de données.

Pour créer un rôle de super utilisateur PostgreSQL, utilisez la commande suivante en remplaçant le mot en surbrillance par votre nom d’utilisateur Ubuntu 18.04:

sudo -u postgres createuser -s  -P

Comme vous avez spécifié le drapeau + -P +, vous serez invité à entrer un mot de passe pour votre nouveau rôle. Entrez le mot de passe souhaité en veillant à l’enregistrer afin que vous puissiez l’utiliser ultérieurement dans un fichier de configuration.

Dans cette commande, vous avez utilisé + createuser + pour créer un rôle nommé ++. Le + -s + a donné à cet utilisateur de super privilèges, et + sudo -u + vous a permis d’exécuter la commande à partir du compte + postgres + créé automatiquement lors de l’installation de PostgreSQL.

Si vous n’avez pas utilisé l’indicateur + -P + et souhaitez définir un mot de passe pour le rôle après l’avoir créé, entrez dans la console PostgreSQL à l’aide de la commande suivante:

sudo -u postgres psql

Vous recevrez le résultat suivant, ainsi que l’invite de la console PostgreSQL:

Outputpsql ( (Ubuntu -0ubuntu0.18.04.1))
Type "help" for help.

postgres=#

La console PostgreSQL est indiquée par l’invite + postgres = # +. À l’invite de PostgreSQL, entrez cette commande pour définir le mot de passe du nouveau rôle de base de données, en remplaçant le nom en surbrillance par celui que vous avez créé:

\password

PostgreSQL vous demandera un mot de passe. Entrez le mot de passe souhaité à l’invite, puis confirmez-le.

Maintenant, quittez la console PostgreSQL en entrant cette commande:

\q

Votre invite habituelle va maintenant réapparaître.

Dans cette étape, vous avez créé un nouveau rôle PostgreSQL avec des privilèges de super utilisateur. Vous êtes maintenant prêt à créer une nouvelle application Rails qui utilise ce rôle pour créer une base de données.

Étape 3 - Création d’une nouvelle application Rails

Avec un rôle configuré pour PostgreSQL, vous pouvez maintenant créer une nouvelle application Rails configurée pour utiliser PostgreSQL en tant que base de données.

Tout d’abord, accédez à votre répertoire personnel:

cd ~

Créez une nouvelle application Rails dans ce répertoire, en remplaçant ++ par ce que vous souhaitez appeler votre application:

rails new  -d=postgresql

L’option + -d = postgresql + définit PostgreSQL comme base de données.

Une fois cette commande exécutée, un nouveau dossier nommé «++» apparaîtra dans votre répertoire personnel, contenant tous les éléments d’une application Rails de base.

Ensuite, déplacez-vous dans le répertoire de l’application:

cd

Maintenant que vous avez créé une nouvelle application Rails et que vous vous êtes déplacé dans le répertoire racine de votre projet, vous pouvez configurer et créer votre base de données PostgreSQL à partir de votre application Rails.

Étape 4 - Configuration et création de votre base de données

Lors de la création des bases de données + développement et` + test` pour votre application, Rails utilisera le rôle PostgreSQL que vous avez créé pour votre nom d’utilisateur Ubuntu. Pour vous assurer que Rails crée ces bases de données, modifiez le fichier de configuration de la base de données de votre projet. Vous créerez ensuite vos bases de données.

L’une des modifications de configuration à effectuer dans votre application Rails consiste à ajouter le mot de passe du rôle PostgreSQL que vous avez créé à la dernière étape. Pour protéger les informations sensibles telles que les mots de passe, il est conseillé de les stocker dans une variable d’environnement plutôt que de les écrire directement dans votre fichier de configuration.

Pour stocker votre mot de passe dans une variable d’environnement lors de la connexion, exécutez la commande suivante, en remplaçant "" par le nom de votre application et "" par le mot de passe créé à la dernière étape:

echo 'export _DATABASE_PASSWORD=""' >> ~/.bashrc

Cette commande écrit la commande + export dans votre fichier` + ~ / .bashrc` afin que la variable d’environnement soit définie lors de la connexion.

Pour exporter la variable de votre session en cours, utilisez la commande + source +:

source ~/.bashrc

Maintenant que vous avez enregistré votre mot de passe dans votre environnement, il est temps de modifier le fichier de configuration.

Ouvrez le fichier de configuration de la base de données de votre application dans votre éditeur de texte préféré. Ce tutoriel utilisera + nano +:

nano config/database.yml

Dans la section + default +, recherchez la ligne + pool: <% = ENV.fetch (" RAILS_MAX_THREADS ") {5}%> + et ajoutez les lignes en surbrillance suivantes, en indiquant vos informations d’identification et la variable d’environnement. vous avez créé. Ça devrait ressembler a quelque chose comme ca:

config / database.yml

...
default: &default
 adapter: postgresql
 encoding: unicode
 # For details on connection pooling, see Rails configuration guide
 # http://guides.rubyonrails.org/configuring.html#database-pooling
 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>



development:
 <<: *default
 database: appname_development
...

Cela fera que l’application Rails exécutera la base de données avec le rôle et le mot de passe corrects. Enregistrez et quittez en appuyant sur les touches + CTRL +` + x + , + Y + , puis + ENTER`.

Pour plus d’informations sur la configuration des bases de données dans Rails, voir la documentation Rails.

Maintenant que vous avez apporté des modifications à + ​​config / database.yml +, créez les bases de données de votre application à l’aide de la commande + rails +:

rails db:create

Une fois que Rails a créé la base de données, vous recevrez le résultat suivant:

OutputCreated database '_development'
Created database '_test'

Comme le suggère le résultat, cette commande crée une base de données + development et` + test` sur votre serveur PostgreSQL.

Vous avez maintenant une base de données PostgreSQL connectée à votre application Rails. Pour vous assurer que votre application fonctionne, la prochaine étape consiste à tester votre configuration.

Étape 5 - Test de votre configuration

Pour vérifier que votre application est capable d’utiliser la base de données PostgreSQL, essayez d’exécuter votre application Web afin qu’elle apparaisse dans un navigateur.

A l’aide de la commande + rails server +, exécutez votre application Web sur le serveur Web intégré à votre application Rails, à l’adresse Puma:

rails server --binding=127.0.0.1

+ - binding lie votre application à une adresse IP spécifique. Par défaut, cet indicateur liera Rails à + ​​0.0.0.0 +, mais comme cela signifie que Rails écoutera toutes les interfaces, il est plus sûr d’utiliser + 127.0.0.1 + pour spécifier le + localhost +. Par défaut, l’application écoute sur le port + 3000 +.

Une fois que votre application Rails est en cours d’exécution, votre invite de commande disparaîtra, remplacée par cette sortie:

Output=> Booting Puma
=> Rails  application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version  (ruby -p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000
Use Ctrl-C to stop

Pour vérifier si votre application est en cours d’exécution, ouvrez une nouvelle fenêtre de terminal sur votre serveur et utilisez la commande + curl + pour envoyer une demande à +127.0.0.1: 3000 +:

curl http://127.0.0.1:3000

Vous recevrez beaucoup de sortie en HTML, se terminant par quelque chose comme:

Output...
       <strong>Rails version:</strong><br />
       <strong>Ruby version:</strong>  (x86_64-linux)
     </p>
   </section>
 </div>
</body>
</html>

Si votre application Rails se trouve sur un serveur distant et que vous souhaitez y accéder via un navigateur Web, il est facile de la lier à l’adresse IP publique de votre serveur. Tout d’abord, ouvrez le port + 3000 + dans votre pare-feu:

sudo ufw allow 3000

Ensuite, recherchez l’adresse IP publique de votre serveur. Vous pouvez le faire en lançant la commande + curl + suivante:

curl http://icanhazip.com

Cela renverra votre adresse IP publique. Utilisez-le avec la commande + rails server, substitution` ++ `avec l’adresse IP publique de votre serveur:

rails server --binding=

Vous pourrez maintenant accéder à votre application Rails dans un navigateur Web local via l’adresse IP publique du serveur sur le port + 3000 + en visitant:

http://:3000

À cette adresse URL, vous trouverez une page d’accueil Ruby on Rails:

image: https: //assets.digitalocean.com/articles/cart_66605/Rails_Welcome.png [Page d’accueil de Ruby on Rails]

Cela signifie que votre application est correctement configurée et connectée à la base de données PostgreSQL.

Après avoir testé la configuration, si vous souhaitez fermer le port + 3000 +, utilisez la commande suivante.

sudo ufw delete allow 3000

Conclusion

Dans ce didacticiel, vous avez créé une application Web Ruby on Rails configurée pour utiliser PostgreSQL en tant que base de données sur un serveur Ubuntu 18.04. Si vous souhaitez en savoir plus sur le langage de programmation Ruby, consultez notre série Comment coder dans Ruby.

Pour plus d’informations sur le choix d’une base de données pour votre application, consultez notre tutoriel sur les différences et les cas d’utilisation de https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison. -des-systèmes-de-gestion-de-bases de données relationnelles [SQLite, PostgreSQL et MySQL]. Si vous souhaitez en savoir plus sur l’utilisation des bases de données, consultez notre article An Introduction aux requêtes dans PostgreSQL ou explorez les https de DigitalOcean: //www.digitalocean.com/products/managed-databases/[Managed Databases product.