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