Данная статья является квинтесенцией переводов нескольких статей с добавлениями и домыслами. Ссылки на источники указаны в конце.
Введение
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 можно считать законченной.