Hvordan du distribuerer grafql -applikasjonen ved hjelp av node.JS på EC2 -serveren

Hvordan du distribuerer grafql -applikasjonen ved hjelp av node.JS på EC2 -serveren
GraphQL, også kjent som grafspråk, etablert og vedlikeholdt av Facebook, er et spørringsspråk som brukes til API -er. Det er bygget med JavaScript, Scala, Java og Ruby programmeringsspråk. Dets grunnleggende formål er å be om dataene fra server til klient.GraphQL samler dataene fra forskjellige kilder. Aggregering er prosessen med å filtrere data på serversiden og deretter sende de filtrerte dataene til klienten. Uten aggregering sender vi alle dataene til klienten, og deretter filtreres dataene på klientsiden. Dette gjør systemet tregt, og vi kan forbedre effektiviteten til et API ved å bruke GraphQL. Her lærer vi å distribuere en enkel GraphQL -applikasjon ved hjelp av node.JS på en EC2 -server.

Installere nødvendige pakker

Det første trinnet for å distribuere GraphQL -applikasjonen din er å klargjøre serveren din ved å installere de nødvendige pakkene. Logg deg på serveren ved hjelp av SSH.

ubuntu@ubuntu: ~ $ ssh ubuntu@ipadress -i tastatur.Pem

MERK: Forsikre deg om at sikkerhetsgruppen for forekomsten er konfigurert for å tillate tilkobling fra port 22 og den private nøkkelfilen har 400 tillatelse.

Oppdater Ubuntu -depoter.

ubuntu@ubuntu: ~ $ sudo apt -get update -y

Installer nå node.JS og NPM på Ubuntu -serveren din.

ubuntu@ubuntu: ~ $ sudo apt -get install nodejs -y
ubuntu@ubuntu: ~ $ sudo apt -get install npm -y

Kontroller installasjonen ved å sjekke versjonen av Node.JS og NPM.

ubuntu@ubuntu: ~ $ node -v
ubuntu@ubuntu: ~ $ npm -v

Flytt GraphQL -applikasjonen til EC2 -serveren

EC2 -forekomsten er klar til å distribuere GraphQL -applikasjoner i node.JS. Nå vil vi flytte koden vår til EC2 -forekomsten. To vanlige måter å kopiere koden til serveren er listet opp nedenfor og vil bli diskutert her.

  • Kopier kode ved hjelp av SCP -kommando
  • Klonapplikasjonskode fra github, gitlab eller bitbucket

Kopier applikasjon ved hjelp av SCP -kommando

For å kopiere applikasjonen din til EC2 -serveren ved hjelp av SCP -kommandoen, fjerner du først og fremst 'Node_Modules' -katalogen fra GraphQL -applikasjonen. Denne katalogen har alle NPM -pakkene som kreves for å kjøre applikasjonen. Vi installerer disse pakkene senere før du starter GraphQL -applikasjonen. Komprimerer nå prosjektkatalogen til en zip -fil. Etter å ha opprettet ZIP -filen, flytter vi Project ZIP -filen til serveren. Linux og Windows har forskjellige metoder for å lage en zip -fil.

Vinduer

Høyreklikk i Windows, høyreklikk på applikasjonens rotkatalog og gå til alternativet 'Send til'. Det vil åpne en undermeny. Klikk på "komprimert (zippet) mappe" for å opprette en zip -fil av GraphQL -applikasjonen.

Linux eller Mac

I Linux eller Mac OS vil vi bruke 'Zip' -kommandoen for å lage en zip -fil av prosjektet.

ubuntu@ubuntu: ~ $ zip -r grafql.ZIP Graphql

Kommandoen ovenfor vil generere grafql.ZIP -fil av Graphql -katalogen.

Last opp applikasjonen til serveren

Nå har vi en zip -fil av applikasjonen vår, og vi kan laste opp ZIP -filen til serveren ved å bruke SCP -kommandoen.

ubuntu@ubuntu: ~ $ scp -i tastatur.PEM Graphql.Zip ubuntu@ipaddress: ~/

Kommandoen ovenfor vil flytte prosjektets zip -fil til den eksterne serverens hjemmekatalog over SSH -tilkoblingen. Nå på den eksterne serveren, pakker du ut prosjekt for zip -filen for prosjektet.

ubuntu@ubuntu: ~ $ unzip graphql.glidelås

Klonapplikasjon fra github, bitbucket eller gitlab

Den andre metoden for å kopiere applikasjonskode til serveren bruker git. Installer git fra kommandolinjen på EC2 -serveren.

ubuntu@ubuntu: ~ $ sudo apt install git

Sjekk Git -versjonen for å bekrefte installasjonen.

ubuntu@ubuntu: ~ $ git --version

Hvis det ikke gir versjonen av Git, er ikke Git installert. Klon nå applikasjonen fra github, gitlab eller bitbucket. Her kloner vi applikasjonskoden fra GitHub.

ubuntu@ubuntu: ~ $ git klon ttps: // github.com/innholdsrik/example-app.Nodejs

Starter GraphQL -applikasjonen

Nå har vi GraphQL -applikasjonen vår på den eksterne serveren. Gå til rotkatalogen til GraphQL -applikasjonen og installer de nødvendige NPM -pakkene for å kjøre GraphQL -applikasjonen.

ubuntu@ubuntu: ~ $ cd grafql
ubuntu@ubuntu: ~ $ sudo npm installasjon

Denne kommandoen vil analysere pakken.JSON -fil i prosjektet og installer alle nødvendige NPM -pakker. Etter å ha installert de nødvendige pakkene, vil vi nå starte GraphQL -applikasjonen.

ubuntu@ubuntu: ~ $ node app.JS

Kjører søknad som demon

Når vi kjører applikasjonen ved hjelp av standardmetoden som beskrevet ovenfor, kjører den i forgrunnen, og applikasjonen stopper når du lukker terminalvinduet. Vi kan kjøre applikasjonen som en bakgrunnsprosess ved å legge til Ampersand (&) -tegnet til kommandoen.

ubuntu@ubuntu: ~ $ node app.JS &

Problemet med denne metoden er at når vi endrer applikasjonskoden vår, vil de anvendte endringene ikke reflektere automatisk. Vi må starte applikasjonen på nytt hver gang vi endrer koden for å bruke endringene. For å kjøre applikasjonen i bakgrunnen og bruke endringer automatisk, vil vi bruke en NPM -pakke som heter PM2. Installer PM2 på serveren.

ubuntu@ubuntu: ~ $ sudo npm install -g pm2

Start GraphQL -applikasjonen med PM2.

ubuntu@ubuntu: ~ $ pm2 start -app.JS -Navn “Graphql” -se på

Flagget '-navn' vil navngi bakgrunnsprosessen, og vi kan starte og stoppe applikasjonen ved å bruke navnet. Flagget '-Watch' vil fortsette å sjekke applikasjonskoden for å bruke endringer umiddelbart. Du kan lære mer om PM2 ved å besøke følgende lenke

https: // pm2.Keymetrics.io/

Spørring av grafql API fra nettleseren

Vi kan konfigurere GraphQL -applikasjonen vår for å lage grafql -spørsmål fra nettleseren manuelt. For dette må vi lage et eget HTTP -endepunkt som vi vil montere GraphQL API -serveren. Og dette HTTP -endepunktet vil bli brukt til å lage manuelle spørsmål. Følgende er koden for å opprette endepunktet for GraphQL API -serveren.

const express = krever ('ekspress');
const graphQlHttp = krever ('Express-Graphql');
const buildSchema = krever ('grafql');
const graphqlschema = buildSchema ('
type spørring
melding: streng
'
);
const func =
melding: () =>

Returner 'Du bruker GraphQL API -server';

;
const server = express ();
server.bruk ('/graphql', GraphQlHttp (
Skjema: Graphqlschema,
RootValue: func,
Graphiql: True
));
server.Hør (3000);

Nå, etter å ha kjørt serveren, kan vi få tilgang til GraphQL API -serveren på følgende rute.

http: // localhost: 3000/graphql

Spørring av grafql API ved hjelp av CLI

I forrige seksjon lagde vi GraphQL -spørsmål fra nettleseren ved hjelp av Graphiql. Nå skal vi lage grafql-spørsmål ved hjelp av kommandolinjegrensesnittet i Ubuntu. Fra kommandolinjen, for å lage en HTTP -postforespørsel, bruker vi Curl -modulen.

ubuntu@ubuntu: ~ $ curl -x post -h "innholdstype: applikasjon/json" -d '"spørring": "melding"' http: // localhost: 3000/graphql

Spørring av grafql API programmatisk

For å lage GraphQL-spørring programmatisk, vil vi bruke 'Node-Fetch' -modulen i Node.JS. Åpen node.JS i terminalen.

ubuntu@ubuntu: ~ $ node

Lag nå HTTP Post-forespørselen til serveren ved hjelp av 'Node-Fetch' -modulen.

GraphQL er et effektivt spørringsspråk, og det kan redusere responstiden for en spørring som er gjort i databasen. Standard API -ringer for å hente data fra databasen involverer mange ubrukelige data i responsen, og følgelig øker responstiden, noe som reduserer effektiviteten. Spørringen som er laget til databasene ved hjelp av GraphQL, returnerer bare nyttige data og reduserer derfor responstiden. I denne artikkelen har vi distribuert GraphQL -applikasjonen vår på en EC2 -forekomst.