NodeJS

Как да разположим приложението GraphQL с помощта на Node.js на EC2 сървър

Как да разположим приложението GraphQL с помощта на Node.js на EC2 сървър
GraphQL, известен също като Graph Query Language, създаден и поддържан от Facebook, е език за заявки, използван за API. Изграден е с помощта на програмни езици JavaScript, Scala, Java и Ruby. Основната му цел е да поиска данните от сървър до клиент.GraphQL обединява данните от различни източници. Агрегирането е процес на филтриране на данни от страна на сървъра и след това изпращане на филтрираните данни на клиента. Без агрегиране изпращаме всички данни на клиента и след това данните се филтрират от страна на клиента. Това прави системата бавна и можем да подобрим ефективността на API, като използваме GraphQL. Тук ще се научим да разгръщаме просто приложение GraphQL с помощта на node.js на EC2 сървър.

Инсталиране на необходимите пакети

Първата стъпка за внедряване на вашето GraphQL приложение е да подготвите сървъра си, като инсталирате необходимите пакети. Влезте в сървъра с помощта на SSH.

[имейл защитен]: ~ $ ssh ubuntu @ IPAdress -i KeyPair.пем

ЗАБЕЛЕЖКА: Уверете се, че групата за защита на екземпляра е конфигурирана да позволява връзка от порт 22 и файлът с частния ключ има 400 разрешение.

Актуализирайте хранилищата на Ubuntu.

[имейл защитен]: ~ $ sudo apt-get update -y

Сега инсталирайте възел.js и npm на вашия сървър на ubuntu.

[имейл защитен]: ~ $ sudo apt-get install nodejs -y
[имейл защитен]: ~ $ sudo apt-get install npm -y

Проверете инсталацията, като проверите версията на възела.js и npm.

[имейл защитен]: ~ $ node -v
[имейл защитен]: ~ $ npm -v

Преместете приложението GraphQL на EC2 сървър

Екземплярът EC2 е готов за разполагане на графични приложения в node.js. Сега ще преместим нашия код в екземпляра EC2. Два често срещани начина за копиране на кода на сървъра са изброени по-долу и ще бъдат обсъдени тук.

Копирайте приложението с помощта на командата scp

За да копирате приложението си на EC2 сървъра с помощта на командата scp, на първо място, премахнете директорията 'node_modules' от приложението graphQL. Тази директория съдържа всички npm пакети, необходими за стартиране на приложението. Ще инсталираме тези пакети по-късно, преди да стартираме приложението graphQL. Сега компресирайте директорията на проекта в zip файл. След създаването на zip файла ще преместим zip файла на проекта на сървъра. Linux и Windows имат различни методи за създаване на zip файл.

Windows

В Windows кликнете с десния бутон на мишката върху основната директория на приложението и отидете на опцията „изпрати до“. Ще отвори подменю. Кликнете върху „Компресирана (компресирана) папка“, за да създадете zip файл на приложението graphQL.

Linux или Mac

В Linux или Mac OS ще използваме командата 'zip', за да създадем zip файл на проекта.

[имейл защитен]: ~ $ zip -r graphQL.zip graphQL

Горната команда ще генерира graphQL.zip файл на директорията graphQL.

Качете приложение на сървъра

Сега имаме zip файл на нашето приложение и можем да качим zip файла на сървъра с помощта на командата scp.

[имейл защитен]: ~ $ scp -i KeyPair.pem graphQL.zip ubuntu @ IPAddress: ~ /

Горната команда ще премести zip файла на проекта в домашната директория на отдалечения сървър през ssh връзката. Сега на отдалечения сървър разархивирайте zip файла на проекта.

[имейл защитен]: ~ $ unzip graphQL.цип

Клониране на приложение от Github, Bitbucket или Gitlab

Вторият метод за копиране на код на приложение на сървъра е чрез git. Инсталирайте git от командния ред на EC2 сървъра.

[имейл защитен]: ~ $ sudo apt install git

Проверете версията на git, за да проверите инсталацията.

[имейл защитен]: ~ $ git --version

Ако не дава версията на git, тогава git не е инсталиран. Сега клонирайте приложението от github, gitlab или bitbucket. Тук ще клонираме кода на приложението от github.

[имейл защитен]: ~ $ git clone ttps: // github.com / contentful / the-example-app.nodejs

Стартиране на приложението GraphQL

