Встановлення необхідних пакетів
Першим кроком до розгортання програми 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
- Клонуйте код програми з Github, Gitlab або Bitbucket
Скопіюйте програму за допомогою команди 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.