Данная статья является квинтесенцией переводов нескольких статей с добавлениями и домыслами. Ссылки на источники указаны в конце.

Введение

Amazon Elastic Compute Cloud (Amazon EC2) — веб-сервис, предоставляющий широкие возможности по созданию и управлению вычислительными мощностями в облаке. EC2 позволяет очень легко мастшабировать и конфигурировать выделенный вам истанс под ваши нужды с минимальными затратами времени и нервов.

Сервис предоставляет несколько типов инстансов и фич окружения, которые можно комбинировать, как вам захочется. Кратко об инстансах:

  • Micro Instances — мелнький скромненький инстанс для in development приложений, расчитан на минимальную нагрузку
  • Standard Instances — включают в себя Small, Large и Extra инстансы, подойдут для хостинга большинства приложений.
  • High-Memory Instances — инстансы с высокой пропускной способностью для “тяжелых” приложений
  • High-CPU Instances — считать больше, считать быстрее
  • Cluster Compute Instances & Cluster GPU Instances — подойдут для поддержки собственной звезды смерти

Подробней о типах инстансов можно почитать собственно на Амазоне

Отмечу, что в виду укоренившихся в сознании привычек, все действия будут проделаны с помощью консольных утилит, предоставляемых Амазоном. Но существует и вариант работы через gui.

Начнем

Для взаимодействия с EC2 посредством ssh вам необходимо скачать утилиты Амазона для командной строки, а также получить X.509 сертификат. Сертификаты раздают по адресу Account -> Security Credentials. При создании вам выдаются два файла: личный ключ и сам сертификат. К этим файлам стоит относиться крайне бережно — они очень важны для будущей работы.

Далее нам необходимо скачать утилиту Amazon EC2 API. Как говорилось раннее — она понадобится нам для работы через ssh. Скачиваем, распаковываем, для удобства переносим ключ и сертификат в эту же директорию. Также очень удобно будет перенести все содержимое в ~/.ec2 директорию и работать уже с ней.

Небольшой листинг поможет разобраться в том, что имеловь в виду в предыдущем абзаце.


mkdir ~/.ec2
cd ~/Current-tool-path
mv *.pem ~/.ec2
cd ~/Current-tool-path/ec2-api-tools-version/
mv * ~/.ec2



sudo nano ~/.bash_profile

Добавьте следущее в ваш bash профиль и не забудьте заменить SECRET-KEY и SECRET-CERT на актуальные имена файлов.


export EC2_HOME=~/.ec2
export PATH=$PATH:$EC2_HOME/bin
export EC2_PRIVATE_KEY=~/.ec2/pk-SECRET-KEY.pem
export EC2_CERT=~/.ec2/cert-SECRET-CERT.pem
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home/

Для того чтобы система подхватила изменения, use the source, Luke:


source ~/.bash_profile

Теперь мы можем приступить к работе с EC2 через командную строку.

AMIs, доступ, инстансы

Для начала, давайте разберемся с понятием AMI, или Amazon Machine Image — образ системы для установки на ваш EC2 инстанс. Список уже сконфигурированных образов очень большой и постоянно расширяется. Кроме того, вы можете сконфигурировать и добавить уже к существующему списку свой образ. Стоит уделить особое внимание конфигурированию своих образов, чтобы создавая каждый следущий истанс, уделять этому меньше времени и как можно быстрее преступать к работе.

Для работы через ссш нам потребуется сгенерировать еще один ключ. Он нужен для полноценной работы с набором утилит, полученном ранее. Для генерации ключа воспользуемся утилитой ec2-add-keypair


cd ~/.ec2
bin/ec2-add-keypair pstam-keypair # команда сгенерирует ключ, добавим этот ключ в файл вручную
nano ~/.ec2/id_rsa-pstam-keypair
вставляем скнерированный ключ и сохраняем
sudo chmod 600 id_rsa-pstam-keypair

Если у вас уже есть pem ключ, вы можете использовать и его.


bin/ec2-add-keypair ~/.ssh/your-keypair > pstam-keypair

Теперь мы можем просматривать списки образов, доступных для установки на наш будущий инстанс.


cd ~/.ec2
bin/ec2-describe-images -a

Используя опцию -а вы получите список всех доступных образов, их очень-очень много. Очень. Для наших целей нам подойдет образ ami-ccf405a5 с предустановленной ubuntu.


bin/ec2-run-instances ami-ccf405a5 -k pstam-keypair

Выбираем этот инстанс и добавляем его себе. Дожидаемся пока пройдет процесс инициализации, и вот наступает момент, когда мы получаем готовый для работы инстанс. Теперь мы можем получить его внутренний адрес, а также его урл с помощью команды ec2din или:


ec2-describe-instances

Если попытаться подключиться через ssh сразу же, то ничего не получится — 22 порт блочится фаерволом но это дело поправимо:


ec2-authorize default -p 22 # ssh
ec2-authorize default -p 80 # http

Замечание: default — группа доступа пользователей, о управлении группами можно почитать отдельно по ссылке. Cледущим шагом мы получим root-access к нашему инстансу через ssh. Запустите команду с измененным адресом сервера, полученным ранее:


ssh -i id_rsa-pstam-keypair [email protected]

И вот мы на сервере, осталось разобраться с LAMP.

LAMP

Прежде всего обновим базу установленных пакетов


sudo apt-get update

LAMP установим посредством утилиты tasksel, которая предустановлена в нашей конфигурации. Хотя конечно никто не запрещает устанавливать все по отдельности.


sudo tasksel

Выбираем LAMP, смотрим за процессом установки, устанавливаем root-паролья для MySQL.

После установки при открытии в браузере адреса вашего сервера (ec2-XXX-XXX-XXX-XXX.z-2.compute-1.amazonaws.com ) должна отображаться дефолтная страница апача. Адрес совершенно не красивый, давайте воспользуем сервисом Elastic IP для получения статичного адреса. Получим список доступных нам адресов:


bin/ec2-allocate-address
ADDRESS 75.101.155.119

И ассоциируем наш инстанс с этим адресом (напомню, идентификатор инстанса можно получить с помощью команды ec2-din):

ec2-associate-address -i i-b2e019da 75.101.157.145

Теперь нашь инстанс доступен по адресу 75.101.157.145

На этом установку LAMP можно считать законченной.

Ссылки на материалы: