Jak wdrożyć aplikację GraphQL za pomocą węzła.JS na serwerze EC2

Jak wdrożyć aplikację GraphQL za pomocą węzła.JS na serwerze EC2
GraphQL, znany również jako język zapytania, ustanowiony i utrzymany przez Facebook, to język zapytania używany do interfejsów API. Jest zbudowany za pomocą języków programowania JavaScript, Scala, Java i Ruby. Jego podstawowym celem jest poproszenie o dane z serwera do klienta.GraphQL agreguje dane z różnych źródeł. Agregacja to proces filtrowania danych po stronie serwera, a następnie wysyłania przefiltrowanych danych do klienta. Bez agregacji wysyłamy wszystkie dane do klienta, a następnie dane są filtrowane po stronie klienta. To sprawia, że ​​system jest powolny i możemy poprawić wydajność interfejsu API za pomocą GraphQL. Tutaj nauczymy się wdrażać prostą aplikację GraphQL za pomocą węzła.JS na serwerze EC2.

Instalowanie wymaganych pakietów

Pierwszym krokiem do wdrożenia aplikacji GraphQL jest przygotowanie serwera poprzez instalowanie wymaganych pakietów. Zaloguj się na serwerze za pomocą SSH.

Ubuntu@ubuntu: ~ $ ssh ubuntu@ipadress -i.pem

NOTATKA: Upewnij się, że grupa bezpieczeństwa instancji jest skonfigurowana tak, aby umożliwić połączenie z portu 22, a plik klucza prywatnego ma 400 uprawnienia.

Zaktualizuj repozytoria Ubuntu.

Ubuntu@ubuntu: ~ $ sudo apt -get aktualizacja -y

Teraz zainstaluj węzeł.JS i NPM na serwerze Ubuntu.

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

Sprawdź instalację, sprawdzając wersję węzła.JS i NPM.

Ubuntu@ubuntu: ~ $ node -v
Ubuntu@ubuntu: ~ $ npm -v

Przenieś aplikację GraphQL na serwer EC2

Instancja EC2 jest gotowa do wdrożenia aplikacji GraphQL w węźle.JS. Teraz przeniesiemy nasz kod do instancji EC2. Dwa wspólne sposoby kopiowania kodu na serwer są wymienione poniżej i zostaną omówione tutaj.

  • Kopia kod za pomocą polecenia SCP
  • Kod aplikacji klonowej z Github, Gitlab lub Bitbucket

Kopiuj aplikację za pomocą polecenia SCP

Aby skopiować aplikację do serwera EC2 za pomocą polecenia SCP, przede wszystkim usuń katalog „Node_modules” z aplikacji GraphQL. Ten katalog ma wszystkie pakiety NPM wymagane do uruchomienia aplikacji. Za uruchomienie aplikacji GraphQL zainstalujemy te pakiety. Teraz skompresuj katalog projektu w plik zip. Po utworzeniu pliku pocztowego przeniesiemy plik ZIP Project na serwer. Linux i Windows mają różne metody utworzenia pliku zip.

Okna

W systemie Windows kliknij prawym przyciskiem myszy w katalogu aplikacji i przejdź do opcji „Wyślij do”. Otworzy podmenu. Kliknij folder „Compressed (zapinany)”, aby utworzyć plik zip aplikacji GraphQL.

Linux lub Mac

W systemie Linux lub Mac OS użyjemy polecenia „ZIP”, aby utworzyć plik zip projektu.

Ubuntu@ubuntu: ~ $ zip -r grafql.Zip Graphql

Powyższe polecenie wygeneruje GraphQL.plik zip katalogu GraphQL.

Prześlij aplikację na serwer

Teraz mamy plik zip naszej aplikacji i możemy przesłać plik ZIP na serwer za pomocą polecenia SCP.

Ubuntu@ubuntu: ~ $ scp -i.PEM Graphql.Zip ubuntu@ipaddress: ~/

Powyższe polecenie przeniesie plik ZIP Project do katalogu domowego serwera zdalnego przez połączenie SSH. Teraz na zdalnym serwerze rozpakuj plik zip projektu.

Ubuntu@ubuntu: ~ $ Unzip Graphql.zamek błyskawiczny

Aplikacja klonów z Github, Bitbucket lub Gitlab

Drugą metodą kopiowania kodu aplikacji do serwera jest używanie git. Zainstaluj git z wiersza poleceń na serwerze EC2.

Ubuntu@ubuntu: ~ $ sudo apt instal git

Sprawdź wersję GIT, aby zweryfikować instalację.

Ubuntu@ubuntu: ~ $ git --version

Jeśli nie podaje wersji git, git nie jest instalowany. Teraz klonuj aplikację z Github, Gitlab lub Bitbucket. Tutaj sklonujemy kod aplikacji z github.

Ubuntu@ubuntu: ~ $ git Clone ttps: // github.com/contentful/example-app.nodeJS

