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 готовий до розгортання додатків graphQL у вузлі.js. Тепер ми перемістимо наш код до екземпляра EC2. Два поширені способи копіювання коду на сервер перелічені нижче та будуть розглянуті тут.

Скопіюйте програму за допомогою команди scp

Для того, щоб скопіювати вашу програму на сервер EC2 за допомогою команди scp, перш за все, видаліть каталог 'node_modules' із вашої програмиQLQL. У цьому каталозі є всі пакунки 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 @ 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 start app.js --ім'я “graphQL” --watch

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

https: // pm2.кейметрика.io /

Запит API GraphQL з браузера

Ми можемо налаштувати наш додаток graphQL, щоб робити запити graphQL з браузера вручну. Для цього ми повинні створити окрему кінцеву точку HTTP, на яку ми зможемо встановити сервер API GraphQL. І ця кінцева точка HTTP буде використана для запитів вручну. Далі наведено код для створення кінцевої точки API-сервера graphQL.

const express = require ('express');
const graphqlHTTP = вимагати ('express-graphql');
const buildSchema = вимагати ('graphql');
const graphQLSchema = buildSchema ('
введіть запит
повідомлення: Рядок
'
);
const func =
повідомлення: () =>

повернути 'ви використовуєте сервер API API sqq';

;
сервер const = express ();
сервер.use ('/ graphql', graphqlHTTP (
schema: graphQLSchema,
rootValue: func,
graphiql: правда
));
сервер.слухати (3000);

Тепер, після запуску сервера, ми можемо отримати доступ до API-сервера graphQL за таким маршрутом.

http: // localhost: 3000 / graphql

Запит API GraphQL за допомогою CLI

У попередньому розділі ми робили графічні запити з браузера за допомогою graphiql. Тепер ми збираємося робити запити graphQL, використовуючи інтерфейс командного рядка в ubuntu. З командного рядка, щоб зробити запит HTTP POST, ми будемо використовувати модуль curl.

[захищено електронною поштою]: ~ $ curl -X POST -H "Тип вмісту: application / json" -d '"запит": "message"' http: // localhost: 3000 / graphql

Запрошення API API GraphQL програмно

Для того, щоб програмно робити графічний запит, ми використовуватимемо модуль 'node-fetch' у node.js. Відкритий вузол.js в терміналі.

[захищено електронною поштою]: ~ $ вузол

Тепер зробіть запит HTTP POST на сервер за допомогою модуля 'node-fetch'.

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

Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...
Unity3D Tutorial
Introduction to Unity 3D Unity 3D is a powerful game development engine. It is cross platform that is it allows you to create games for mobile, web, d...