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