Installera nödvändiga paket
Det första steget för att distribuera din grafQL-applikation är att förbereda din server genom att installera de nödvändiga paketen. Logga in på servern med SSH.
[e-postskyddad: ~ $ ssh ubuntu @ IPAdress -i KeyPair.pemNOTERA: Se till att instansens säkerhetsgrupp är konfigurerad för att tillåta anslutning från port 22 och att den privata nyckelfilen har 400 behörighet.
Uppdatera Ubuntu-arkiv.
[e-postskyddad]: ~ $ sudo apt-get update -yInstallera nu nod.js och npm på din ubuntu-server.
[e-postskyddad]: ~ $ sudo apt-get install nodejs -y[e-postskyddad]: ~ $ sudo apt-get install npm -y
Verifiera installationen genom att kontrollera versionen av noden.js och npm.
[e-postskyddad]: ~ $ node -v[e-postskyddad]: ~ $ npm -v
Flytta GraphQL-applikationen till EC2-servern
EC2-instansen är redo att distribuera grafQL-applikationer i noden.js. Nu flyttar vi vår kod till EC2-instansen. Två vanliga sätt att kopiera koden till servern listas nedan och kommer att diskuteras här.
- Kopiera kod med scp-kommandot
- Klonapplikationskod från Github, Gitlab eller Bitbucket
Kopiera applikationen med scp Command
För att kopiera din applikation till EC2-servern med scp-kommandot, först och främst, ta bort katalogen 'node_modules' från din grafQL-applikation. Den här katalogen har alla npm-paket som krävs för att köra programmet. Vi installerar dessa paket senare innan vi startar grafQL-applikationen. Komprimera nu projektkatalogen till en zip-fil. Efter att ha skapat zip-filen flyttar vi projektets zip-fil till servern. Linux och windows har olika metoder för att skapa en zip-fil.
Windows
I Windows högerklickar du på programmets rotkatalog och går till alternativet 'skicka till'. Den öppnar en undermeny. Klicka på "Komprimerad (zippad) mapp" för att skapa en zip-fil för grafQL-applikationen.
Linux eller Mac
I Linux eller Mac OS använder vi kommandot 'zip' för att skapa en zip-fil av projektet.
[e-postskyddad]: ~ $ zip -r graphQL.zip graphQLOvanstående kommando genererar graphQL.zip-fil i grafQL-katalogen.
Ladda upp applikation till servern
Nu har vi en zip-fil av vår applikation, och vi kan ladda upp zip-filen till servern med hjälp av scp-kommandot.
[e-postskyddad]: ~ $ scp -i KeyPair.pem graphQL.zip ubuntu @ IPAddress: ~ /Ovanstående kommando flyttar projektets zip-fil till fjärrservern hemkatalog över ssh-anslutningen. Packa nu upp zip-filen på fjärrservern.
[e-postskyddad]: ~ $ packa upp grafQL.blixtlåsKlonapplikation från Github, Bitbucket eller Gitlab
Den andra metoden för att kopiera applikationskod till servern använder git. Installera git från kommandoraden på EC2-servern.
[e-postskyddad]: ~ $ sudo apt install gitKontrollera git-versionen för att verifiera installationen.
[e-postskyddad]: ~ $ git --version
Om det inte ger versionen av git är git inte installerat. Klon nu applikationen från github, gitlab eller bitbucket. Här kommer vi att klona applikationskoden från github.
[e-postskyddad]: ~ $ git klon ttps: // github.com / contentful / the-example-app.nodjsStarta GraphQL-applikationen
Nu har vi vår grafQL-applikation på fjärrservern. Gå till rotkatalogen för graphQL-applikationen och installera de nödvändiga npm-paketen för att köra graphQL-applikationen.
[e-postskyddad]: ~ $ cd graphQL[e-postskyddad]: ~ $ sudo npm installation
Detta kommando analyserar paketet.json-filen i projektet och installera alla nödvändiga npm-paket. Efter installation av nödvändiga paket startar vi nu grafQL-applikationen.
[e-postskyddad]: ~ $ nod-app.jsKör applikation som Daemon
När vi kör applikationen med standardmetoden som beskrivs ovan, körs den i förgrunden och applikationen slutar när du stänger terminalfönstret. Vi kan köra applikationen som en bakgrundsprocess genom att lägga till tecknet ampersand (&) till kommandot.
[e-postskyddad]: ~ $ nod-app.js &Problemet med den här metoden är att när vi ändrar vår applikationskod kommer de tillämpade ändringarna inte att återspeglas automatiskt. Vi måste starta om applikationen varje gång vi ändrar koden för att tillämpa ändringarna. För att köra applikationen i bakgrunden och tillämpa ändringar automatiskt använder vi ett npm-paket med namnet pm2. Installera pm2 på servern.
[e-postskyddad]: ~ $ sudo npm installera -g pm2Starta grafQL-applikationen med hjälp av pm2.
[e-postskyddad]: ~ $ pm2 startapp.js --namn “graphQL” --watchFlaggan '-namn' kommer att namnge bakgrundsprocessen, och vi kan starta och stoppa applikationen med namnet. Flaggan "-watch" fortsätter att kontrollera applikationskoden för att tillämpa ändringar direkt. Du kan lära dig mer om pm2 genom att besöka följande länk
https: // pm2.keymetrics.io /
Fråga om GraphQL API från webbläsaren
Vi kan konfigurera vår grafQL-applikation så att den gör grafikfrågor från webbläsaren manuellt. För detta måste vi skapa en separat HTTP-slutpunkt som vi monterar graphQL API-servern på. Och den här HTTP-slutpunkten kommer att användas för att göra manuella frågor. Följande är koden för att skapa GraphQL api-serverns slutpunkt.
const express = kräver ('express');const graphqlHTTP = kräver ('express-graphql');
const buildSchema = kräver ('graphql');
const graphQLSchema = buildSchema ('
skriv fråga
meddelande: Sträng
'
);
const func =
meddelande: () =>
returnera 'du använder graphql api-server';
;
const server = express ();
server.använd ('/ graphql', graphqlHTTP (
schema: graphQLSchema,
rootValue: func,
graphiql: sant
));
server.lyssna (3000);
Nu, efter att ha kört servern, kan vi komma åt grafQL api-servern på följande rutt.
http: // localhost: 3000 / graphql
Fråga om GraphQL API med CLI
I föregående avsnitt gjorde vi graphQL-frågor från webbläsaren med hjälp av graphiql. Nu ska vi göra graphQL-frågor med kommandoradsgränssnittet i ubuntu. Från kommandoraden, för att göra en HTTP POST-begäran, använder vi curl-modulen.
[email protected]: ~ $ curl -X POST -H "Content-Type: application / json" -d '"query": "message"' http: // localhost: 3000 / graphql
Fråga om GraphQL API Programmatiskt
För att göra grafQL-frågor programmatiskt använder vi modulen 'nod-hämta' i nod.js. Öppna nod.js i terminalen.
[e-postskyddad]: ~ $ nodGör nu HTTP POST-begäran till servern med hjälp av modulen '' nod-fetch ''.
GraphQL är ett effektivt frågespråk och det kan minska svarstiden för en fråga som görs i databasen. Standard-api-samtalen för att hämta data från databasen involverar många oanvändbara data i svaret, och följaktligen ökar svarstiden, vilket minskar effektiviteten. Frågan som görs till databaserna med hjälp av GraphQL returnerar endast användbara data och minskar därmed svarstiden. I den här artikeln har vi implementerat vår grafQL-applikation på en EC2-instans.