Часть 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 есть документы о том, как это сделать, но вот заметки:

  1. Установить менеджер версий узла:curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
  2. Активировать нвм:. ~/.nvm/nvm.sh
  3. Установить версию узла: 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 покажет вам, что экран отсоединен, но все еще работает. Теперь вы можете безопасно выйти из терминала, не нарушая работы сервера.