Installazione dei pacchetti richiesti
Il primo passo per distribuire la tua applicazione graphQL è preparare il tuo server installando i pacchetti richiesti. Accedi al server utilizzando SSH.
[email protected]:~$ ssh ubuntu@IPAdress -i KeyPair.pemNOTA: assicurati che il gruppo di sicurezza dell'istanza sia configurato per consentire la connessione dalla porta 22 e che il file della chiave privata disponga di 400 autorizzazioni.
Aggiorna i repository di Ubuntu.
[email protected]:~$ sudo apt-get update -yOra installa il nodo.js e npm sul tuo server Ubuntu.
[email protected]:~$ sudo apt-get install nodejs -y[email protected]:~$ sudo apt-get install npm -y
Verificare l'installazione controllando la versione di node.js e npm.
[email protected]:~$ node -v[e-mail protetta]:~$ npm -v
Sposta l'applicazione GraphQL sul server EC2
L'istanza EC2 è pronta per distribuire applicazioni graphQL in node.js. Ora sposteremo il nostro codice nell'istanza EC2. Di seguito sono elencati due modi comuni per copiare il codice sul server e verranno discussi qui.
- Copia il codice usando il comando scp
- Clona il codice dell'applicazione da Github, Gitlab o Bitbucket
Copia l'applicazione usando il comando scp
Per copiare la tua applicazione sul server EC2 usando il comando scp, prima di tutto, rimuovi la directory 'node_modules' dalla tua applicazione graphQL. Questa directory contiene tutti i pacchetti npm necessari per eseguire l'applicazione. Installeremo questi pacchetti in seguito prima di avviare l'applicazione graphQL. Ora comprimi 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, fai clic con il pulsante destro del mouse sulla directory principale dell'applicazione e vai all'opzione "Invia a". Si aprirà un sottomenu. Fare clic sulla "Cartella compressa (zippata)" per creare un file zip dell'applicazione graphQL.
Linux o Mac
In Linux o Mac OS, utilizzeremo il comando 'zip' per creare un file zip del progetto.
[email protected]:~$ zip -r graphQL.zip graphQLIl comando sopra genererà il graphQL.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 usando il comando scp.
[email protected]:~$ scp -i KeyPair.pem graficoQL.zip ubuntu@IPAddress:~/Il comando precedente sposterà il file zip del progetto nella home directory del server remoto tramite la connessione ssh. Ora sul server remoto, decomprimi il file zip del progetto.
[email protected]:~$ unzip graphQL.cerniera lampoClona applicazione da Github, Bitbucket o Gitlab
Il secondo metodo per copiare il codice dell'applicazione sul server è usare git. Installa git dalla riga di comando sul server EC2.
[email protected]:~$ sudo apt install gitControlla la versione git per verificare l'installazione.
[email protected]:~$ 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 da github.
[email protected]:~$ git clone ttps://github.com/contentful/l'app-esempio.nodejsAvvio dell'applicazione GraphQL
Ora abbiamo la nostra applicazione graphQL sul server remoto. Vai alla directory principale dell'applicazione graphQL e installa i pacchetti npm richiesti per eseguire l'applicazione graphQL.
[email protected]:~$ cd graphQL[email protected]:~$ sudo npm install
Questo comando analizzerà il pacchetto.json nel progetto e installa tutti i pacchetti npm richiesti. Dopo aver installato i pacchetti richiesti, ora avvieremo l'applicazione graphQL.
[email protected]:~$ app nodo.jsEsecuzione dell'applicazione come demone
Quando eseguiamo l'applicazione utilizzando il metodo standard come descritto sopra, viene eseguita in primo piano e l'applicazione si interrompe quando chiudi la finestra del terminale. Possiamo eseguire l'applicazione come processo in background aggiungendo il segno e commerciale (&) al comando.
[email protected]:~$ node app.js &Il problema con questo metodo è che quando modifichiamo il 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 applicare le modifiche automaticamente, utilizzeremo un pacchetto npm denominato pm2. Installa pm2 sul server.
[email protected]:~$ sudo npm install -g pm2Avvia l'applicazione graphQL usando pm2.
[email protected]:~$ pm2 avvia l'app.js --name “graphQL” --watchIl flag '-name' nominerà il processo in background e possiamo avviare e fermare l'applicazione usando il nome. Il flag '-watch' continuerà 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 query graphQL dal browser manualmente. Per questo, dobbiamo creare un endpoint HTTP separato su cui monteremo il server API graphQL. E questo endpoint HTTP verrà utilizzato per effettuare query manuali. Di seguito è riportato il codice per creare l'endpoint del server API graphQL.
const express = require('express');const graphqlHTTP = require('express-graphql');
const buildSchema = require('graphql');
const graphQLSchema = buildSchema('
tipo Query
messaggio: String
'
);
funzione costante =
messaggio: () =>
restituisce 'stai usando il server API di graphql';
;
const server = express();
server.use('/graphql', graphqlHTTP(
schema: graphQLSchema,
rootValue: funzione,
graphiql: vero
));
server.ascolta(3000);
Ora, dopo aver eseguito il server, possiamo accedere al server API di graphQL sul seguente percorso.
http://localhost:3000/graphql
Interrogazione dell'API GraphQL tramite CLI
Nella sezione precedente, abbiamo eseguito query graphQL dal browser utilizzando graphiql. Ora faremo query graphQL usando l'interfaccia della riga di comando in Ubuntu. Dalla riga di comando, per effettuare una richiesta HTTP POST, utilizzeremo il modulo curl.
[email protected]:~$ curl -X POST -H "Content-Type: application/json" -d '"query": " message "' http://localhost:3000/graphql
Interrogazione dell'API GraphQL a livello di codice
Per eseguire query graphQL in modo programmatico, utilizzeremo il modulo 'node-fetch' in node.js. Nodo aperto.js nel terminale.
[email protected]:~$nodoOra fai la richiesta HTTP POST al server usando il modulo 'node-fetch'.
GraphQL è un linguaggio di query efficiente e può ridurre il tempo di risposta di una query fatta al database. Le chiamate API standard per recuperare i dati dal database coinvolgono molti dati non utili nella risposta e quindi il tempo di risposta aumenta, il che diminuisce 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.