Инсталиране на необходимите пакети
Първата стъпка за внедряване на вашето 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
- Клонирайте кода на приложението от Github, Gitlab или Bitbucket
Копирайте приложението с помощта на командата 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.