Uruchomienie aplikacji GraphQL

Teraz mamy naszą aplikację GraphQL na zdalnym serwerze. Przejdź do katalogu głównego aplikacji GraphQL i zainstaluj wymagane pakiety NPM, aby uruchomić aplikację GraphQL.

Ubuntu@ubuntu: ~ $ cd Graphql
Ubuntu@ubuntu: ~ $ sudo npm instalacja

To polecenie przeanalizuje pakiet.plik JSON w projekcie i zainstaluj wszystkie wymagane pakiety NPM. Po zainstalowaniu wymaganych pakietów rozpoczniemy aplikację GraphQL.

Ubuntu@ubuntu: ~ $ node App.JS

Uruchamianie aplikacji jako demona

Kiedy uruchamiamy aplikację przy użyciu metody standardowej, jak opisano powyżej, działa ona na pierwszym planie, a aplikacja kończy się po zamknięciu okna terminala. Możemy uruchomić aplikację jako proces w tle, dołączając podpis Ampersand (&) do polecenia.

Ubuntu@ubuntu: ~ $ node App.JS &

Problem z tą metodą polega na tym, że po modyfikowaniu naszego kodu aplikacji, zastosowane zmiany nie odzwierciedlają automatycznie. Będziemy musieli ponownie uruchomić aplikację za każdym razem, gdy modyfikujemy kod, aby zastosować zmiany. Aby uruchomić aplikację w tle i automatycznie zastosować zmiany, użyjemy pakietu NPM o nazwie PM2. Zainstaluj PM2 na serwerze.

Ubuntu@ubuntu: ~ $ sudo npm instalacja -g pm2

Uruchom aplikację GraphQL za pomocą PM2.

Ubuntu@ubuntu: ~ $ pm2 start aplikacja.JS --Name „GraphQl” -Watch

Flaga „-Name” nazwie proces tła, a my możemy uruchomić i zatrzymać aplikację za pomocą nazwy. Flaga „-Watch” będzie kontynuować sprawdzenie kodu aplikacji, aby natychmiast zastosować zmiany. Możesz dowiedzieć się więcej o PM2, odwiedzając następujący link

https: // pm2.Keymetrics.IO/

Zapytanie API GraphQL z przeglądarki

Możemy skonfigurować naszą aplikację GraphQL, aby ręcznie wytwarzać zapytania GraphQL z przeglądarki. W tym celu musimy utworzyć osobny punkt końcowy HTTP, na którym zamontujemy serwer API GraphQL. I ten punkt końcowy HTTP zostanie użyty do robienia zapytań ręcznych. Poniżej znajduje się kod utworzenia punktu końcowego serwera API GraphQL.

const express = wymaga („express”);
const GraphQlhttp = wymaga ('express-GRAPHQL');
const Buildschema = wymaga („grafql”);
const Graphqlschema = Buildschema ('
Wpisz zapytanie
Wiadomość: ciąg
'
);
const func =
Wiadomość: () =>

zwróć „Używasz GraphQL API Server”;

;
const server = express ();
serwer.Użyj ('/ghsztaql', grafqlhttp (
Schemat: Graphqlschema,
rootValue: Func,
Graphiql: True
));
serwer.Słuchaj (3000);

Teraz, po uruchomieniu serwera, możemy uzyskać dostęp do serwera API GraphQL na następującej trasie.

http: // localhost: 3000/graftql

Zapytanie API GraphQL za pomocą CLI

W poprzedniej sekcji wykonaliśmy zapytania GraphQL z przeglądarki za pomocą GraphiQL. Teraz zamierzamy zrobić zapytania GraphQL za pomocą interfejsu wiersza polecenia w Ubuntu. Z wiersza poleceń, aby złożyć żądanie postu HTTP, użyjemy modułu curl.

Ubuntu@ubuntu: ~ $ curl -x post -h "content -Type: Application/json" -d '"query": "message"' http: // localhost: 3000/ghacql

Zapytanie GraphQL API programowo

Aby zapytań GraphQL programowo, użyjemy modułu „Fetch” w węźle.JS. Otwarty węzeł.JS w terminalu.

Ubuntu@ubuntu: ~ $ node

Teraz zrób żądanie postu HTTP do serwera za pomocą modułu „Node-Fetch”.

GraphQL to wydajny język zapytania i może skrócić czas odpowiedzi zapytania wykonanego w bazie danych. Standardowe wywołujące interfejs API do pobierania danych z bazy danych obejmuje wiele nieużywających danych w odpowiedzi, a tym samym wzrost czasu odpowiedzi, co zmniejsza wydajność. Zapytanie wykonane do baz danych za pomocą GraphQL zwraca tylko przydatne dane, a zatem skraca czas odpowiedzi. W tym artykule wdrożyliśmy naszą aplikację GraphQL w instancji EC2.