Bereitstellung der GraphQL -Anwendung mit dem Knoten.JS auf dem EC2 -Server

Bereitstellung der GraphQL -Anwendung mit dem Knoten.JS auf dem EC2 -Server
GraphQL, auch als Graph -Abfragesprache bekannt, wurde von Facebook etabliert und gepflegt, ist eine Abfragesprache, die für APIs verwendet wird. Es wird mit JavaScript-, Scala-, Java- und Ruby -Programmiersprachen erstellt. Der grundlegende Zweck ist es, die Daten vom Server zum Client zu fragen.GraphQL aggregiert die Daten aus verschiedenen Quellen. Durch die Aggregation wird der Prozess des Filterungsdaten auf der Serverseite und dann anschließend die gefilterten Daten an den Client gesendet. Ohne Aggregation senden wir alle Daten an den Client, und dann werden die Daten auf der Client-Seite gefiltert. Dies macht das System langsamer und wir können die Effizienz einer API durch Verwendung von GraphQL verbessern. Hier lernen wir, eine einfache GraphQL -Anwendung mit dem Knoten bereitzustellen.JS auf einem EC2 -Server.

Installieren der erforderlichen Pakete

Der erste Schritt zur Bereitstellung Ihrer GraphQL -Anwendung besteht darin, Ihren Server durch Installation der erforderlichen Pakete bereitzustellen. Melden Sie sich mit SSH beim Server an.

Ubuntu@Ubuntu: ~ $ SSH Ubuntu@ipadress -i Tastatur.Pem

NOTIZ: Stellen Sie sicher.

Aktualisieren Sie Ubuntu -Repositories.

Ubuntu@Ubuntu: ~ $ sudo apt -Get -Update -y

Installieren Sie nun den Knoten.JS und NPM auf Ihrem Ubuntu -Server.

Ubuntu@Ubuntu: ~ $ sudo apt -Get Installieren Sie Nodejs -y
Ubuntu@Ubuntu: ~ $ sudo apt -Get Installieren Sie NPM -y

Überprüfen Sie die Installation, indem Sie die Version des Knotens überprüfen.JS und NPM.

Ubuntu@Ubuntu: ~ $ Node -v
Ubuntu@Ubuntu: ~ $ npm -v

Verschieben Sie die GraphQL -Anwendung auf den EC2 -Server

Die EC2 -Instanz ist bereit, GraphQL -Anwendungen im Knoten bereitzustellen.JS. Jetzt werden wir unseren Code in die EC2 -Instanz verschieben. Zwei gängige Möglichkeiten, den Code auf den Server zu kopieren, werden unten aufgeführt und werden hier erörtert.

  • Kopieren Sie den Code mit dem SCP -Befehl
  • Klonanwendungscode von Github, Gitlab oder Bitbucket

Kopieren Sie die Anwendung mit dem SCP -Befehl

Um Ihre Anwendung mit dem Befehl SCP auf den EC2 -Server zu kopieren, entfernen Sie zunächst das Verzeichnis "node_modules" aus Ihrer GraphQL -Anwendung. Dieses Verzeichnis verfügt über alle NPM -Pakete, die zum Ausführen der Anwendung erforderlich sind. Wir werden diese Pakete später installieren, bevor wir die GraphQL -Anwendung starten. Komprimieren Sie nun das Projektverzeichnis in eine ZIP -Datei. Nach dem Erstellen der ZIP -Datei werden wir die Projektzip -Datei auf den Server verschieben. Linux und Windows haben unterschiedliche Methoden, um eine ZIP -Datei zu erstellen.

Fenster

Klicken Sie in Windows mit der rechten Maustast. Es wird ein Untermenü öffnen. Klicken Sie auf den Ordner "komprimiert (zipted)", um eine ZIP -Datei der GraphQL -Anwendung zu erstellen.

Linux oder Mac

In Linux oder Mac OS werden wir den Befehl "ZIP" verwenden, um eine ZIP -Datei des Projekts zu erstellen.

Ubuntu@Ubuntu: ~ $ ZIP -r Graphql.ZIP Graphql

Der obige Befehl generiert den GraphQL.ZIP -Datei des GraphQL -Verzeichnisses.

Laden Sie die Anwendung auf den Server hoch

Jetzt haben wir eine ZIP -Datei unserer Anwendung und können die ZIP -Datei mit dem Befehl SCP auf den Server hochladen.

Ubuntu@Ubuntu: ~ $ scp -i Tastatur.PEM Graphql.ZIP Ubuntu@iPaddress: ~/

Der obige Befehl verschiebt die Projekt -ZIP -Datei in das Heimverzeichnis des Remote -Servers über die SSH -Verbindung. Unzippieren Sie nun auf dem Remote -Server die Projektzip -Datei.

Ubuntu@Ubuntu: ~ $ unzip GraphQL.Reißverschluss

Klonanwendung von Github, Bitbucket oder GitLab

Die zweite Methode zum Kopieren des Anwendungscodes auf den Server verwendet Git. Installieren Sie Git aus der Befehlszeile auf dem EC2 -Server.

Ubuntu@Ubuntu: ~ $ sudo appt install Git

Überprüfen Sie die GIT -Version, um die Installation zu überprüfen.

Ubuntu@Ubuntu: ~ $ Git -Verssion

