Автор оригинала: Josh Simpson.
Вступление
После того, как вы написали веб-приложение, есть десятки предложений, чтобы получить ваше приложение онлайн и пригодным для использования другими людьми. Одно известное предложение является частью платформы Amazon Web Services (AWS) – Упругое вычислительное облако (EC2).
EC2 является основной частью AWS, и множество других услуг AWS построен на нее – поэтому приятно получить понимание того, что есть EC2 и как развернуть его.
В этом руководстве мы собираемся создать приложение Node.js с Docker, Start и настроить экземпляр EC2 и развернуть наше приложение к нему. В конце этого учебника у вас будет приложение узла работает на AWS, и лучшее понимание того, как взаимодействовать с сервисом CORE AWS.
Предпосылки
AWS аккаунт
Amazon Web Services (AWS) – это коллекция инструментов для строительства приложений в облаке. Поскольку EC2 – это служба AWS, нам нужно будет настроить учетную запись AWS.
AWS имеет свободный уровень для многих потрясающих вещей, и EC2 не является исключением – вы можете использовать 750 часов (31 день) EC2 в месяц в свободном уровне на целый год.
Докер
Докер Позволяет нам свернуть наши приложения на небольшие, легко развертываемые единицы, которые можно запускать где угодно где установлен Docker. Это больше не значит, что это работает на моей машине!
Эта статья предположила основное знакомство с Docker, и не будет на нем не будет ни в некоторой глубине – однако, если вы хотите сделать более глубокое погружение, попробуйте развертывать приложение Node.js в капельку Doceper.
Узел приложения
Давайте сделаем действительно простое приложение узла, которое отвечает на запрос. Для этого мы откроем терминал и запустим:
$ mkdir node-ec2 $ cd node-ec2 $ npm init
Это создаст новую папку, перемещающую в эту папку, а затем инициализирующую новое приложение узла.
Давайте придерживаться NPM по умолчанию на данный момент – эта статья предполагает, что вы оставили точку входа, как index.js
Отказ Это будет генерировать наши Package.json
Файл, который по существу является файлом конфигурации для нашего приложения.
Однажды Package.json
Файл создан, откройте его и добавьте следующую строку в начало Сценарии
раздел:
"start": "node index.js",
Делая это, вместо бега Узел index.js
мы будем использовать NPM начать
, который будет запускать все в нашем скрипте. В этом конкретном случае он просто работает Узел index.js
Однако на самом деле это может быть намного больше, чем это. Например, если мы можем добавить флаги в команду без необходимости вводить ее каждый раз, или мы могли бы установить некоторые переменные среды, такие как Node_env = Производственный узел index.js
Отказ
Чтобы обслуживать наши запросы, мы будем использовать Экспресс Framework – это минималистично, и легко начать с:
$ npm install express --save
Наше Package.json
теперь должен выглядеть что-то вроде этого:
{ "name": "app", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index.js" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.17.1" } }
Дождитесь установки, а затем мы собираемся открыть наш предпочтительный редактор кода, чтобы создать еще один новый файл в том же месте, называемом index.js
Отказ
Файл будет настроить Express и определить обработчик запроса:
const express = require('express'); const app = express(); const port = 3000; app.get('/status', (req, res) => res.send({status: "I'm alive!"})); app.listen(port, () => console.log(`Example app listening on port ${port}!`));
Это приложение начнется на порту 3000
и будет служить конечной точкой в /Статус
Отказ Мы можем проверить это работает, работая:
$ npm start Example app listening on port 3000!
Направляясь в http://localhost: 3000/Состояние
– Мы должны получить ответ на {Статус: «Я жив!»}
Отказ Как только это успешно, обязательно остановите сервер Ctrl + C Отказ
С нашим простым приложением узла готово, давайте перевернем его в документ докера, который мы развернумся в EC2.
Применение приложения узла
Создайте новый файл в том же каталоге, что и приложение вашего узла, называемое Dockerfile
:
FROM node:13-alpine WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . EXPOSE 3000 CMD [ "node", "index.js" ]
Это базовый DockerFile, который можно использовать для большинства простых приложений узла. Далее давайте построим изображение Docker, а затем запустите его, чтобы убедиться, что он работает правильно:
$ docker build . -t ec2-app $ docker run -p 3000:3000 ec2-app
Если вы перейдите к http://localhost: 3000/Состояние
Опять же, вы должны увидеть тот же ответ статуса из ранее. Выйдите из процесса с Ctrl + C очередной раз.
Наконец, давайте подтолкнум наш образ докера на Докер Хаб :
$ docker login # Use your Docker Hub credentials here $ docker tag ec2-app/ec2-app $ docker push /ec2-app
Настройка EC2.
С нашей приложением «докерена» нам необходимо настроить экземпляр EC2 для его работы.
Отправляйтесь на AWS и войдите в систему.
Нажмите на «Услуги» Выпадающее меню в верхней части страницы и найдите ‘EC2’ Отказ AWS в настоящее время экспериментирует с их интерфейсом, поэтому вы должны увидеть страницу, которая выглядит что-то вроде ниже, но центр страницы может выглядеть немного по-другому.
Нажмите на «Экземпляры» Ссылка слева.
На следующем представлении нажмите «Начальный экземпляр» кнопка. Вы увидите страницу, которая выглядит так:
Амис
Это где мы выбираем Amazon Machine Image – или AMI коротко. AMI – это сервер «из коробки» и может пойти с несколькими конфигурациями.
Например, мы могли бы выбрать один из Быстрый запуск Amis которые имеют Amazon Linux 2 На них или если вы прокрутите вниз, на них есть экземпляры с Ubuntu, и т. Д.
Каждый AMI – это замороженное изображение машины с операционной системой и, потенциально некоторое дополнительное программное обеспечение.
Чтобы сделать все возможное, мы можем использовать это для создания экземпляра EC2 с Docker, уже настроенным для нас!
Для этого нам нужно выбрать «AWS Marketplace» Слева, а затем в поле поиска мы хотим ввести «ECS» Отказ Мы должны получить несколько результатов, но мы хотим ECS оптимизировала Amazon Linux 2 ‘ изображение.
Это изображение поставляется с Docker и оптимизировано для беговых контейнеров. Хит «Выбрать» на выбранном изображении, и мы продолжим на следующую страницу:
Типы экземпляров
На следующем представлении мы выбираем, какой тип экземпляра мы хотим. Как правило, это диктует ресурсы, доступные для сервера, на котором мы запускаемся, с расходами на масштабирование для более эффективных машин.
T2.Micro
Тип экземпляра имеет право на свободный уровень, поэтому рекомендуется использовать это:
Выберите соответствующий флажок, а затем нажмите «Обзор и запустить» в правом нижнем углу. Нажмите «Запуск» В том же месте на следующей странице, и вы получите всплывающее окно, чтобы выбрать или создать ключевую пару.
Выберите первый выпадающий и выберите «Создать новую ключевую пару» Отказ Под «Ключевое имя пара» Введите то, что вы хотите позвонить в вашу ключевую пару.
Обязательно «Скачать ключевую пару» С правой стороны – это то, что мы будем использовать для доступа к нашему экземпляру EC2.
Выбрав «Начальный экземпляр» Опять же, ваш экземпляр EC2 должен начать работу:
Нажмите на выделенную ссылку, которая должна быть взята на страницу детализации экземпляра.
Группы безопасности
Прежде чем мы попробуем запустить наше приложение, нам нужно убедиться, что мы сможем получить доступ к приложению.
Большинство ресурсов AWS работают под «Группы безопасности» – Эти группы диктуют, как могут быть доступны ресурсы, на каком порту, и из которых IP-адреса.
Нажмите Группу безопасности, выделенные здесь:
Отсюда вы сможете увидеть подробную информацию о группе безопасности, включая входящие и исходящие правила на различных вкладках. Под въездной вкладкой вы надеетесь увидеть это:
Что это значит это то, что трафик, который приходит через порт 22
Используя протокол TCP, допускается из любого места ( 0.0.0.0/0
Значение в любом месте ). Нам нужно добавить еще одно правило, чтобы позволить кому-либо получить доступ к нашему приложению в порту 3000
Отказ
В верхней части страницы нажмите «Действия» а затем нажмите «Изменить входящие правила» Отказ В диалоговом окне, который открывается, нажмите «Добавить правило» Отказ
Установите диапазон портов правила на 3000
И в соответствии с источником щелкните раскрывающуюся и выберите «Где-нибудь» Отказ Остальное должно быть автоматически заполнено.
В конечном итоге, вы должны в конечном итоге с чем-то вроде:
Подключение к вашему экземпляру EC2
Вернитесь к «Экземпляры» страница (щелкните ссылку слева) и выберите экземпляр, который вы создали ранее. Адрес для вашего экземпляра EC2 находится над ссылкой на группы безопасности под «Публичные DNS» поле.
Вернитесь к терминалу и перейдите к папке, в которой находится ключевая пара, которую вы загрузили ранее ранее. Он будет назван как все, что вы ввели на имя ключ, с помощью .pem
как его расширение.
Изменим разрешения ключей, а затем SSH в экземпляр EC2:
$ chmod 400$ ssh -i [email protected]
Отсюда, нам просто нужно запустить наше приложение через Docker:
$ docker run -p 3000:3000/ec2-app
Вы сможете достичь экземпляра, используя тот же адрес, который вы использовали для SSH в экземпляре. Просто навигайтесь в своем браузере:
:3000/status
Ваше приложение должно вернуть конечную точку статуса, которые мы видели ранее. Поздравляем, вы просто запустите свое первое приложение на EC2!
Что дальше?
Запустите свое приложение без головы
Быстрая победа, однако, это управлять приложением «без головы». На данный момент ваше приложение в данный момент работает в вашей сессии Shell – и как только вы закроете этот сеанс, приложение завершится!
Чтобы начать приложение таким образом, чтобы он продолжал запускать на заднем плане, запустите приложение с дополнительным -d
флаг:
$ docker run -d -p 3000:3000/ec2-app
Безопасность
Возможно, вы захотите вернуться и затянуть безопасность на экземпляре/эксперименте с различными конфигурациями – таким как настроить его так, чтобы только Мы Может получить доступ к порту SSH, например.
Изменить «Источник» поле на первом правиле до «Мой IP» – AWS автоматически выясняется, где вы обращаетесь к нему.
Примечание: Если вы проходите через этот учебник на ходу, или вернитесь к нему позже, ваш компьютер может иметь другой IP, чем когда вы изначально устанавливаете «Мой IP» Отказ Если вы столкнетесь с любыми трудностями позже, убедитесь, что вернитесь здесь и выберите «Мой IP» очередной раз!
Другие Амис
Существуют сотни разных AMIS, много из разных сообществ, при этом приложения уже предварительно установлены – стоит взглянуть, чтобы увидеть, есть ли простой способ настроить то, с чем вы хотели работать!
Добавление домена
Теперь, когда у вас есть приложение, работающее на сервере, вы можете настроить доменное имя и точку, что при приложении.
Заключение
EC2 действительно является основой многих услуг AWS – например, RDS (AWS »Служба базы данных) действительно просто оптимизирована экземпляры EC2 с хорошей приборной панелью.
Понимание этого основного продукта в AWS ‘Arsenal связано с открытыми дверями к новым способам реализации идей.
В этом руководстве мы создали простое приложение Node.js с помощью Express, установив его, установив EC2 для развертывания и, наконец, – развернул его к экземпляру EC2.