Instalace požadovaných balíčků
Prvním krokem k nasazení vaší aplikace GraphQL je připravit server instalací požadovaných balíčků. Přihlaste se k serveru pomocí SSH.
[chráněno e-mailem]: ~ $ ssh ubuntu @ IPAdress -i KeyPair.pemPOZNÁMKA: Ujistěte se, že skupina zabezpečení instance je nakonfigurována tak, aby umožňovala připojení z portu 22, a soubor soukromého klíče má oprávnění 400.
Aktualizujte úložiště Ubuntu.
[chráněno e-mailem]: ~ $ sudo apt-get update -yNyní nainstalujte uzel.js a npm na vašem serveru ubuntu.
[chráněno e-mailem]: ~ $ sudo apt-get install nodejs -y[chráněno e-mailem]: ~ $ sudo apt-get install npm -y
Ověřte instalaci kontrolou verze uzlu.js a npm.
[chráněno e-mailem]: ~ $ node -v[chráněno e-mailem]: ~ $ npm -v
Přesuňte aplikaci GraphQL na server EC2
Instance EC2 je připravena nasadit aplikace graphQL v uzlu.js. Nyní přesuneme náš kód do instance EC2. Níže jsou uvedeny dva běžné způsoby kopírování kódu na server, které zde budou popsány.
- Zkopírujte kód pomocí příkazu scp
- Klonujte kód aplikace z Github, Gitlab nebo Bitbucket
Zkopírujte aplikaci pomocí příkazu scp
Chcete-li zkopírovat svou aplikaci na server EC2 pomocí příkazu scp, nejprve odstraňte z aplikace graphQL adresář 'node_modules'. Tento adresář obsahuje všechny balíčky npm potřebné pro spuštění aplikace. Tyto balíčky nainstalujeme později před spuštěním aplikace graphQL. Nyní komprimujte adresář projektu do souboru zip. Po vytvoření souboru zip přesuneme soubor zip projektu na server. Linux a Windows mají různé metody pro vytvoření souboru ZIP.
Okna
V systému Windows klepněte pravým tlačítkem myši na kořenový adresář aplikace a přejděte na možnost Odeslat. Otevře se podnabídka. Kliknutím na složku „Komprimovaná (komprimovaná)“ vytvoříte soubor zip aplikace graphQL.
Linux nebo Mac
V systému Linux nebo Mac OS použijeme příkaz 'zip' k vytvoření souboru zip projektu.
[chráněno e-mailem]: ~ $ zip -r graphQL.zip graphQLVýše uvedený příkaz vygeneruje graphQL.zip soubor graphQL adresáře.
Nahrajte aplikaci na server
Nyní máme zip soubor naší aplikace a můžeme soubor zip nahrát na server pomocí příkazu scp.
[chráněno e-mailem]: ~ $ scp -i KeyPair.pem graphQL.zip ubuntu @ IPAddress: ~ /Výše uvedený příkaz přesune soubor zip projektu do domovského adresáře vzdáleného serveru přes připojení ssh. Nyní na vzdáleném serveru rozbalte zip soubor projektu.
[chráněno e-mailem]: ~ $ rozbalte graphQL.zipKlonujte aplikaci z Github, Bitbucket nebo Gitlab
Druhá metoda kopírování kódu aplikace na server je pomocí git. Nainstalujte git z příkazového řádku na server EC2.
[email protected]: ~ $ sudo apt install gitZkontrolujte verzi git a ověřte instalaci.
[chráněno e-mailem]: ~ $ git --version
Pokud neposkytuje verzi git, není git nainstalován. Nyní klonujte aplikaci z github, gitlab nebo bitbucket. Zde budeme klonovat kód aplikace z githubu.
[chráněno e-mailem]: ~ $ git clone ttps: // github.com / contentful / the-example-app.nodejsSpuštění aplikace GraphQL
Nyní máme naši aplikaci graphQL na vzdáleném serveru. Přejděte do kořenového adresáře aplikace graphQL a nainstalujte požadované balíčky npm pro spuštění aplikace graphQL.
[chráněno e-mailem]: ~ $ cd graphQL[chráněno e-mailem]: ~ $ sudo npm install
Tento příkaz provede analýzu balíčku.soubor JSON v projektu a nainstalujte všechny požadované balíčky NPM. Po instalaci požadovaných balíčků nyní spustíme aplikaci graphQL.
[chráněno e-mailem]: ~ $ uzel aplikace.jsSpuštěná aplikace jako démon
Když spustíme aplikaci pomocí standardní metody, jak je popsáno výše, běží v popředí a aplikace se zastaví, když zavřete okno terminálu. Aplikaci můžeme spustit jako proces na pozadí připojením znaku ampersand (&) k příkazu.
[chráněno e-mailem]: ~ $ uzel aplikace.js &Problém této metody spočívá v tom, že když upravíme náš kód aplikace, použité změny se automaticky neprojeví. Budeme muset restartovat aplikaci pokaždé, když upravíme kód, aby se změny uplatnily. Abychom mohli aplikaci spouštět na pozadí a automaticky aplikovat změny, použijeme balíček npm s názvem pm2. Nainstalujte pm2 na server.
[chráněno e-mailem]: ~ $ sudo npm install -g pm2Spusťte aplikaci graphQL pomocí pm2.
[chráněno e-mailem]: ~ $ pm2 spuštění aplikace.js - název „graphQL“ - hodinkyPříznak '-name' pojmenuje proces na pozadí a pomocí názvu můžeme spustit a zastavit aplikaci. Příznak „-hodinky“ bude pokračovat v kontrole kódu aplikace, aby se změny okamžitě uplatnily. Další informace o pm2 naleznete na následujícím odkazu
https: // pm2.keymetrics.io /
Dotazování GraphQL API z prohlížeče
Můžeme nakonfigurovat naši aplikaci graphQL tak, aby vytvářela dotazy graphQL z prohlížeče ručně. K tomu musíme vytvořit samostatný koncový bod HTTP, na který připojíme server GraphQL API. A tento koncový bod HTTP bude použit k manuálním dotazům. Následuje kód pro vytvoření koncového bodu serveru graphQL api.
const express = require ('express');const graphqlHTTP = require ('express-graphql');
const buildSchema = require ('graphql');
const graphQLSchema = buildSchema ('
zadejte dotaz
zpráva: Řetězec
'
);
const func =
zpráva: () =>
vrátit 'používáte server Graphql API';
;
const server = express ();
serveru.použít ('/ graphql', graphqlHTTP (
schéma: graphQLSchema,
rootValue: func,
graphiql: true
));
serveru.poslouchat (3000);
Nyní, po spuštění serveru, můžeme přistupovat k serveru GraphQL API na následující trase.
http: // localhost: 3000 / graphql
Dotazování GraphQL API pomocí CLI
V předchozí části jsme vytvořili dotazy graphQL z prohlížeče pomocí graphiql. Nyní budeme dělat dotazy graphQL pomocí rozhraní příkazového řádku v ubuntu. Z příkazového řádku použijeme k vytvoření požadavku HTTP POST modul curl.
[chráněno e-mailem]: ~ $ curl -X POST -H "Content-Type: application / json" -d '"query": "message"' http: // localhost: 3000 / graphql
Programové dotazování na GraphQL API
Abychom mohli programově provádět graphQL dotaz, použijeme v uzlu modul 'node-fetch'.js. Otevřít uzel.js v terminálu.
[chráněno e-mailem]: ~ $ uzelNyní proveďte požadavek HTTP POST na server pomocí modulu 'node-fetch'.
GraphQL je efektivní dotazovací jazyk a může snížit dobu odezvy dotazu provedeného do databáze. Standardní volání API pro načtení dat z databáze zahrnují v odpovědi mnoho nepotřebných dat, a proto se zvyšuje doba odezvy, což snižuje účinnost. Dotaz provedený do databází pomocí GraphQL vrací pouze užitečná data, a tím snižuje dobu odezvy. V tomto článku jsme nasadili naši aplikaci graphQL na instanci EC2.