Namestitev potrebnih paketov
Prvi korak za razmestitev aplikacije graphQL je priprava strežnika z namestitvijo zahtevanih paketov. Prijavite se v strežnik s pomočjo SSH.
[zaščiteno po e-pošti]: ~ $ ssh ubuntu @ IPAdress -i KeyPair.pemOPOMBA: Prepričajte se, da je varnostna skupina primerka konfigurirana tako, da omogoča povezavo iz vrat 22, in da ima datoteka z zasebnim ključem 400 dovoljenj.
Posodobite repozitorije Ubuntu.
[e-pošta zaščitena]: ~ $ sudo apt-get update -yZdaj namestite vozlišče.js in npm na vašem strežniku ubuntu.
[zaščiteno po e-pošti]: ~ $ sudo apt-get install nodejs -y[zaščiteno po e-pošti]: ~ $ sudo apt-get install npm -y
Namestitev preverite s preverjanjem različice vozlišča.js in npm.
[zaščiteno po e-pošti]: ~ $ vozlišče -v[e-pošta zaščitena]: ~ $ npm -v
Premakni aplikacijo GraphQL na strežnik EC2
Primerek EC2 je pripravljen za namestitev programov graphQL v vozlišče.js. Zdaj bomo svojo kodo premaknili na primerek EC2. Spodaj sta navedena dva pogosta načina kopiranja kode na strežnik, o katerih bomo govorili tukaj.
- Kopirajte kodo z ukazom scp
- Klonirajte aplikacijsko kodo iz Github, Gitlab ali Bitbucket
Kopirajte aplikacijo z ukazom scp
Če želite s pomočjo ukaza scp kopirati svojo aplikacijo na strežnik EC2, najprej iz aplikacije graphQL odstranite imenik 'node_modules'. Ta imenik vsebuje vse pakete npm, potrebne za zagon aplikacije. Te pakete bomo namestili kasneje, preden zaženemo aplikacijo graphQL. Zdaj imenik projekta stisnite v zip datoteko. Po izdelavi zip datoteke bomo datoteko zip projekta premaknili na strežnik. Linux in Windows imata različne metode za ustvarjanje zip datoteke.
Windows
V oknih z desno miškino tipko kliknite korenski imenik aplikacije in pojdite na možnost »pošlji«. Odprl se bo podmeni. Kliknite »Stisnjena (stisnjena) mapa«, da ustvarite datoteko zip aplikacije graphQL.
Linux ali Mac
V Linuxu ali Mac OS bomo z ukazom zip ustvarili datoteko zip projekta.
[e-pošta zaščitena]: ~ $ zip -r graphQL.zip graphQLZgornji ukaz bo ustvaril graphQL.zip datoteka imenika graphQL.
Naložite aplikacijo na strežnik
Zdaj imamo zip datoteko naše aplikacije in zip datoteko lahko naložimo na strežnik z ukazom scp.
[zaščiteno po e-pošti]: ~ $ scp -i KeyPair.pem graphQL.zip ubuntu @ IPAddress: ~ /Zgornji ukaz bo datoteko zip projekta premaknil v domači imenik oddaljenega strežnika prek povezave ssh. Zdaj na oddaljenem strežniku razpakirajte datoteko zip projekta.
[zaščiteno po e-pošti]: ~ $ unzip graphQL.zadrgoKlonirajte aplikacijo iz Github, Bitbucket ali Gitlab
Drugi način kopiranja kode aplikacije na strežnik je uporaba git. Namestite git iz ukazne vrstice na strežniku EC2.
[e-pošta zaščitena]: ~ $ sudo apt install gitPreverite različico git, da preverite namestitev.
[zaščiteno po e-pošti]: ~ $ git --version
Če ne vsebuje različice git, potem git ni nameščen. Zdaj klonirajte aplikacijo iz github, gitlab ali bitbucket. Tukaj bomo klonirali kodo aplikacije iz githuba.
[e-pošta zaščitena]: ~ $ git clone ttps: // github.com / contentful / the-example-app.nodejsZagon aplikacije GraphQL
Zdaj imamo aplikacijo graphQL na oddaljenem strežniku. Pojdite v korenski imenik aplikacije graphQL in namestite potrebne pakete npm za zagon aplikacije graphQL.
[zaščiteno po e-pošti]: ~ $ cd graphQL[zaščiteno po e-pošti]: ~ $ sudo npm install
Ta ukaz bo analiziral paket.json v projektu in namestite vse zahtevane pakete npm. Po namestitvi zahtevanih paketov bomo zdaj zagnali aplikacijo graphQL.
[e-pošta zaščitena]: ~ $ node app.jsZagon aplikacije kot Daemon
Ko zaženemo aplikacijo po standardni metodi, kot je opisano zgoraj, deluje v ospredju in se aplikacija ustavi, ko zaprete okno terminala. Aplikacijo lahko zaženemo kot postopek v ozadju, tako da ukazu dodamo znak & (&).
[e-pošta zaščitena]: ~ $ node app.js &Težava te metode je, da se, ko spremenimo kodo aplikacije, uporabljene spremembe ne bodo odražale samodejno. Aplikacijo bomo morali znova zagnati vsakič, ko spremenimo kodo, da bomo uveljavili spremembe. Za zagon aplikacije v ozadju in za samodejno uveljavitev sprememb bomo uporabili paket npm z imenom pm2. Namestite pm2 na strežnik.
[zaščiteno po e-pošti]: ~ $ sudo npm install -g pm2Zaženite aplikacijo graphQL s pomočjo pm2.
[zaščiteno po e-pošti]: ~ $ pm2 start app.js --ime “graphQL” --watchOznaka '-name' bo poimenovala postopek v ozadju in z imenom lahko zaženemo in ustavimo aplikacijo. Oznaka '-watch' bo še naprej preverjala kodo aplikacije, da bo spremembe uveljavila takoj. Več o pm2 lahko izveste na naslednji povezavi
https: // pm2.keymetrics.io /
Poizvedovanje po API-ju GraphQL iz brskalnika
Našo aplikacijo graphQL lahko nastavimo tako, da ročno poizveduje iz brskalnika. Za to moramo ustvariti ločeno končno točko HTTP, na katero bomo namestili strežnik API GraphQL. Ta končna točka HTTP bo uporabljena za ročne poizvedbe. Sledi koda za ustvarjanje končne točke strežnika APIQL graphQL.
const express = require ('express');const graphqlHTTP = require ('express-graphql');
const buildSchema = require ('graphql');
const graphQLSchema = buildSchema ('
vnesite poizvedbo
sporočilo: niz
'
);
const func =
sporočilo: () =>
vrni 'uporabljate strežnik apq graphql';
;
const strežnik = express ();
strežnik.use ('/ graphql', graphqlHTTP (
shema: graphQLSchema,
rootValue: func,
graphiql: res
));
strežnik.poslušaj (3000);
Zdaj, po zagonu strežnika, lahko dostopamo do APIQL strežnika graphQL na naslednji poti.
http: // localhost: 3000 / graphql
Poizvedovanje po API-ju GraphQL z uporabo CLI
V prejšnjem razdelku smo iz brskalnika s pomočjo graphiql naredili poizvedbe graphQL. Zdaj bomo naredili poizvedbe graphQL z uporabo vmesnika ukazne vrstice v ubuntuju. V ukazni vrstici bomo za zahtevo HTTP POST uporabili modul curl.
[zaščiteno po e-pošti]: ~ $ curl -X POST -H "Content-Type: application / json" -d '"query": "message"' http: // localhost: 3000 / graphql
Programsko poizvedovanje po API-ju GraphQL
Za programsko poizvedbo graphQL bomo uporabili modul 'node-fetch' v vozlišču.js. Odprite vozlišče.js v terminalu.
[zaščiteno po e-pošti]: ~ $ vozliščeZdaj pošljite zahtevo HTTP POST strežniku z uporabo modula 'node-fetch'.
GraphQL je učinkovit jezik poizvedb in lahko skrajša odzivni čas poizvedbe v zbirko podatkov. Standardni klici api za pridobivanje podatkov iz baze podatkov vključujejo veliko neuporabnih podatkov v odziv, zato se odzivni čas poveča, kar zmanjša učinkovitost. Poizvedba v podatkovnih bazah z uporabo GraphQL vrne le uporabne podatke in s tem skrajša odzivni čas. V tem članku smo aplikacijo graphQL razporedili na primerku EC2.