So verwenden Sie PostgreSQL mit Ihrer Ruby on Rails-Anwendung unter Ubuntu 18.04

Einführung

Wenn Sie das Web-Framework Ruby on Rails verwenden, ist Ihre Anwendung standardmäßig so eingerichtet, dass SQLite als Datenbank verwendet wird. SQLite ist eine kompakte, tragbare und benutzerfreundliche relationale Datenbank, die in Umgebungen mit wenig Arbeitsspeicher eine besonders gute Leistung erbringt und in vielen Fällen gut funktioniert. Für hochkomplexe Anwendungen, die eine zuverlässigere Datenintegrität und programmgesteuerte Erweiterbarkeit erfordern, ist eine PostgreSQL -Datenbank eine robustere und flexiblere Wahl. Um Ihr Ruby on Rails-Setup für die Verwendung von PostgreSQL zu konfigurieren, müssen Sie einige zusätzliche Schritte ausführen, um es in Betrieb zu nehmen.

In diesem Tutorial richten Sie eine Ruby on Rails-Entwicklungsumgebung ein, die mit einer PostgreSQL-Datenbank auf einem Ubuntu 18.04-Server verbunden ist. Sie installieren und konfigurieren PostgreSQL und testen dann Ihr Setup, indem Sie eine Rails-Anwendung erstellen, die PostgreSQL als Datenbankserver verwendet.

Voraussetzungen

Dieses Tutorial erfordert Folgendes:

  • Ein Ubuntu 18.04-Server, der eingerichtet wird, indem Initial Server Setup-Handbuch für Ubuntu 18.04 befolgt wird, einschließlich eines Nicht-Digitalocean-Servers. root-Benutzer mit sudo-Berechtigungen und einer Firewall.

  • Eine Ruby on Rails-Entwicklungsumgebung, die auf Ihrem Ubuntu 18.04-Server installiert ist. Befolgen Sie hierzu unsere Anleitung unter How to Install Ruby on Rails mit rbenv unter Ubuntu 18.04. In diesem Tutorial werden Version 2.6.3 von Ruby und 5.2.3 von Rails verwendet. Informationen zu den neuesten Versionen finden Sie auf den offiziellen Websites unter Ruby und Rails.

Schritt 1 - PostgreSQL installieren

Um Ruby on Rails so zu konfigurieren, dass Ihre Webanwendung mit PostgreSQL als Datenbank erstellt wird, installieren Sie zuerst die Datenbank auf Ihrem Server.

Aktualisieren Sie mithilfe von + sudo + - Berechtigungen Ihren APT-Paketindex, um sicherzustellen, dass Ihre Repositorys auf dem neuesten Stand sind:

sudo apt update

Installieren Sie als Nächstes PostgreSQL und seine Entwicklungsbibliotheken:

sudo apt install postgresql postgresql-contrib libpq-dev

Im vorherigen Befehl enthält das Paket + postgresql + das Hauptprogramm von PostgreSQL, während https://packages.debian.org/jessie/postgresql-contrib-9.4 [+ postgresql-contrib +] mehrere PostgreSQL-Funktionen hinzufügt, die das Programm erweitern Fähigkeiten. + libpq-dev + ist eine PostgreSQL-Bibliothek, mit der Clients Abfragen senden und Antworten vom Back-End-Server empfangen können, damit Ihre Anwendung mit ihrer Datenbank kommunizieren kann.

Nachdem PostgreSQL und seine Abhängigkeiten installiert wurden, müssen Sie im nächsten Schritt eine Rolle erstellen, die Ihre Rails-Anwendung später zum Erstellen Ihrer Datenbank verwendet.

Schritt 2 - Erstellen einer neuen Datenbankrolle

In PostgreSQL können * role * auf dieselbe Weise wie Benutzer in Linux zum Organisieren von Berechtigungen und Berechtigungen verwendet werden. In diesem Schritt erfahren Sie, wie Sie eine neue Superuser-Rolle für Ihren Linux-Benutzernamen erstellen, mit der Sie innerhalb des PostgreSQL-Systems Datenbanken erstellen und konfigurieren können.

Verwenden Sie den folgenden Befehl, um eine PostgreSQL-Superuser-Rolle zu erstellen, und ersetzen Sie das hervorgehobene Wort durch Ihren Ubuntu 18.04-Benutzernamen:

sudo -u postgres createuser -s  -P

Da Sie das Flag "+ -P +" angegeben haben, werden Sie aufgefordert, ein Kennwort für Ihre neue Rolle einzugeben. Geben Sie Ihr gewünschtes Passwort ein und notieren Sie es, damit Sie es in einem späteren Schritt in einer Konfigurationsdatei verwenden können.

In diesem Befehl haben Sie "+ createuser " verwendet, um eine Rolle mit dem Namen "+" zu erstellen. Das + -s + gab diesem Benutzer Superuser-Rechte, und + sudo -u + erlaubte es Ihnen, den Befehl über das Konto + postgres + auszuführen, das bei der Installation von PostgreSQL automatisch erstellt wird.

