NodeJS

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

Как развернуть приложение GraphQL с помощью Node.js на сервере EC2
GraphQL, также известный как Graph Query Language, созданный и поддерживаемый Facebook, - это язык запросов, используемый для API. Он построен с использованием языков программирования JavaScript, Scala, Java и Ruby. Его основная цель - запросить данные от сервера к клиенту.GraphQL агрегирует данные из разных источников. Агрегация - это процесс фильтрации данных на стороне сервера с последующей отправкой отфильтрованных данных клиенту. Без агрегации мы отправляем все данные клиенту, а затем данные фильтруются на стороне клиента. Это замедляет работу системы, и мы можем повысить эффективность API с помощью GraphQL. Здесь мы научимся развертывать простое приложение GraphQL с помощью узла.js на сервере EC2.

Установка необходимых пакетов

Первый шаг к развертыванию вашего приложения graphQL - подготовить ваш сервер, установив необходимые пакеты. Авторизуйтесь на сервере по SSH.

[электронная почта защищена]: ~ $ ssh ubuntu @ IPAdress -i KeyPair.pem

ПРИМЕЧАНИЕ: Убедитесь, что группа безопасности экземпляра настроена на разрешение подключения через порт 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 готов к развертыванию приложений graphQL в узле.js. Теперь переместим наш код в экземпляр EC2. Ниже перечислены два распространенных способа копирования кода на сервер, которые будут обсуждаться здесь.

Копировать приложение с помощью команды scp

Чтобы скопировать ваше приложение на сервер EC2 с помощью команды scp, прежде всего, удалите каталог 'node_modules' из вашего приложения graphQL. В этом каталоге есть все пакеты npm, необходимые для запуска приложения. Мы установим эти пакеты позже, прежде чем запускать приложение graphQL. Теперь сожмите каталог проекта в zip-файл. После создания zip-файла мы переместим zip-файл проекта на сервер. В Linux и Windows есть разные методы создания zip-файла.

Окна

В 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 @ IP-адрес: ~ /

Приведенная выше команда переместит 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.ru / contentful / the-example-app.nodejs

Запуск приложения GraphQL

Теперь у нас есть приложение graphQL на удаленном сервере. Перейдите в корневой каталог приложения graphQL и установите необходимые пакеты npm для запуска приложения graphQL.

[электронная почта защищена]: ~ $ cd graphQL
[электронная почта защищена]: ~ $ sudo npm install

Эта команда проанализирует пакет.json в проекте и установите все необходимые пакеты npm. После установки необходимых пакетов мы запустим приложение graphQL.

[электронная почта защищена]: приложение ~ $ node.js

Запуск приложения как демона

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

[электронная почта защищена]: приложение ~ $ node.js &

Проблема с этим методом заключается в том, что когда мы модифицируем код нашего приложения, примененные изменения не будут отражаться автоматически. Нам придется перезапускать приложение каждый раз, когда мы модифицируем код, чтобы применить изменения. Для запуска приложения в фоновом режиме и автоматического применения изменений мы будем использовать пакет npm с именем pm2. Установите pm2 на сервер.

[электронная почта защищена]: ~ $ sudo npm install -g pm2

Запустите приложение graphQL с помощью pm2.

[email protected]: ~ $ pm2 запустить приложение.js --name «graphQL» --watch

Флаг '-name' будет называть фоновый процесс, и мы можем запускать и останавливать приложение, используя имя. Флаг '-watch' продолжит проверку кода приложения, чтобы немедленно применить изменения. Вы можете узнать больше о pm2, перейдя по следующей ссылке

https: // pm2.Ключевые метрики.io /

Запрос GraphQL API из браузера

Мы можем настроить наше приложение graphQL для выполнения запросов graphQL из браузера вручную. Для этого нам нужно создать отдельную конечную точку HTTP, на которой мы будем монтировать сервер API-интерфейса graphQL. И эта конечная точка HTTP будет использоваться для выполнения запросов вручную. Ниже приведен код для создания конечной точки сервера api graphQL.

const express = require ('экспресс');
const graphqlHTTP = требуется ('экспресс-graphql');
const buildSchema = требуется ('graphql');
const graphQLSchema = buildSchema ('
type Query
сообщение: Строка
'
);
const func =
сообщение: () =>

верните 'вы используете api server graphql';

;
const server = express ();
сервер.используйте ('/ graphql', graphqlHTTP (
схема: graphQLSchema,
rootValue: func,
graphiql: правда
));
сервер.слушайте (3000);

Теперь, после запуска сервера, мы можем получить доступ к серверу api graphQL по следующему маршруту.

http: // локальный: 3000 / graphql

Запрос GraphQL API с помощью CLI

В предыдущем разделе мы выполняли запросы graphQL из браузера с помощью graphiql. Теперь мы собираемся делать запросы graphQL, используя интерфейс командной строки в ubuntu. Из командной строки, чтобы сделать HTTP-запрос POST, мы будем использовать модуль curl.

[электронная почта защищена]: ~ $ curl -X POST -H "Content-Type: application / json" -d '"query": "message"' http: // localhost: 3000 / graphql

Программный запрос GraphQL API

Чтобы программно сделать запрос graphQL, мы будем использовать модуль node-fetch в node.js. Открытый узел.js в терминале.

[электронная почта защищена]: ~ $ node

Теперь сделайте HTTP-запрос POST на сервер, используя модуль node-fetch.

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

Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...
Как изменить левую и правую кнопки мыши на ПК с Windows 10
Совершенно нормально, что все устройства компьютерной мыши эргономичны для правшей. Но есть мышиные устройства, специально разработанные для левшей ил...