Сега разполагаме с нашето приложение на graphQL на отдалечения сървър. Отидете в основната директория на приложението graphQL и инсталирайте необходимите npm пакети, за да стартирате приложението graphQL.

[имейл защитен]: ~ $ cd graphQL
[имейл защитен]: ~ $ sudo npm install

Тази команда ще анализира пакета.json в проекта и инсталирайте всички необходими npm пакети. След като инсталираме необходимите пакети, сега ще стартираме приложението graphQL.

[имейл защитен]: ~ $ node app.js

Стартиращо приложение като Daemon

Когато стартираме приложението, използвайки стандартния метод, както е описано по-горе, то се изпълнява на преден план и приложението спира, когато затворите прозореца на терминала. Можем да стартираме приложението като фонов процес, като добавим знака амперсанд (&) към командата.

[имейл защитен]: ~ $ node app.js &

Проблемът с този метод е, че когато модифицираме кода на приложението, приложените промени няма да се отразят автоматично. Ще трябва да рестартираме приложението всеки път, когато модифицираме кода, за да приложим промените. За да стартираме приложението във фонов режим и да приложим промените автоматично, ще използваме npm пакет с име pm2. Инсталирайте pm2 на сървъра.

[имейл защитен]: ~ $ sudo npm install -g pm2

Стартирайте приложението graphQL с помощта на pm2.

[имейл защитен]: ~ $ pm2 старт приложение.js --name “graphQL” --watch

Флагът „-name“ ще назове фоновия процес и ние можем да стартираме и спрем приложението, използвайки името. Флагът „-watch“ ще продължи да проверява кода на приложението, за да приложи незабавно промените. Можете да научите повече за pm2, като посетите следната връзка

https: // pm2.ключови показатели.io /

Заявка за API на GraphQL от браузъра

Можем да конфигурираме нашето приложение на graphQL, за да направим графични заявки от браузъра ръчно. За това трябва да създадем отделна HTTP крайна точка, на която ще монтираме API сървъра на GraphQL. И тази HTTP крайна точка ще се използва за ръчни заявки. Следва кодът за създаване на крайна точка на apQL сървъра на GraphQL.

const express = require ('express');
const graphqlHTTP = изискване ('express-graphql');
const buildSchema = изисква ('graphql');
const graphQLSchema = buildSchema ('
въведете заявка
съобщение: String
'
);
const func =
съобщение: () =>

върнете 'използвате API наqqqqqqqqqq';

;
const сървър = express ();
сървър.използвайте ('/ graphql', graphqlHTTP (
schema: graphQLSchema,
rootValue: func,
graphiql: вярно
));
сървър.слушайте (3000);

Сега, след като стартирахме сървъра, можем да осъществим достъп до api сървъра graphQL по следния маршрут.

http: // localhost: 3000 / graphql

Заявка за API на GraphQL с помощта на CLI

В предишния раздел направихме графични заявки от браузъра, използвайки graphiql. Сега ще направим графични заявки, използвайки интерфейса на командния ред в ubuntu. От командния ред, за да направим HTTP POST заявка, ще използваме модула curl.

[имейл защитен]: ~ $ curl -X POST -H "Content-Type: application / json" -d '"query": "message"' http: // localhost: 3000 / graphql

Програмиране на API за GraphQL

За да направим графична заявка на GraphQL програмно, ще използваме модула 'node-fetch' в node.js. Отваряне на възел.js в терминала.

[имейл защитен]: ~ $ възел

Сега направете HTTP POST заявката към сървъра, използвайки модула 'node-fetch'.

GraphQL е ефективен език за заявки и може да намали времето за реакция на заявка, направена към базата данни. Стандартните API извиквания за извличане на данни от базата данни включват много неизползвани данни в отговора и следователно времето за реакция се увеличава, което намалява ефективността. Заявката, направена към базите данни с помощта на GraphQL, връща само полезните данни и следователно намалява времето за реакция. В тази статия разгърнахме нашето приложение graphQL на екземпляр EC2.

Как да разработите игра на Linux
Преди десетилетие не много потребители на Linux биха прогнозирали, че любимата им операционна система един ден ще бъде популярна игрална платформа за ...
Пристанища с отворен код на търговски игрални машини
Безплатни разширения на играта с отворен код и междуплатформени игри могат да се използват за възпроизвеждане на стари, както и някои от доста скорошн...
Най-добрите игри за команден ред за Linux
Командният ред не е само най-големият ви съюзник при използване на Linux - той може да бъде и източник на забавление, защото можете да го използвате, ...