Как запустить несколько приложений на одном экземпляре EC2

У меня есть несколько небольших производственных площадок и куча веселых хобби/экспериментальных приложений и тому подобное. Я бы хотел запустить все из них на одном экземпляре EC2.

Могу ли я установить node.js, npm, express и couchdb один раз, а затем запустить каждое приложение на другом порту и настроить параметры DNS в моем доменном реестре, чтобы указать на нужное место?

Обновление: Спасибо Майку! Для тех, кто ищет несколько IP-адресов в EC2: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html

Ответ 1

Существует несколько способов сделать это.

Различные порты

Вы можете запускать каждый процесс Node.js на другом порту и просто открывать порты в мире. Однако вашим URL-адресам потребуется порт в конце имени хоста для каждого проекта. yoururl.com:8080/ будет технически работать, но, вероятно, не то, что вы ищете.

Несколько IP-адресов

Вы можете использовать несколько IP-адресов на одном экземпляре EC2, однако они поставляются с дополнительной стоимостью около 3,65 долл. США в месяц каждый. Так что если у вас есть 10 разных доменов, которые вы хотите разместить на одном экземпляре, то это более 30 долларов в месяц в качестве платы за хостинг.

С другой стороны, любой домен с использованием SSL нуждается в собственном IP-адресе.

Кроме того, существуют ограничения на количество IP-адресов, которые вы можете назначить экземпляру, и чем меньше экземпляр, тем меньше IP-адресов вы получить.

Количество IP-адресов, которые вы можете назначить, зависит от типа экземпляра. Небольшие экземпляры могут вмещать до 8 IP-адресов (через два эластичных сетевых интерфейса), в то время как High-Memory Quadruple Extra Large и Cluster Computer Восемь экземпляров Extra Large могут быть назначены до 240 IP-адресов (через 8 эластичных сетевых интерфейсов). Для получения дополнительной информации об ограничениях IP-адреса и эластичного сетевого интерфейса перейдите в раздел "Семьи и типы экземпляров" в Руководстве пользователя Amazon EC2.

Экспресс-хосты

Express имеет функциональность виртуального хоста. Вы можете запускать несколько доменов под одним сервером Node.js/Express и настраивать маршруты на основе имени домена. vhost под Express позволяет это.

Обратный прокси

Вы можете настроить Nginx перед несколькими серверами приложений. Это имеет большую гибкость. У вас может быть один Node.js процесс для каждого домена, который позволяет вам выполнять обновления и перезапускаться в одном домене за раз. Он также позволяет размещать серверы приложений, такие как Apache/PHP, под тем же экземпляром EC2, что и ваш процесс Node.js.

Когда Nginx действует как обратный прокси-сервер, вы также можете размещать разные серверы приложений в одном домене, но обслуживать разные пути.

Например, Node.js может служить основным корневым путем для домена, но вы можете настроить путь /blog/ для перехода к установке Apache/PHP/Wordpress в том же экземпляре EC2.