Installere nødvendige pakker
Det første trinnet for å distribuere grafQL-applikasjonen din er å klargjøre serveren din ved å installere de nødvendige pakkene. Logg deg på serveren ved hjelp av SSH.
[e-postbeskyttet]: ~ $ ssh ubuntu @ IPAdress -i KeyPair.pemMERK: Forsikre deg om at sikkerhetsgruppen for forekomsten er konfigurert til å tillate tilkobling fra port 22, og at den private nøkkelfilen har 400 tillatelse.
Oppdater Ubuntu-arkiver.
[e-postbeskyttet]: ~ $ sudo apt-get update -yInstaller nå node.js og npm på ubuntu-serveren din.
[e-postbeskyttet]: ~ $ sudo apt-get install nodejs -y[e-postbeskyttet]: ~ $ sudo apt-get install npm -y
Bekreft installasjonen ved å sjekke versjonen av noden.js og npm.
[e-postbeskyttet]: ~ $ node -v[e-postbeskyttet]: ~ $ npm -v
Flytt GraphQL Application til EC2 Server
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 oppført nedenfor og vil bli diskutert her.
- Kopier kode ved hjelp av scp-kommandoen
- Klon applikasjonskode fra Github, Gitlab eller Bitbucket
Kopier applikasjon ved hjelp av scp Command
For å kopiere applikasjonen til EC2-serveren ved hjelp av scp-kommandoen, først og fremst, fjern '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 vi starter grafQL-applikasjonen. Komprimer nå prosjektkatalogen til en zip-fil. Etter å ha opprettet zip-filen, flytter vi prosjekt-zip-filen til serveren. Linux og windows har forskjellige metoder for å lage en zip-fil.
Windows
I Windows høyreklikker du på applikasjonens rotkatalog og går til alternativet 'send til'. Det åpner en undermeny. Klikk på 'Komprimert (zippet) -mappe' for å opprette en zip-fil av graphQL-applikasjonen.
Linux eller Mac
I Linux eller Mac OS bruker vi kommandoen 'zip' til å lage en zip-fil av prosjektet.
[e-postbeskyttet]: ~ $ zip -r graphQL.zip graphQLOvennevnte kommando genererer graphQL.zip-fil til grafQL-katalogen.
Last opp applikasjon til serveren
Nå har vi en zip-fil av applikasjonen vår, og vi kan laste opp zip-filen til serveren ved hjelp av scp-kommandoen.
[e-postbeskyttet]: ~ $ scp -i KeyPair.pem graphQL.zip ubuntu @ IPAddress: ~ /Kommandoen ovenfor flytter prosjektets zip-fil til den eksterne serverens hjemmekatalog over ssh-tilkoblingen. Nå på den eksterne serveren pakker du ut zip-filen for prosjektet.
[e-postbeskyttet]: ~ $ pakke ut grafQLQL.glidelåsKlonapplikasjon fra Github, Bitbucket eller Gitlab
Den andre metoden for å kopiere applikasjonskode til serveren bruker git. Installer git fra kommandolinjen på EC2-serveren.
[e-postbeskyttet]: ~ $ sudo apt installere gitSjekk git-versjonen for å bekrefte installasjonen.
[e-postbeskyttet]: ~ $ git --versjon
Hvis det ikke gir versjonen av git, er git ikke installert. Klon nå applikasjonen fra github, gitlab eller bitbucket. Her vil vi klone applikasjonskoden fra github.
[e-postbeskyttet]: ~ $ git clone ttps: // github.com / contentful / the-example-app.nodejsStarter GraphQL-applikasjonen
Nå har vi vår grafQL-applikasjon på den eksterne serveren. Gå til rotkatalogen til graphQL-applikasjonen og installer de nødvendige npm-pakkene for å kjøre graphQL-applikasjonen.
[e-postbeskyttet]: ~ $ cd graphQL[e-postbeskyttet]: ~ $ sudo npm install
Denne kommandoen vil analysere pakken.json-filen i prosjektet og installer alle nødvendige npm-pakker. Etter å ha installert de nødvendige pakkene, starter vi nå grafQL-applikasjonen.
[e-postbeskyttet]: ~ $ node-app.jsKjører applikasjon som Daemon
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 tegnet ampersand (&) til kommandoen.
[e-postbeskyttet]: ~ $ node-app.js &Problemet med denne metoden er at når vi endrer applikasjonskoden, gjenspeiles ikke de anvendte endringene automatisk. Vi må starte programmet på nytt hver gang vi endrer koden for å bruke endringene. For å kjøre applikasjonen i bakgrunnen og bruke endringer automatisk, bruker vi en npm-pakke som heter pm2. Installer pm2 på serveren.
[e-postbeskyttet]: ~ $ sudo npm install -g pm2Start grafQL-applikasjonen ved hjelp av pm2.
[e-postbeskyttet]: ~ $ pm2 start-app.js --navn “graphQL” - klokkeFlagg '-name' vil gi bakgrunnsprosessen navn, og vi kan starte og stoppe applikasjonen ved å bruke navnet. Flagget '-watch' fortsetter å sjekke applikasjonskoden for å bruke endringene umiddelbart. Du kan lære mer om pm2 ved å gå til følgende lenke
https: // pm2.keymetrics.io /
Spørring om GraphQL API fra nettleseren
Vi kan konfigurere graphQL-applikasjonen vår for å lage graphQL-spørsmål fra nettleseren manuelt. For dette må vi lage et eget HTTP-endepunkt som vi skal montere graphQL API-serveren på. Og dette HTTP-sluttpunktet vil bli brukt til å lage manuelle spørsmål. Følgende er koden for å lage graphQL api server endepunkt.
const express = krever ('express');const graphqlHTTP = krever ('express-graphql');
const buildSchema = krever ('graphql');
const graphQLSchema = buildSchema ('
skriv spørring
melding: String
'
);
const func =
melding: () =>
returner 'du bruker graphql api server';
;
const server = express ();
server.bruk ('/ graphql', graphqlHTTP (
skjema: graphQLSchema,
rootValue: func,
graphiql: sant
));
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 GraphQL API ved bruk av CLI
I forrige avsnitt laget vi graphQL-spørsmål fra nettleseren ved hjelp av graphiql. Nå skal vi lage graphQL-spørsmål ved å bruke kommandolinjegrensesnittet i ubuntu. Fra kommandolinjen, for å lage en HTTP POST-forespørsel, bruker vi krøllmodulen.
[e-postbeskyttet]: ~ $ curl -X POST -H "Content-Type: application / json" -d '"query": "message"' http: // localhost: 3000 / graphql
Spørring av GraphQL API Programmatisk
For å lage grafQL-spørsmål programmatisk, vil vi bruke 'node-fetch' modulen i node.js. Åpne node.js i terminalen.
[e-postbeskyttet]: ~ $ nodeGjør nå HTTP POST-forespørselen til serveren ved hjelp av noden-henting-modulen.
GraphQL er et effektivt spørrespråk, og det kan redusere responstiden til et spørsmål gjort til databasen. Standard API-anrop for å hente data fra databasen involverer mange ubrukelige data i svaret, og dermed øker responstiden, noe som reduserer effektiviteten. Spørringen til databasene ved hjelp av GraphQL returnerer bare nyttige data og reduserer dermed responstiden. I denne artikkelen har vi distribuert vår grafQL-applikasjon på en EC2-forekomst.