Wenn Sie das Flag "+ -P +" nicht verwendet haben und nach dem Erstellen ein Kennwort für die Rolle festlegen möchten, geben Sie den folgenden Befehl in die PostgreSQL-Konsole ein:

sudo -u postgres psql

Sie erhalten die folgende Ausgabe zusammen mit der Eingabeaufforderung für die PostgreSQL-Konsole:

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

postgres=#

Die PostgreSQL-Konsole wird durch die Eingabeaufforderung + postgres = # + gekennzeichnet. Geben Sie an der PostgreSQL-Eingabeaufforderung diesen Befehl ein, um das Kennwort für die neue Datenbankrolle festzulegen, und ersetzen Sie den hervorgehobenen Namen durch den von Ihnen erstellten:

\password

PostgreSQL fordert Sie zur Eingabe eines Passworts auf. Geben Sie Ihr gewünschtes Passwort an der Eingabeaufforderung ein und bestätigen Sie es.

Verlassen Sie nun die PostgreSQL-Konsole, indem Sie den folgenden Befehl eingeben:

\q

Ihre übliche Eingabeaufforderung wird nun wieder angezeigt.

In diesem Schritt haben Sie eine neue PostgreSQL-Rolle mit Superuser-Berechtigungen erstellt. Jetzt können Sie eine neue Rails-App erstellen, die diese Rolle zum Erstellen einer Datenbank verwendet.

Schritt 3 - Erstellen einer neuen Rails-Anwendung

Mit einer für PostgreSQL konfigurierten Rolle können Sie jetzt eine neue Rails-Anwendung erstellen, die für die Verwendung von PostgreSQL als Datenbank eingerichtet ist.

Navigieren Sie zunächst zu Ihrem Home-Verzeichnis:

cd ~

Erstellen Sie eine neue Rails-Anwendung in diesem Verzeichnis und ersetzen Sie "++" durch das, was Sie Ihre App nennen möchten:

rails new  -d=postgresql

Die Option + -d = postgresql + legt PostgreSQL als Datenbank fest.

Sobald Sie diesen Befehl ausgeführt haben, wird in Ihrem Ausgangsverzeichnis ein neuer Ordner mit dem Namen "++" angezeigt, der alle Elemente einer einfachen Rails-Anwendung enthält.

Wechseln Sie anschließend in das Anwendungsverzeichnis:

cd

Nachdem Sie eine neue Rails-Anwendung erstellt und in das Stammverzeichnis Ihres Projekts verschoben haben, können Sie Ihre PostgreSQL-Datenbank in Ihrer Rails-App konfigurieren und erstellen.

Schritt 4 - Konfigurieren und Erstellen Ihrer Datenbank

Beim Erstellen der Datenbanken "+ development" und "+ test" für Ihre Anwendung verwendet Rails die PostgreSQL-Rolle, die Sie für Ihren Ubuntu-Benutzernamen erstellt haben. Um sicherzustellen, dass Rails diese Datenbanken erstellt, ändern Sie die Datenbankkonfigurationsdatei Ihres Projekts. Sie erstellen dann Ihre Datenbanken.

Eine der Konfigurationsänderungen, die Sie in Ihrer Rails-Anwendung vornehmen müssen, ist das Hinzufügen des Kennworts für die PostgreSQL-Rolle, die Sie im letzten Schritt erstellt haben. Um vertrauliche Informationen wie Kennwörter zu schützen, ist es ratsam, diese in einer Umgebungsvariablen zu speichern, anstatt sie direkt in Ihre Konfigurationsdatei zu schreiben.

Führen Sie den folgenden Befehl aus, um Ihr Kennwort bei der Anmeldung in einer Umgebungsvariablen zu speichern. Ersetzen Sie dabei "" durch den Namen Ihrer Anwendung und "" durch das Kennwort, das Sie im letzten Schritt erstellt haben:

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

Dieser Befehl schreibt den Befehl "+ export" in Ihre "+ ~ / .bashrc" -Datei, sodass die Umgebungsvariable beim Anmelden festgelegt wird.

Verwenden Sie den Befehl + source +, um die Variable für Ihre aktuelle Sitzung zu exportieren:

source ~/.bashrc

Nachdem Sie Ihr Passwort in Ihrer Umgebung gespeichert haben, ist es an der Zeit, die Konfigurationsdatei zu ändern.

Öffnen Sie die Datenbankkonfigurationsdatei Ihrer Anwendung in Ihrem bevorzugten Texteditor. In diesem Tutorial wird "+ nano +" verwendet:

nano config/database.yml

Suchen Sie im Abschnitt "+ default " die Zeile " pool: <% = ENV.fetch (" RAILS_MAX_THREADS ") {5}%> +" und fügen Sie die folgenden hervorgehobenen Zeilen hinzu, wobei Sie Ihre Anmeldeinformationen und die Umgebungsvariable eingeben du hast erschaffen. Es sollte ungefähr so ​​aussehen:

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
...

