Часть I. Ваше первое развертывание AWS
Развертывание. Пугающий, разочаровывающий, в конечном счете необходимый. Для начинающего программиста развертывание может оказаться запутанной и почти непреодолимой задачей без помощи таких сервисов, как Heroku или Firebase. Но что произойдет, если вы захотите выполнить развертывание без этих служб?
Когда я впервые попытался развернуть сервер на Amazon Web Services, я едва знал, с чего начать. Было много документации по конкретным проблемам, но не было четкого пути для тех, кто просто опускает пальцы ног в воду. Я обнаружил, что мне приходится обращаться к коллекции документов, руководств и справочных статей, чтобы начать. Если вы находитесь в этой лодке, позвольте мне рассказать вам о том, что я узнал.
Мы собираемся получить простой сервер Express, работающий на экземпляре AWS EC2.
Шаг 1. Настройка экземпляра EC2
Прежде всего, нам нужен экземпляр EC2 для запуска. Получив учетную запись AWS, войдите в консоль и введите EC2 в поиске, чтобы найти сервис.
На панели инструментов EC2 вы увидите сводку ваших сервисов EC2 и большую удобную кнопку с надписью "Запустить экземпляр". Нажмите на это.
Amazon предлагает широкий выбор конфигураций ОС и программного обеспечения для вашего экземпляра. В этом руководстве мы возьмем образ Ubuntu и будем использовать значения по умолчанию уровня бесплатного пользования. Вы можете получить предупреждение о группе безопасности экземпляра, но не беспокойтесь. Мы вернемся к этому. Давай, запускай.
Перед запуском экземпляра вам будет предложено создать пару ключей. Назовите свою пару myTestServer и загрузите файл .pem.
Запуск займет минуту. Вернитесь на панель инструментов EC2, нажмите «Запущенные экземпляры» и проверьте наличие своего экземпляра, чтобы завершить инициализацию.
Шаг 2. Подключение к вашему экземпляру
Когда ваш экземпляр запущен, щелкните правой кнопкой мыши и выберите «Подключиться», чтобы получить информацию о том, как SSH подключиться к вашему экземпляру.
Откройте терминал и войдите в каталог, в котором хранится ваш файл .pem. Оттуда вам нужно запустить скрипт chmod 400 myTestServer.pem
, а затем пример скрипта SSH на вашем AWS.
Бум! Готово. Теперь мы можем настроить.
Шаг 3. Настройка экземпляра
Теперь, когда мы получили доступ к нашему экземпляру, мы можем настроить его для запуска простого сервера Express.
Первое, с чем нам нужно разобраться, это то, что в нашей системе сейчас нет Node. У AWS есть документы о том, как это сделать, но вот заметки:
- Установить менеджер версий узла:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
- Активировать нвм:
. ~/.nvm/nvm.sh
- Установить версию узла:
nvm install 4.4.5
Успех!
Теперь давайте настроим наш экспресс-сервер. Создайте каталог с именем testServer, перейдите в него и запустите npm init -y
, чтобы создать package.json. Требовать и установить экспресс в свой пакет с npm install save express
. Создайте файл сервера с , и напишите следующее:
var express = require('express'); var app = express(); app.get('/', (req, res) => { res.send('Hello World! This is serving from AWS!') }); app.listen(3000, () => { console.log('Listening on port 3000'); });
Запустите node server.js
, и у вас есть сервер, работающий на вашем экземпляре AWS!
Шаг 4: Протоколы безопасности
Здорово. Чудесно. Но как мы узнаем, что наш сервер работает?
Вернувшись на панель инструментов AWS, вы можете найти общедоступный IP-адрес для своего экземпляра.
Однако, если вы просто вставите это в свой браузер прямо сейчас, вы, вероятно, получите сообщение об ошибке. Помните те протоколы безопасности, которые использовались ранее? Пришло время их настроить.
Найдите группу безопасности вашего экземпляра (она должна быть launch-wizard-3) и нажмите на нее. Отсюда мы можем редактировать протоколы безопасности для нашего экземпляра.
Если мы проверим наши входящие правила, у нас будет только один тип: SSH. Наш экземпляр сейчас не может принимать HTTP-трафик. Чтобы исправить это, отредактируйте правила для входящего трафика.
Для простоты добавим новое правило «Весь трафик» и выберем «Везде» в качестве допустимых источников. Сохраните свои правила, а теперь попробуйте посетить свой общедоступный IP-адрес в браузере на порту 3000
.
Хочешь взглянуть на это! Вы только что развернули сервер!
В другом посте мы поговорим о развертывании на AWS с помощью Docker, что делает развертывание и обновления еще проще.
Дополнительный кредит: экран
«Но, Марина, — скажете вы, — мой сервер отключается, когда я закрываю свой терминал! Что в этом хорошего?»
Хорошие новости! В вашем экземпляре AWS есть небольшая приятная программа под названием screen. Экран позволяет отсоединить экземпляр терминала от вашей оболочки, поэтому даже если ваша оболочка терминала закроется, она продолжит работу.
SSH в свой экземпляр AWS и запустите screen
. Это открывает экран для вашего терминала, который работает так же, как ваша обычная оболочка. Вы можете ввести ctrl-A
, а затем ?
, чтобы увидеть новые экранные команды, которые вы можете использовать, но в остальном это обычный терминал. cd в каталог testServer, запустите node server.js
, затем введите ctrl-A
, затем d
, чтобы закрыть экран. screen -ls
покажет вам, что экран отсоединен, но все еще работает. Теперь вы можете безопасно выйти из терминала, не нарушая работы сервера.