Nõutavate pakettide installimine
Esimene samm oma grafQL-i rakenduse juurutamiseks on oma serveri ettevalmistamine vajalike pakettide installimisega. Logige SSH-ga serverisse sisse.
[meiliga kaitstud]: ~ $ ssh ubuntu @ IPAdress -i KeyPair.pemMÄRGE: Veenduge, et eksemplari turbegrupp on konfigureeritud lubama ühendust porti 22 ja privaatvõtme failil on 400 luba.
Värskendage Ubuntu hoidlaid.
[meiliga kaitstud]: ~ $ sudo apt-get update -yNüüd installige sõlm.js ja npm teie ubuntu serveris.
[meiliga kaitstud]: ~ $ sudo apt-get install nodejs -y[meiliga kaitstud]: ~ $ sudo apt-get install npm -y
Installimise kontrollimiseks kontrollige sõlme versiooni.js ja npm.
[meiliga kaitstud]: ~ $ sõlm -v[meiliga kaitstud]: ~ $ npm -v
GraphQL-i rakenduse teisaldamine EC2-serverisse
EC2 eksemplar on valmis graphQL-i rakendusi sõlmes juurutama.js. Nüüd liigutame oma koodi EC2 eksemplari. Kaks levinud viisi koodi serverisse kopeerimiseks on loetletud allpool ja neid käsitletakse siin.
- Kopeerige kood käsuga scp
- Kloonige rakenduse kood Githubist, Gitlabist või Bitbucketist
Rakenduse kopeerimine käsuga scp
Rakenduse kopeerimiseks EC2 serverisse käsuga scp eemaldage kõigepealt oma graafQLQL-i kaust 'node_modules'. Selles kataloogis on kõik rakenduse käitamiseks vajalikud paketid npm. Paigaldame need paketid hiljem enne graphQL-i rakenduse käivitamist. Nüüd tihendage projekti kataloog ZIP-failiks. Pärast zip-faili loomist teisaldame projekti zip-faili serverisse. Linuxil ja Windowsil on zip-faili loomiseks erinevad meetodid.
Windows
Paremklõpsake akendes rakenduse juurkataloogil ja minge valikule "Saada". See avab alammenüü. GraphQL-i rakenduse zip-faili loomiseks klõpsake 'tihendatud (zipitud) kaustal'.
Linux või Mac
Linuxis või Mac OS-is kasutame projekti zip-faili loomiseks käsku zip.
[meiliga kaitstud]: ~ $ zip -r graphQL.zip graphQLÜlaltoodud käsk genereerib graphQL-i.graphQL-i kataloogi zip-fail.
Laadige rakendus serverisse üles
Nüüd on meil oma rakenduse zip-fail ja käsuga scp saab zip-faili serverisse laadida.
[meiliga kaitstud]: ~ $ scp -i KeyPair.pem graphQL.zip ubuntu @ IP-aadress: ~ /Ülaltoodud käsk viib projekti ZIP-faili kaugserveri kodukataloogi ssh-ühenduse kaudu. Nüüd pakkige kaugserveris projekti zip-fail lahti.
[meiliga kaitstud]: ~ $ unzip graphQL.tõmblukkKloonirakendus Githubist, Bitbucketist või Gitlabist
Teine meetod rakenduskoodi serverisse kopeerimiseks on git. Installige git EC2 serveri käsurealt.
[meiliga kaitstud]: ~ $ sudo apt install gitInstallimise kontrollimiseks kontrollige giti versiooni.
[meiliga kaitstud]: ~ $ git --versioon
Kui see ei anna versiooni git, siis git pole installitud. Kloonige rakendus nüüd githubist, gitlabist või bitbucketist. Kloonime siin rakenduse koodi githubist.
[meiliga kaitstud]: ~ $ git kloon ttps: // github.com / contentful / the-example-app.nodejsRakenduse GraphQL käivitamine
Nüüd on meil kaugserveris oma graphQL-i rakendus. Minge GraphQL-i rakenduse juurkataloogi ja installige GraphQL-i rakenduse käivitamiseks vajalikud npm-paketid.
[meiliga kaitstud]: ~ $ cd graphQL[meiliga kaitstud]: ~ $ sudo npm install
See käsk analüüsib paketti.jsoni fail projektis ja installige kõik vajalikud npm paketid. Pärast vajalike pakettide installimist käivitame nüüd graphQL-i rakenduse.
[meiliga kaitstud]: ~ $ sõlme rakendus.jsRakenduse käitamine Daemonina
Kui käivitame rakenduse ülalkirjeldatud standardmeetodil, töötab see esiplaanil ja rakendus peatub terminaliakna sulgemisel. Rakendust saame käivitada taustaprotsessina, lisades käsule ampersand (&) märgi.
[meiliga kaitstud]: ~ $ sõlme rakendus.js &Selle meetodi probleem on see, et kui muudame oma rakenduskoodi, ei kajastu rakendatud muudatused automaatselt. Muudatuste rakendamiseks peame rakenduse taaskäivitama iga kord, kui muudame koodi. Rakenduse taustal töötamiseks ja muudatuste automaatseks rakendamiseks kasutame npm paketti pm2. Installige pm2 serverisse.
[meiliga kaitstud]: ~ $ sudo npm install -g pm2Käivitage graphQL-i rakendus pm2 abil.
[meiliga kaitstud]: ~ $ pm2 algusrakendus.js - nimi "graphQL" - kellLipp '-name' nimetab taustaprotsessi ning saame nime käivitades rakenduse käivitada ja peatada. Lipp '-watch' jätkab rakenduse koodi kontrollimist, et muudatused kohe rakendada. Pm2 kohta saate lisateavet järgmise lingi kaudu
https: // pm2.võtmeetrika.io /
GraphQL API pärimine brauserist
Saame oma graphQL-i rakenduse konfigureerida nii, et brauserist saaks käsitsi graafQL-päringuid teha. Selleks peame looma eraldi HTTP-lõpp-punkti, millele paigaldame graphQL API-serveri. Ja seda HTTP-lõpp-punkti kasutatakse käsitsi päringute tegemiseks. Järgmine on kood, mis loob graphQL api serveri lõpp-punkti.
const väljendada = nõuda ('väljendada');const graphqlHTTP = nõuda ('express-graphql');
const buildSchema = nõuda ('graphql');
const graphQLSchema = buildSchema ('
sisestage päring
teade: String
'
);
const func =
teade: () =>
tagastage 'kasutate graphql api serverit';
;
const server = ekspress ();
server.use ('/ graphql', graphqlHTTP (
skeem: graphQLSchema,
rootValue: func,
graphiql: tõsi
));
server.kuulama (3000);
Nüüd, pärast serveri käivitamist, pääseme GraphQL api serverile juurde järgmisel marsruudil.
http: // localhost: 3000 / graphql
GraphQL API pärimine CLI abil
Eelmises osas tegime brauserist graphQL päringuid graphiql abil. Nüüd teeme graphQL päringuid, kasutades Ubuntu käsurea liidest. Käsurealt HTTP POST-päringu tegemiseks kasutame curl-moodulit.
[meiliga kaitstud]: ~ $ curl -X POST -H "Content-Type: application / json" -d '"query": "message"' http: // localhost: 3000 / graphql
GraphQL API päring programmiliselt
GraphQL-i päringu programmiliseks koostamiseks kasutame sõlmes moodulit 'node-fetch'.js. Avage sõlm.js terminalis.
[meiliga kaitstud]: ~ $ sõlmNüüd tehke serverile HTTP POST-päring mooduli 'node-fetch' abil.
GraphQL on tõhus päringukeel ja see võib vähendada andmebaasi tehtud päringu reageerimisaega. Andmebaasist andmete toomiseks mõeldud standardsed api-kutsed hõlmavad vastuses palju kasutuid andmeid ja seega pikeneb reageerimisaeg, mis vähendab tõhusust. GraphQL abil andmebaasidesse tehtud päring tagastab ainult kasulikud andmed ja vähendab seega reageerimisaega. Selles artiklis oleme juurutanud oma graphQL-i rakenduse EC2-eksemplarile.