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.
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.