Wenn es nicht die Version von Git gibt, ist Git nicht installiert. Klonen Sie nun die Anwendung aus dem Github, Gitlab oder Bitbucket. Hier klonen wir den Anwendungscode aus dem GitHub.

Ubuntu@Ubuntu: ~ $ git klone ttps: // github.com/intastful/the-example-App.Nodejs

Starten Sie die GraphQL -Anwendung

Jetzt haben wir unsere GraphQL -Anwendung auf dem Remote -Server. Gehen Sie zum Root -Verzeichnis der GraphQL -Anwendung und installieren Sie die erforderlichen NPM -Pakete, um die GraphQL -Anwendung auszuführen.

Ubuntu@Ubuntu: ~ $ CD GraphQL
Ubuntu@Ubuntu: ~ $ sudo npm installieren

Dieser Befehl analysiert das Paket.JSON -Datei im Projekt und installieren Sie alle erforderlichen NPM -Pakete. Nach der Installation der erforderlichen Pakete starten wir jetzt die GraphQL -Anwendung.

Ubuntu@Ubuntu: ~ $ Node App.JS

Anwendung als Daemon ausführen

Wenn wir die Anwendung mithilfe der oben beschriebenen Standardmethode ausführen, wird im Vordergrund ausgeführt, und die Anwendung stoppt, wenn Sie das Terminalfenster schließen. Wir können die Anwendung als Hintergrundprozess ausführen, indem wir das Ampersand (&) Zeichen an den Befehl anhängen.

Ubuntu@Ubuntu: ~ $ Node App.JS &

Das Problem mit dieser Methode ist, dass die angewandten Änderungen, wenn wir unseren Anwendungscode ändern, nicht automatisch widerspiegeln. Wir müssen die Anwendung jedes Mal neu starten, wenn wir den Code ändern, um die Änderungen anzuwenden. Um die Anwendung im Hintergrund auszuführen und automatisch Änderungen anzuwenden, verwenden wir ein NPM -Paket mit dem Namen PM2. Installieren Sie PM2 auf dem Server.

Ubuntu@Ubuntu: ~ $ sudo npm install -g PM2

Starten Sie die GraphQL -Anwendung mit PM2.

Ubuntu@Ubuntu: ~ $ PM2 Start App.JS --Name "GraphQL" -Watch

Das Flag '-name' nennt den Hintergrundvorgang und wir können die Anwendung mit dem Namen starten und stoppen. Das Flag '-watch' überprüft den Anwendungscode, um Änderungen sofort anzuwenden. Sie können mehr über PM2 erfahren, indem Sie den folgenden Link besuchen

https: // pm2.Keymetrie.io/

Abfragen von GraphQL -API vom Browser

Wir können unsere GraphQL -Anwendung so konfigurieren, dass GraphQL -Abfragen aus dem Browser manuell erstellt werden. Dafür müssen wir einen separaten HTTP -Endpunkt erstellen, an dem wir den GraphQL -API -Server montieren werden. Und dieser HTTP -Endpunkt wird verwendet, um manuelle Abfragen zu erstellen. Im Folgenden finden Sie den Code zum Erstellen des GraphQL -API -Serverendpunkts.

const express = forderung ('express');
const graphQlhttp = required ('express-graphql');
const BuildSchema = required ('GraphQl');
const Graphqlschema = BuildSchema ('
Geben Sie Abfrage ein
Nachricht: String
'
);
const func =
Nachricht: () =>

Rückgabe "Sie verwenden den GraphQL -API -Server"

;
const server = express ();
Server.Verwendung ('/graphql', GraphQlhttp (
Schema: GraphQlschema,
rootValue: func,
Graphiql: True
));
Server.Hören Sie (3000);

Nach dem Ausführen des Servers können wir nun auf die folgende Route auf den GraphQL -API -Server zugreifen.

http: // localhost: 3000/graphql

Abfragen von GraphQL -API mit CLI

Im vorherigen Abschnitt haben wir GraphQL -Abfragen aus dem Browser mit GraphiQL erstellt. Jetzt werden wir GraphQL-Abfragen mithilfe der Befehlszeilenschnittstelle in Ubuntu erstellen. Aus der Befehlszeile, um eine HTTP -Postanforderung zu erstellen, werden wir das Curl -Modul verwenden.

Ubuntu@Ubuntu: ~ $ curl -x post -h "Inhaltstyp: application/json" -d '"query": "message"' http: // localhost: 3000/graphql

Abfragen von GraphQL API programmatisch

Um die GraphQL-Abfrage programmgesteuert zu machen, verwenden wir das "Knotenfetch" -Modul im Knoten.JS. Knoten offen.JS im Terminal.

Ubuntu@Ubuntu: ~ $ Node

Machen Sie nun das HTTP-Postanforderung an den Server mit dem Modul "Knotenfetch" an den Server.

GraphQL ist eine effiziente Abfragesprache und kann die Reaktionszeit einer Abfrage an die Datenbank verringern. Die Standard -API -Aufrufe zum Abrufen von Daten aus der Datenbank beinhalten viele unbenannte Daten in der Antwort, und daher erhöht sich die Reaktionszeit, was die Effizienz verringert. Die Abfrage an die Datenbanken unter Verwendung von GraphQL gibt nur die nützlichen Daten zurück und verringert daher die Antwortzeit. In diesem Artikel haben wir unsere GraphQL -Anwendung in einer EC2 -Instanz bereitgestellt.