Dadurch wird die Rails-Anwendung veranlasst, die Datenbank mit der richtigen Rolle und dem richtigen Kennwort auszuführen. Speichern und beenden Sie den Vorgang, indem Sie "+ STRG" + "+ x ", " Y " und dann " ENTER" drücken.

Weitere Informationen zum Konfigurieren von Datenbanken in Rails finden Sie in der Rails-Dokumentation.

Nachdem Sie Änderungen an "+ config / database.yml " vorgenommen haben, erstellen Sie die Datenbanken Ihrer Anwendung mit dem Befehl " rails +":

rails db:create

Sobald Rails die Datenbank erstellt hat, erhalten Sie folgende Ausgabe:

OutputCreated database '_development'
Created database '_test'

Wie die Ausgabe vermuten lässt, erstellt dieser Befehl eine Entwicklungs- und Testdatenbank in Ihrem PostgreSQL-Server.

Sie haben jetzt eine PostgreSQL-Datenbank mit Ihrer Rails-App verbunden. Um sicherzustellen, dass Ihre Anwendung funktioniert, müssen Sie im nächsten Schritt Ihre Konfiguration testen.

Schritt 5 - Testen Ihrer Konfiguration

Versuchen Sie, Ihre Webanwendung so auszuführen, dass sie in einem Browser angezeigt wird, um zu testen, ob Ihre Anwendung die PostgreSQL-Datenbank verwenden kann.

Führen Sie mit dem Befehl "+ Rails Server +" Ihre Webanwendung auf dem integrierten Webserver in Ihrer Rails-App aus, Puma:

rails server --binding=127.0.0.1

+ - binding bindet Ihre Bewerbung an eine bestimmte IP. Standardmäßig bindet dieses Flag Rails an "+ 0.0.0.0 ", aber da dies bedeutet, dass Rails alle Schnittstellen überwacht, ist es sicherer, " 127.0.0.1 " zu verwenden, um den " localhost " anzugeben. Standardmäßig überwacht die Anwendung den Port " 3000 +".

Sobald Ihre Rails-App ausgeführt wird, verschwindet Ihre Eingabeaufforderung und wird durch diese Ausgabe ersetzt:

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

Um zu testen, ob Ihre Anwendung ausgeführt wird, öffnen Sie ein neues Terminalfenster auf Ihrem Server und senden Sie mit dem Befehl "+ curl +" eine Anfrage an "+127.0.0.1: 3000 +":

curl http://127.0.0.1:3000

Sie erhalten eine Menge HTML-Ausgaben, die in etwa wie folgt enden:

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

Wenn sich Ihre Rails-Anwendung auf einem Remote-Server befindet und Sie über einen Webbrowser darauf zugreifen möchten, können Sie sie auf einfache Weise an die öffentliche IP-Adresse Ihres Servers binden. Öffnen Sie zunächst den Port "+ 3000 +" in Ihrer Firewall:

sudo ufw allow 3000

Suchen Sie als Nächstes die öffentliche IP-Adresse Ihres Servers. Sie können dies tun, indem Sie den folgenden Befehl + curl + ausführen:

curl http://icanhazip.com

Dadurch wird Ihre öffentliche IP-Adresse zurückgegeben. Verwenden Sie es mit dem Befehl "+ Rails Server" und ersetzen Sie "++" durch die öffentliche IP Ihres Servers:

rails server --binding=

Jetzt können Sie in einem lokalen Webbrowser über die öffentliche IP-Adresse des Servers an Port "+ 3000 +" auf Ihre Rails-Anwendung zugreifen, indem Sie Folgendes aufrufen:

http://:3000

Unter dieser URL finden Sie eine Ruby on Rails-Begrüßungsseite:

Dies bedeutet, dass Ihre Anwendung ordnungsgemäß konfiguriert und mit der PostgreSQL-Datenbank verbunden ist.

Wenn Sie nach dem Testen der Konfiguration den Port "+ 3000 +" schließen möchten, verwenden Sie den folgenden Befehl.

sudo ufw delete allow 3000

Fazit

In diesem Tutorial haben Sie eine Ruby on Rails-Webanwendung erstellt, die für die Verwendung von PostgreSQL als Datenbank auf einem Ubuntu 18.04-Server konfiguriert wurde. Weitere Informationen zur Programmiersprache Ruby finden Sie unter How To Code in Ruby series.

Weitere Informationen zur Auswahl einer Datenbank für Ihre Anwendung finden Sie in unserem Lernprogramm zu den Unterschieden und Anwendungsfällen von https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison -der-relationalen-Datenbank-Management-Systeme [SQLite, PostgreSQL und MySQL]. Weitere Informationen zur Verwendung von Datenbanken finden Sie in unserem Einführung in Abfragen in PostgreSQL -Artikel oder im https von DigitalOcean: //www.digitalocean.com/products/managed-databases/[Managed Databases product].