Come distribuire l'applicazione GraphQL utilizzando il nodo.JS sul server EC2

Come distribuire l'applicazione GraphQL utilizzando il nodo.JS sul server EC2
Graphql, noto anche come linguaggio di query grafico, stabilito e mantenuto da Facebook, è un linguaggio di query utilizzato per le API. È costruito utilizzando i linguaggi di programmazione JavaScript, Scala, Java e Ruby. Il suo scopo di base è chiedere i dati dal server a client.GraphQL aggrega i dati da diverse fonti. L'aggregazione è il processo di filtraggio dei dati sul lato server e quindi l'invio dei dati filtrati al client. Senza aggregazione, inviamo tutti i dati al client e quindi i dati vengono filtrati sul lato client. Questo rende il sistema lento e possiamo migliorare l'efficienza di un'API utilizzando graphql. Qui impareremo a distribuire una semplice applicazione GraphQL utilizzando il nodo.JS su un server EC2.

Installazione di pacchetti richiesti

Il primo passo per distribuire l'applicazione GraphQL è quello di preparare il server installando i pacchetti richiesti. Accedi al server usando SSH.

ubuntu@ubuntu: ~ $ ssh ubuntu@ipadress -i keypair.PEM

NOTA: Assicurarsi che il gruppo di sicurezza dell'istanza sia configurato per consentire la connessione dalla porta 22 e il file chiave privato ha 400 autorizzazioni.

Aggiorna i repository di Ubuntu.

ubuntu@ubuntu: ~ $ sudo apt -get update -y

Ora installa il nodo.JS e NPM sul tuo server Ubuntu.

ubuntu@ubuntu: ~ $ sudo apt -get install nodejs -y
ubuntu@ubuntu: ~ $ sudo apt -get install npm -y

Verifica l'installazione controllando la versione del nodo.JS e NPM.

ubuntu@ubuntu: ~ $ nodo -v
ubuntu@ubuntu: ~ $ npm -v

Sposta l'applicazione GraphQL su EC2 Server

L'istanza EC2 è pronta a distribuire applicazioni graphql in nodo.js. Ora sposteremo il nostro codice sull'istanza EC2. Di seguito sono elencati due modi comuni per copiare il codice sul server e saranno discussi qui.

  • CODICE COPIA utilizzando il comando SCP
  • Codice dell'applicazione clone da github, gitlab o bitbucket

Copia l'applicazione utilizzando il comando SCP

Per copiare l'applicazione sul server EC2 utilizzando il comando SCP, prima di tutto, rimuovi la directory 'node_modules' dalla tua applicazione graphql. Questa directory ha tutti i pacchetti NPM necessari per eseguire l'applicazione. Installeremo questi pacchetti in seguito prima di avviare l'applicazione graphql. Ora comprimere la directory del progetto in un file zip. Dopo aver creato il file zip, sposteremo il file Zip del progetto sul server. Linux e Windows hanno metodi diversi per creare un file zip.

finestre

In Windows, fare clic con il pulsante destro del mouse sulla directory del root dell'applicazione e andare all'opzione "Invia a". Aprirà un sottomenu. Fai clic sulla cartella "Compressa (Zipped)" per creare un file zip dell'applicazione GraphQL.

Linux o Mac

In Linux o Mac OS, useremo il comando 'zip' per creare un file zip del progetto.

ubuntu@ubuntu: ~ $ zip -r graphql.zip graphql

Il comando sopra genererà il graphql.file zip della directory graphql.

Carica l'applicazione sul server

Ora abbiamo un file zip della nostra applicazione e possiamo caricare il file zip sul server utilizzando il comando SCP.

ubuntu@ubuntu: ~ $ SCP -i KeyPair.PEM graphql.zip ubuntu@iPaddress: ~/

Il comando sopra sposterà il file zip del progetto nella directory home del server remoto tramite la connessione SSH. Ora sul server remoto, decomprimere il file zip del progetto.

ubuntu@ubuntu: ~ $ unzip graphql.cerniera lampo

Applicazione clone da GitHub, Bitbucket o Gitlab

Il secondo metodo per copiare il codice dell'applicazione sul server utilizza Git. Installa Git dalla riga di comando sul server EC2.

ubuntu@ubuntu: ~ $ sudo apt install git

Controlla la versione GIT per verificare l'installazione.

ubuntu@ubuntu: ~ $ git -version

Se non fornisce la versione di Git, allora Git non è installato. Ora clona l'applicazione da github, gitlab o bitbucket. Qui cloneremo il codice dell'applicazione dal github.

ubuntu@ubuntu: ~ $ git clone ttps: // github.com/contentful/the-example-app.Nodejs

Avvio dell'applicazione GraphQL

Ora abbiamo la nostra applicazione GraphQL sul server remoto. Vai alla directory root dell'applicazione GraphQL e installa i pacchetti NPM richiesti per eseguire l'applicazione GraphQL.

ubuntu@ubuntu: ~ $ cd graphql
ubuntu@ubuntu: ~ $ sudo npm Installa

Questo comando analizzerà il pacchetto.File JSON nel progetto e installare tutti i pacchetti NPM richiesti. Dopo aver installato i pacchetti richiesti, ora inizieremo l'applicazione GraphQL.

ubuntu@ubuntu: ~ $ nodo app.js

Esecuzione dell'applicazione come demone

Quando eseguiamo l'applicazione utilizzando il metodo standard come descritto sopra, funziona in primo piano e l'applicazione si interrompe quando si chiude la finestra del terminale. Possiamo eseguire l'applicazione come processo di background aggiungendo il segno AmperSand (&) al comando.

ubuntu@ubuntu: ~ $ nodo app.JS &

Il problema con questo metodo è che quando modifichiamo il nostro codice dell'applicazione, le modifiche applicate non si rifletteranno automaticamente. Dovremo riavviare l'applicazione ogni volta che modifichiamo il codice per applicare le modifiche. Per eseguire l'applicazione in background e per applicare le modifiche automaticamente, utilizzeremo un pacchetto NPM chiamato PM2. Installa PM2 sul server.

ubuntu@ubuntu: ~ $ sudo npm install -g pm2

Avviare l'applicazione GraphQL utilizzando PM2.

ubuntu@ubuntu: ~ $ PM2 APPA.JS -NAME "Graphql" -Watch

Il flag '-name' nominerà il processo di sfondo e possiamo avviare e arrestare l'applicazione utilizzando il nome. Il flag '-watch' andrà a controllare il codice dell'applicazione per applicare immediatamente le modifiche. Puoi saperne di più su PM2 visitando il seguente link

https: // pm2.chiave metrica.io/

Interrogazione dell'API GraphQL dal browser

Possiamo configurare la nostra applicazione graphql per effettuare manualmente le query graphql dal browser. Per questo, dobbiamo creare un endpoint HTTP separato su cui monteremo il server API GraphQL. E questo endpoint HTTP verrà utilizzato per fare domande manuali. Di seguito è riportato il codice per creare l'endpoint del server API GraphQL.

const espress = requisito ('express');
const graphqlhttp = requisite ('express-graphql');
const buildSchema = requisite ('graphql');
const graphqlschema = buildSchema ('
tipo query
Messaggio: stringa
'
);
const func =
Messaggio: () =>

Restituisci "stai usando il server API GraphQL";

;
const server = express ();
server.usi ('/graphql', graphqlhttp (
Schema: graphqlschema,
rootvalue: func,
Graphiql: vero
));
server.Ascolta (3000);

Ora, dopo aver eseguito il server, possiamo accedere al server API GraphQL sul percorso seguente.

http: // localhost: 3000/graphql

Interrogazione dell'API GraphQL usando la CLI

Nella sezione precedente, abbiamo effettuato query graphql dal browser usando graphiql. Ora faremo query graphql utilizzando l'interfaccia della riga di comando in Ubuntu. Dalla riga di comando, per effettuare una richiesta di post HTTP, useremo il modulo Curl.

ubuntu@ubuntu: ~ $ curl -x post -h "contenuti -type: applicazione/json" -d '"query": "message"' http: // localhost: 3000/graphql

Interrogazione di API GraphQL a livello di programmazione

Per fare una query graphQL a livello di programmazione, useremo il modulo "Node-Fetch" nel nodo.js. Nodo aperto.js nel terminale.

ubuntu@ubuntu: ~ $ nodo

Ora fai la richiesta di post HTTP al server utilizzando il modulo "Node-Fetch".

GraphQL è un linguaggio di query efficiente e può ridurre il tempo di risposta di una query effettuata al database. L'API standard chiama per recuperare i dati dal database coinvolgono molti dati inutili nella risposta e quindi aumenta i tempi di risposta, il che riduce l'efficienza. La query effettuata ai database utilizzando GraphQL restituisce solo i dati utili e quindi riduce il tempo di risposta. In questo articolo, abbiamo distribuito la nostra applicazione GraphQL su un'istanza EC2.