Штатный шаман
0,0
рейтинг
5 января 2012 в 01:41

Администрирование → Бесплатный облачный PHP-MySQL хостинг для небольшого сайта на основе Amazon AWS из песочницы tutorial

Данная инструкция не претендует на абсолютную точность, какую-либо новизну и предназначена для делающих самые первые шаги. Поэтому не судите особо строго.

Боевая задача.


Предположим нам хочется захостить небольшой проектик где-нибудь в надежном и не особо тормозящем месте. А поскольку сайт небольшой, то не будем заморачиваться и захотим от хостинга что-нибудь самое простое. Для наших целей вполне хватит PHP, MySQL и доступа по FTP.
Для решения этой задачи идеально подходит Веб сервис от Амазона в котором удивительным образом сочетается способность выдерживать большие нагрузки с бесплатным пакетом ресурсов на первый год после регистрации. В бесплатный пакет входит много чего, но в данный момент нас будут интересовать:
  • Виртуальный сервер в формате micro на основе Linux с доступом по SSH.
  • 30Гб места в Elastic Block Storage плюс 1Гб под бэкапы.
  • 15 Гб трафика в месяц.
  • Выделенный внешний IP адрес.

Причем все это при желании можно зарегистрировать и подготовить к работе за полчаса, но понадобится кредитная карта, которую примет Amazon (и снимет 2 доллара) и сотовый телефон под рукой (домашний не подойдет).


Шаг 1: Регистрируемся на Amazon.


Процедура регистрации обычно не вызывает вопросов. Единственный совет — вводить реальные или близкие к реальным данные. Семенов Горбунковых с улицы Горького давно не регистрируют, а если неправильно указать индекс города, то система даст скрытый отлуп на этапе проверки кода по телефону.
Перед тем как вбивать данные кредитной карты, нужно убедиться что по ней доступно для снятия минимум 85р для Mastercard и 75р для Visa. В зависимости от региона и типа кредитной карты в конце процесса регистрации нас могут попросить подтвердить свой сотовый телефон. Тут правил 3 — вписывать номер нужно без восьмерки и кода страны (10 цифр), не забывать правильно выбирать страну и начинать вводить код с клавиатуры только после того как синтезированная телефонная барышня перестанет говорить и затаится в ожидании. Если подтвердить не попросят, значит Амазону очень понравилась ваша кредитка и у них еще еще не было проблем с пользователями из вашего диапазона адресов. Но поскольку нас больше всего интересует сервис EC2 (для которого верификация обязательна), то подтверждать 4 цифры по телефону придется в любом случае. После регистрации с карты снимут 1 доллар (и потом его не вернут) и сразу предоставят доступ к сервису хранения файлов S3 и к шикарной консоли управления
image
К слову сказать, с самого начала все картинки из этого сообщения лежали именно на сервисе S3 и 5Гб места на нем тоже входят в бесплатный годовой пакет (но бесплатный лимит кончился меньше чем за сутки). На S3 можно создать корзину (Create Bucket), включить галку Enabled на вкладке Website и легко организовать хранилище файлов. Например, если назвать корзину словом test86 и положить в нее файл tеst85.7z, то из браузера он будет виден по адресам test86.s3.amazonaws.com/tеst85.7z и s3.amazonaws.com/test86/tеst85.7z. Обратите внимание, что без изменения дополнительных опций при загрузке, файлы сможет увидеть только владелец этой корзины. Чтобы открыть доступ к просмотру одного или нескольких файлов нужно выделить их и выбрать в меню Actions/Make Public. Кроме S3 у Амазона есть еще масса интересных сервисов, но речь сегодня пойдет только о EC2.

Шаг 2: Подготовка к созданию EC2 сервера.


Прямо со страницы управления S3 можно щелкнуть по верхней закладке EC2 и согласиться на добавление этого сервиса к вашему аккаунту. Если на этапе проверки кредитки не перекинуло в процедуру проверки телефонного номера, то перекинет отсюда и нужно будет подтвердить. После подтверждения откроется примерно такая картина
image
а с карты спишется еще один доллар.

Шаг 3: Добавление пользовательской группы.


Не теряя времени даром, щелкаем на ссылку Security Groups слева. Создаваемую по умолчанию группу лучше не трогать, но она нас никак не устраивает с точки зрения прав доступа (все порты любые действия). Поэтому создадим свою группу с более ограниченными правами
image

и назовем ее, например, web.
image

После создания добавим несколько правил в закладке Inbound
image

По аналогии добавим для общего доступа (Source: 0.0.0.0/0), к портам 20-21, TCP порты 1024-1048, HTTP и HTTPS. Разрешать доступ по SSH с любого адреса я бы поостерегся, поэтому лучше вписать в строку Source: или свой статический IP или подсеть своего провайдера (что-нибудь типа 211.207.171.0/24). В результате должно получится что-то похожее на
image
Щелкаем на Apply Rule Changes и переходим к следующему этапу.

Шаг 4: Создание SSH ключей.


Ключи нужны для доступа на сервер по SSH и они могут быть созданы и в процессе развертывания образа выбранной ОС, но в IE и Chrome наблюдаются периодические глюки с отдачей файла ключей на скачивание. Поэтому лучше сделать это заранее и если заглючит, то повторить.
Для генерации ключей выбираем Key Pairs в меню и давим пару кнопок.
image
Сервер немного подумает и отдаст нам ключевой .pem файл, который нужно бережно спрятать в надежном месте и никому не показывать.

Шаг 5: Развертывание образа Операционной Системы.


Итак, у нас есть ключ и дополнительная пользовательская группа. Теперь можно смело нажимать Launch Instance из меню EC2 Dashboard.
image

Согласимся на Classic Wizard.
image

Наш выбор это 32-x или 64-х битный Amazon Linux AMI.
image

Оставляем все установки по умолчанию.
image

Включаем защиту от удаления.
image

Теги вбивать не обязательно.
image

Будем использовать уже сгенерированные ключи.
image

В конфигурации фаервола оставляем только Security Group индекс-web.
image

Проверяем установки и запускаем.
image

После запуска в списке Instances появится наш микро-сервер.

Шаг 6: Регистрируем IP адрес для сервера.


В меню Elastic IPs сначала резервируем себе IP адрес.
image

И тут же присваиваем его нашему запущенному серверу.
image

Обратите внимание что резервирование незакрепленного за работающим сервером IP адреса не входит в бесплатный пакет. За это придется платить по центу в час. Как только IP присваивается запущенному северу, он тут же становится бесплатным.

В нашем примере Амазон выдал серверу адрес 107.21.246.159 и в дальнейшем мы его будем часто использовать, но в вашем случае во всех действиях и командах его нужно будет заменять на адрес, который выдали лично вам.

Шаг 7: Подключаемся к серверу по SSH.


Для этой цели можно использовать массу разнообразных программ, но вся дальнейшая инструкция написана для виндового и бесплатного PuTTY (прямая ссылка на загрузку).
Из архива нам в первую очередь понадобится puttygen.exe. Запускаем, выбираем Conversions/Import key.
image

и пересохраняем приватный кей как SSH2 RSA .ppk файл. На этом этапе не помешает как следует запаролить ключ.
image

После этого запускаем putty.exe, вбиваем наш IP в поле Host Name.
image

в разделе SSH-Auth указываем путь к .ppk ключу.
image

и нажимаем кнопку Open. В окошке терминала не должно быть никаких сообщений об ошибках, а в предложение:
login as:

нужно ввести ec2-user.
image
Теперь будем настраивать по SSH.
По ходу настройки иногда придется нажимать кнопку y чтобы соглашаться с предложениями установить все вместе с зависимостями. После ввода каждой команды нужно дождаться окончания работы и только потом вводить следующую.

Шаг 8: Обновление и подготовка к настройке сервера.


Сразу после входа хорошо бы обновиться. Для этого говорим:
sudo yum -y update

В системе нам не помешает Миднайт Командер (там более привычный для мышевозов редактор):
sudo yum install mc

Создадим пользовательскую группу virtwww:
sudo groupadd virtwww

Добавим пользователей:
sudo useradd www -g virtwww -d /var/www

sudo useradd webserver -g virtwww

и зададим пароли посложнее:
sudo passwd www

sudo passwd webserver

На всякий случай еще раз установим права на каталог:
sudo chown www:virtwww /var/www

sudo chmod 0750 /var/www

Теперь наш сервер полностью готов к установке сервисов.

Шаг 9: Установка MySQL.


Установим MySQL:
sudo yum install mysql-server mysql

Добавим его в автозапуск:
sudo /sbin/chkconfig --levels 235 mysqld on

и запустим:
sudo service mysqld start


После этого зададим пароль пользователю root:
mysql -u root

USE mysql

не забудьте вписать что-то свое вместо s10ZniYpar00L
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('s10ZniYpar00L');

Запретим подключение к базе без пароля:
DELETE FROM user WHERE password = '';

DELETE FROM user WHERE user.user= '';

и обновим привилегии:
FLUSH PRIVILEGES;

Удалим тестовую базу:
DROP DATABASE test;

и выйдем из консоли управления MySQL сервером:
\q


Шаг 10: Настройка FTP.


Установим vSFTPd:
sudo yum install vsftpd

Добавляем его в автозапуск и пробуем запустить:
sudo /sbin/chkconfig --levels 235 vsftpd on

sudo service vsftpd start

Редактируем конфигурацию:
sudo mcedit  /etc/vsftpd/vsftpd.conf

Изменяем значения параметров:
anonymous_enable=NO
local_enable=YES
write_enable=YES

Добавляем в конец файла:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=107.21.246.159

Не забудьте вписать тут свой IP
Кнопкой F2 сохраняем изменения, выходим из редактора через F10 и перезапускаем FTP сервер:
sudo service vsftpd restart

Теперь можно пробовать подключиться к нашему серверу по FTP любым клиентом с поддержкой PASV режима.
В качестве имени хоста используем наш IP, пользователь www, пароль из шага номер 8. Режим PASV включен принудительно. Подключаемся и пробуем залить в папку /var/www любой файл. Если не получается, говорим:
sudo chmod 0755 /var/www

и пробуем еще раз.
Примерно вот так это выглядит во FlashFXP:




Если залилось с самого начала, то не нужно менять права с 750 на 755 (это дополнительная дырка в безопасности)
и проверяем права доступа к файлу. Он должен создаться с правами 0644. Если все совпадает, то переходим к 11-му шагу.

Шаг 11: Установка Apache и PHP.


Сначала ставим Апач:
sudo yum install httpd mod_ssl

После него PHP:
sudo yum install php

Отдельной строчкой регэкспы:
sudo yum install pcre-devel

и общей кучей модули и зависимости для PHP:
sudo yum -y install aspell aspell-en aspell-ru cvs php-gd php-intl php-mbstring php-mysql php-pdo php-soap php-xml php-xmlrpc php-pspell php-devel php-pear


Добавляем Apache в автозапуск и пробуем его запустить:
sudo /sbin/chkconfig --levels 235 httpd on

sudo service httpd start

Если все запустилось, корректируем конфигурацию под амазоновский сервер и пользователя webserver:
sudo mcedit /etc/httpd/conf/httpd.conf

Ищем и корректируем в тексте следующие строчки
ServerTokens Prod
TraceEnable Off
KeepAlive On
MaxKeepAliveRequests 256
KeepAliveTimeout 10
User webserver
Group virtwww

Строку TraceEnable Off возможно придется добавить.
Кнопкой F2 сохраняем изменения, выходим из редактора через F10 и перезапускаем Apache:
sudo service httpd restart

Разрешаем изменение файлов через ftp:
sudo chown www:virtwww /var/www/html /var/www/icons /var/www/error /var/www/cgi-bin

Убираем основную вредительскую дырку в конфиге PHP:
sudo mcedit /etc/php.ini

Ищем строку magic_quotes_gpc и ставим ее в положение On:
magic_quotes_gpc = On

Для совместимости не помешает включить короткие теги:
short_open_tag = On

Кнопкой F2 сохраняем изменения, выходим из редактора через F10 и перезапускаем Apache:
sudo service httpd restart

Если на каком-либо этапе апач перестанет запускаться, откатываем изменения и смотрим что произошло в логах:
sudo mcview  /var/log/httpd/error_log

и
sudo mcview  /var/log/httpd/access_log

После того как все запустилось закрываем терминал:
exit

и возвращаемся в консоль управления в барузере.

Шаг 12: Включаем балансировку нагрузки (Load Balancers).


Этот шаг в принципе можно пропустить, но это делать нежелательно. Балансировка входит в бесплатный пакет и я не вижу зачем отказываться от такой полезной вещи, которую можно использовать и для поддержки живости сайта. В этом режиме система Load Balancers периодически просто обращается к какому либо URL на сервере и делает выводы из времени отклика. Отсюда логически вытекает самая распространенная ошибка в настройке. По умолчанию предлагается пинговать индексную страницу сайта, а кто знает сколько она может весить в произвольном случае? В результате при каждой проверке тратится вроде бы немножко трафика, но за месяц может накапать целое ведро. Поэтому создадим для этой системы специальную страничку ping.html и впишем туда одинокую единичку без юникодов, пробелов и переводов строк. В результате на проверку всегда будет тратиться ровно 1 байт трафика. Этот файл нужно загрузить через ftp в корень сайта перед созданием балансера.
Имя может быть произвольным, но уникальным если балансеров несколько.
image

Целью проверки выбираем ping.html
image

Проверять будем наш уже запущенный сервер
image
image

Ура и все! Можно открывать в браузере наш IP адрес, заливать PHP скрипты через FTP и общаться из них с MySQL. Пример:
image
Не забывайте периодически контролировать расходы ресурсов в разделе управления аккаунтом и постарайтесь не пропустить момент, когда ваш бесплатный хостинг вдруг станет платным. При превышении лимитов любого из бесплатных сервисов, он не останавливается, а становится платным.
Расценки за превышение бесплатных норм для S3 и EC2

Вместо заключения: Не стоит думать, что все описанные манипуляции являются оптимальными и обеспечивают хоть какой-то уровень безопасности. Сервер в таком виде годится только для тестирования и хостинга домашних страничек с десятком посетителей в месяц. Довести все это до ума можно и это даже не сложно для грамотного человека. Засада в том, что грамотными становятся не день и не за год и вообще в одном человеке редко совмещается писатель на простонародном php и специалист в настройке серверов. Поэтому прежде чем отпускать это все безобразие в свободное плавание, попросите, за пару бутылок коньяка, какого-нибудь знакомого бородатого юниксоида законнектиться к вашему серверу по SSH. Он поматерится, поковыряется минут 10, несколько раз обзовет писателя этой стены текста бараном (и будет прав), но после этого все заработает не в пример лучше и стабильнее.

Upd Еще почитать про Amazon AWS можно вот тут:
habrahabr.ru/blogs/infosecurity/107631
habrahabr.ru/blogs/hosting/62362
habrahabr.ru/blogs/hosting/55058
И про Ubuntu на английском
alestic.com
И тоже наверное перенесу тему в хостинг.
Илья @7313
карма
23,0
рейтинг 0,0
Штатный шаман
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (88)

  • +2
    Круто, как вариант, можно прикрепить бесплатный домен из зоны .tk
    P.S. Занес в избранное.
  • 0
    Очень интересно и полезно.
    Спасибо.
  • +5
    В результате на проверку всегда будет тратиться ровно 1 байт трафика.

    Один ли? А как же http-заголовки?)
    • 0
      Насчет заголовков, интересно конечно и они вполне могут считаться, но повлиять мы можем только на тот самый 1 байт )
      • 0
        А как же кастомные заголовки + пустое тело ответа из ping.php?
        • 0
          нужно поэкспериментировать и спасибо за мысль )
  • +11
    Неплохая инструкция. На что я бы еще обратил внимание:
    — micro instances поддерживают кратковременный burst для CPU, при этом могу давать даже больше чем small instance. Но если нагрузка на процессор будет не кратковременным пиком, а установившейся — включится CPU capping, то есть CPU будет надолго срезан где-то на 99%. Это очень важный момент при работе с микро-инстансами и необходимо добавить это дело в пост.
    — балансер в вашем случае не нужен, потому что инстанс всего один и балансить ему нечего.
    — внешние и внутренние IP адреса и тарификацию траффика. Настраивать все взаимодействие надо на внутренних IP, а окружающий мир натравливать на внешние. Иначе будут платиться лишние деньги.
    — ну и для полноты инструкции, быть может, настройку DNS на наш Elastic IP.
    • +2
      Да… Нужно дописать насчет микро инстансов. К тому же в последнее время они по непредсказуемому алгоритму повадились впадать в спячку. Т.е. если никто долго не обращается, то на первый запрос ответ придет секунд через 20, а на второй и последующие — сразу же. Для этого и балансер — под ним не засыпает почему-то. Пингует и будит наверное ) Про DNS постараюсь написать, а вот про взаимодействие внешних и внутренних адресов и тарификации при этом, я бы и сам где-нибудь с удовольствием почитал — так и не дошли руки разобраться толком…
    • 0
      Внутренние IP это хорошо, но насколько я понял, они меняются при перезагрузке, остановке хоста?
      • 0
        Только при остановке, при перезагрузке все ОК
        • 0
          Хорошо коли так, но подсознательно мне не комфортно строить архитектуру на «потенциально» динамических IP-шниках )
  • +1
    Хороший мануал, всегда хотел просто попробовать, но время не было.
  • 0
    Огромное спасибо за статью, тут вот недавно Activecloud месяц теста раздавали, я как раз заказал себе, подойдет ли ваша интсрукция к Centos?
    • 0
      Amazon Linux AMI тоже на Centos, поэтому должно подойти, но гарантию конечно никто не даст
    • 0
      Судя по наличию yum это и есть Centos
  • 0
    Сам так делал.
    Только был большим лентяем. BitNami использовал.
    Там на этапе «Наш выбор это 32-x или 64-х битный Amazon Linux AMI.»
    Можно выбрать уже готовый инстанс :)
    • –1
      Готовые — неспортивно ) Да и непонятно что там может быть наворочено. И, кстати, если кто-то решится попробовать, то вышеописанный образ тоже есть в виде AMI и находится поиском по фразе ami-ed2cf884. Там правда в виде паролей забиты единицы, и FTP привязан к описанному IP, но даже в истории ssh (стрелки вниз и вверх) запомнены команды для изменения.
  • –1
    Юзаем бесплатный амазоновский инстанс для svn/git репозиториев. Год пройдет, зарегим нового юзера с новой кредиткой и опять.

    Для хостинга они не очень — любят непредсказуемо подтормаживать. Амазон кстати позиционирует микры только как вспомогательный ресурс для пиковых нагрузок.
  • +1
    Юзаю для таких целей Pagodabox, ничего настраивать не надо, просто залил в удаленный git-репозиторий и готово.
  • 0
    Статья как раз во время! Хотел потеснить облачный хостинг.
    Ловите виртуальный плюс в карму.

    • +2
      Простите за занудство, но описанный бесплатный один инстанс никак нельзя назвать облачным хостингом. s3 еще можно с натяжкой, но облачность Ec2 зависит исключительно от вашего собственного таланта масштабировать копии виртуальных машин.
  • +3
    — ftp-сервис на собственном сервере это глупость. Освойте sftp (через ssh).
    — mysql опять же лучше запустить с опцией networking off и подключаться к нему через сокет (например /tmp/mysql.sock).
    — вместо mysql советую сразу ставить mariadb
    — перед apache обязательно nginx, иначе вам любой клиент на медленном канале съест все немногочисленные ресурсы
    • 0
      объясните, пожалуйста, совет: «вместо mysql советую сразу ставить mariadb»
      • 0
        MySQL попал в руки Oracle и дальнейшее развитие продукта с этим названием туманно. Однако разработчики MySQL, включая Monty сделали форк, кстати весьма удачный, который продолжает развитие этой RDBMS под названием MariaDB
        • 0
          Мне кажется, что на данный момент развитие MariaDB более туманно, чем MySql
          • 0
            Не больше, чем туманна предыдущая схема развития MySQL в рамках opensource. С другой стороны Oracle тратит деньги на развитие MySQL и может в любой момент отказаться и закрыть его к чертовой матери уже без возможности подхватить с того места, на котором остановились они. В остальном и я и вы лишь прогнозируем ситуации, а в MariaDB уже сейчас исправлены некоторые серьезные ошибки, которые все еще присутствуют в MySQL.
  • +18
    magic_quotes_gpc = On
    ЗЛО и не спасает, никогда его не врубайте.
    • +6
      Ещё и deprecated.
  • 0
    Уже полгода пользую амазон по направлению описанному в этой статье. Только положительные впечатления, стабильно все. Печалит, что скоро закончится тот самый бесплатный год.

    Еще печалит, что не могу подключиться через eclipse RSE к своему хосту, так как не проходит проверку по ключу. Может, подскажет кто, как можно на базе бесплатного амазона сделать доступ по sftp логину и паролю?
    • 0
      Добавьте приватный ключ в Preferences > General > Network Connections > SSH2, вкладка General, поле Private keys.
  • НЛО прилетело и опубликовало эту надпись здесь
  • –3
    А можно-ли расположить несколько доменов с разными ftp/mysql логинами?
    • 0
      Запросто.
  • +1
    Мне кажется, зря вы разместили картинки к этому посту на S3. Очень быстро 15 бесплатных гб траффика улетучатся теперь ;)
    • +1
      У автора меньше 30 картинок, они меньше 50кб каждая.
      Если каждый откроет и просмотрит по разу то это 1.5Мб.
      На вскидку. Что бы трафик кончился данный пост должно просмотреть более миллиона человек.

      За пост спасибо. Давно присматривался да все боязно было.
      Статья будет отправной точкой.
      • 0
        Следуя вашим же расчетам, чтобы трафик кончился, данный пост нужно просмотреть всего лишь 10000 раз.
        • 0
          Простите. На два порядка ошибся. Разделил кб на Мб.
          Но там не все картинки по 50. Есть и по 9. К тому же не все кликают на них.
    • +5
      Да… что-то я не рассчитал. За день уже кончился бесплатный пакет, но не по трафику, а по GET запросам. Нужно переложить куда-нибудь )
  • 0
    Используем Amazon AWS для крупного проекта с высокой нагрузкой. Нашли его для себя самым оптимальным.
    • 0
      О вот это интересно!
      Поделитесь цифрами, сколько терабайт\(или мегабит) в месяц потребляет проект и какой счет выходит поитогу.

      Как тарифицируется процесорное время и память.

      Дешевле выходит чем на обычном выделенном серваке или дороже?
  • +1
    Поэтому прежде чем отпускать это все безобразие в свободное плавание, попросите, за пару бутылок коньяка, какого-нибудь знакомого бородатого юниксоида законнектиться к вашему серверу по SSH
    Он поматерится, поковыряется минут 10, несколько раз обзовет писателя этой стены текста бараном (и будет прав), но после этого все заработает не в пример лучше и стабильнее.

    Гм. На хабре перевелись бородатые юниксоиды, которых можно было попросить законнектиться к вашей статьей?
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Всё бы хорошо, если бы не нужно было бы платить через 12 месяцев этого бесплатного кокаинума :)
    • 0
      А сколько платить в среднем?
      • НЛО прилетело и опубликовало эту надпись здесь
  • +2
    Конечно же, что-то подобное было неоднократно на хабре, к примеру год назад: habrahabr.ru/blogs/infosecurity/107631/
    пусть и несовсем в том ключе.
    Будем считать, что это одна из статей, нацеленная на конечный результат.

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

    От себя, год использоват полноценно использовал триал, собственно, всё устраивает и я доволен.
    Удачи!
    И с новым годом:)
  • 0
    не хочу показаться скучным, но микроинстанцию так и не получилось использовать для полноценного хостинга из-за ограничения процессора docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?concepts_micro_instances.html. Ну и минимум 1-2$ за чтение/запись диска будут сниматься ежемесячно. Так что рекомендую всем openshift.redhat.com/app/express который «free as in beer»
    • –1
      Ну это опять же от нагрузки зависит. У меня полгода целый форум крутился на микро с посещаемостью 15-20 человек в сутки и I/O не поднимался выше 800к в месяц. Т.е. все оставалось в пределах бесплатности.
      • +1
        вы правы, зависит от нагрузки, я ставил drupal, получалось раздавать только статичный кеш созданный boost'oм, даже cron не отрабатывался, не хватало процессора
  • 0
    Отличная статья — однозначно в мемориз.

    Один вопрос… Я видел упоминания что при выключении и включении инстанса у него на диске теряются все данные и он запускается в изначальном состоянии. Насколько это правда и что нужно предпринять для того что-бы диски были «настоящими», которые будут хранить изменения между запусками инстанса?
    • +2
      Если действие Stop, то ничего не теряется, а вот Terminate действительно уничтожает все данные. Чтобы этого избежать создают еще один диск в Elastic Block Store Volume. В рассмотренном примере у нас уже занято 8Гб из бесплатных 10 и можно создать диск на 1.9Гб, отформатировать его и примонтировать к системе. После этого на него можно будет перекинуть все изменяемые данные (почту, базу, вебрут и т.д.) и после Terminate он пропадать не будет. Еще можно периодически делать AMI образ своей системы, в который входит вообще все кроме ssh ключей и восстанавливаться из него.
    • 0
      там бывают 2 типа инстансов — устаревшие, как вы пишите, когда изменения теряются и инстансы на основе EBS, при выборе AMI это надо учитывать. Т.е есть не только такой вариант, как написано в предыдущем коменте, когда для изменений монтируется дополнительный диск, а весь диск может сохранять изменения
  • 0
    Беда беда.
    Ввёл данное о карточку, перешёл к пункту «Identity verification», выбрал Украину (+380), ввёл сой номер (632......) нажал кнопку и… ничего не произошло. Через секунд 30 всплыло окно, гласящее о том, что я не правильно ввёл PIN. Так продолжалось 3 раза. После этого мне предложили подождать 12 часов.
    В чём проблема — пока не понятно, завтра попробую номер другого оператора.

    P.S. В то время, пока я ожидал звонка у меня сняли 1 доллар.
    • 0
      Первый доллар снимают еще до телефонного подтверждения. И скорее всего просто не смогли дозвониться и да — нужно пробовать другой номер.
      • 0
        А у меня другая беда. Тётка звонит, но СОВЕРШЕННО не разобрать, что она говорит. Ужасная связь. Я пытался угадать (набрать просто пин; набрать пин и решётку; ещё что-то), и закончилось всё тем же — перерывом на 12 часов.

        Если не сложно, скажите, что там набирать надо, чтобы подтвердить?
        • 0
          говорил робот. во время второго перезвона обычно говорят на английском. после звонка нужно сразу же ввести пин и все пройдет
  • 0
    Отличная статья, вот только один ньюанс, все настроил, дошел до пункта с ftp и не могу подключиться по оному, выдает ошибку подключения. Я работаю на макбуке. Пробовал несколько клиентов, все поддерживают pasv: Cyberduck, FileZilla и FlashFxp (для Windows из под виртуалки). Скажите, что я делаю не так?
    • 0
      А какую именно ошибку выдает? И несколько причин может быть:
      — в Security Groups не открыты порты 20 и 21 для пользователя web
      — в Elastic IPs IP не присвоен инстансу
      — неправильный IP в конфиге vsftpd
      — какая-то другая ошибка в конфиге из-за которой vsftpd не стартует
      • –1
        Спасибо за помощь, отвечаю по пунктам:

        1) Security groups:



        2) Elastic IP:



        3) Конфиг vsftpd:

        # Example config file /etc/vsftpd/vsftpd.conf
        #
        # The default compiled in settings are fairly paranoid. This sample file
        # loosens things up a bit, to make the ftp daemon more usable.
        # Please see vsftpd.conf.5 for all compiled in defaults.
        #
        # READ THIS: This example file is NOT an exhaustive list of vsftpd options.
        # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
        # capabilities.
        #
        # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
        anonymous_enable=NO
        #
        # Uncomment this to allow local users to log in.
        local_enable=YES
        #
        # Uncomment this to enable any form of FTP write command.
        write_enable=YES
        #
        # Default umask for local users is 077. You may wish to change this to 022,
        # if your users expect that (022 is used by most other ftpd's)
        local_umask=022
        #
        # Uncomment this to allow the anonymous FTP user to upload files. This only
        # has an effect if the above global write enable is activated. Also, you will
        # obviously need to create a directory writable by the FTP user.
        #anon_upload_enable=YES
        #
        # Uncomment this if you want the anonymous FTP user to be able to create
        # new directories.
        #anon_mkdir_write_enable=YES
        #
        # Activate directory messages - messages given to remote users when they
        # go into a certain directory.
        dirmessage_enable=YES
        #
        # Activate logging of uploads/downloads.
        xferlog_enable=YES
        #
        # Make sure PORT transfer connections originate from port 20 (ftp-data).
        connect_from_port_20=YES
        #
        # If you want, you can arrange for uploaded anonymous files to be owned by
        # a different user. Note! Using "root" for uploaded files is not
        # recommended!
        #chown_uploads=YES
        #chown_username=whoever
        #
        # You may override where the log file goes if you like. The default is shown
        # below.
        #xferlog_file=/var/log/vsftpd.log
        #
        # If you want, you can have your log file in standard ftpd xferlog format.
        # Note that the default log file location is /var/log/xferlog in this case.
        xferlog_std_format=YES
        #
        # You may change the default value for timing out an idle session.
        #idle_session_timeout=600
        #
        # You may change the default value for timing out a data connection.
        #data_connection_timeout=120
        #
        # It is recommended that you define on your system a unique user which the
        # ftp server can use as a totally isolated and unprivileged user.
        #nopriv_user=ftpsecure
        #
        # Enable this and the server will recognise asynchronous ABOR requests. Not
        # recommended for security (the code is non-trivial). Not enabling it,
        # however, may confuse older FTP clients.
        #async_abor_enable=YES
        #
        # By default the server will pretend to allow ASCII mode but in fact ignore
        # the request. Turn on the below options to have the server actually do ASCII
        # mangling on files when in ASCII mode.
        # Beware that on some FTP servers, ASCII support allows a denial of service
        # attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
        # predicted this attack and has always been safe, reporting the size of the
        # raw file.
        # ASCII mangling is a horrible feature of the protocol.
        #ascii_upload_enable=YES
        #ascii_download_enable=YES
        #
        # You may fully customise the login banner string:
        #ftpd_banner=Welcome to blah FTP service.
        #
        # You may specify a file of disallowed anonymous e-mail addresses. Apparently
        # useful for combatting certain DoS attacks.
        #deny_email_enable=YES
        # (default follows)
        #banned_email_file=/etc/vsftpd/banned_emails
        #
        # You may specify an explicit list of local users to chroot() to their home
        # directory. If chroot_local_user is YES, then this list becomes a list of
        # users to NOT chroot().
        #chroot_local_user=YES
        #chroot_list_enable=YES
        # (default follows)
        #chroot_list_file=/etc/vsftpd/chroot_list
        #
        # You may activate the "-R" option to the builtin ls. This is disabled by
        # default to avoid remote users being able to cause excessive I/O on large
        # sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
        # the presence of the "-R" option, so there is a strong case for enabling it.
        #ls_recurse_enable=YES
        #
        # When "listen" directive is enabled, vsftpd runs in standalone mode and
        # listens on IPv4 sockets. This directive cannot be used in conjunction
        # with the listen_ipv6 directive.
        listen=YES
        #
        # This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
        # sockets, you must run two copies of vsftpd with two configuration files.
        # Make sure, that one of the listen options is commented !!
        #listen_ipv6=YES

        pam_service_name=vsftpd
        userlist_enable=YES
        tcp_wrappers=YES

        pasv_enable=YES
        pasv_min_port=1024
        pasv_max_port=1048
        pasv_address=107.20.220.161
        • 0
          вроде бы все нормально с конфигом, но на второй картинке настораживает пустое поле
          Public DNS. По идее и в свойствах инстанса и в этом поле должно быть написано что-то вроде
          Public DNS: ec2-107-20-220-151.compute-1.amazonaws.com
          И все-таки какая ошибка выдается при подключении и стартует ли vsftpd?
          • 0
            1) Elastic IPS:

            странно, сейчас залогинился на сайт, и появилост поле Public DNS:



            2) По ftp все так же не удается подключиться.

            Cyberduck:



            FlashFXP:



            В обеих программах pasv включен по-умолчанию.
            • 0
              vsftpd стартует при подключении по ssh
              • 0
                сейчас подключился по ssh и проверил статус vsftpd:

                vsftpd (pid 24897) is running…
                • 0
                  А в самом макбуке какой-нибудь встроенный фаервол не может блокировать? Для сравнения у меня во FlashFXP выглядит вот так
                  imageimageimage
                  • 0
                    Файрволл проверил, ничего не блокирует. На всякий случай сделал правило.
                    • 0
                      тогда у меня мысли кончились и похоже ничего не смогу посоветовать…
  • 0
    Месяца полтора все делал по подобной инструкци. В итоге сняли 12$ спустя месяц, теперь еще 2$ хотят снять, благо карточка до зарплаты пустая. В общем быстренько отключил все это дело.
  • 0
    Прошу прощения за самопиар, но он по теме. Тут небольшие выводы из моего опыта использования этого самого бесплатного микро инстанса — бежал я оттуда как от огня. Тот же наш clodo.ru и то пощедрее будет ресурсами, и обходился менее 500р./мес, сейчас вообще ушёл на selectel.ru — так и того меньше выходит. В общем ссылка на мой опыт, кому интересно blog.qnub.ru/2011/03/amazon.html
  • 0
    Где Вы были раньше?! :)
  • 0
    А кто знает, если их сервис просит телефон, говорит, что позвонит, но никакого звонка далее не следует?
    • 0
      значит или страна неправильно выбрана или нужно пробовать другой телефон.
      • 0
        Ну страну то я точно знаю в какой живу ;)
        • 0
          Второй телефон тоже не подходит :(
          • 0
            тогда мистика… у меня 2 раза было что не перезванивали — на МТС и Смартс. Но мегафоновские и билайновские номера всегда прокатывали.
            • 0
              В итоге я написал в саппорт и через сутки мне ответил товарищ из саппорта Sean W, который сообщил, что активировал мой аккаунт вручную.
  • 0
    спасибо, статья отличная.
    В общем, если я правильно понял, если есть уверенность, что лимиты не превысятся, то стоит однозначно попробовать?
    И что через год, если оставаться в этих же лимитах, не превышать, сколько все таки реально будет обходиться такой хостинг? Калькулятор видел, но может быть кто то скажет из своего опыта, хоть навскидку?
  • 0
    Спасибо за статью. С наконец зарегистрировался. Проблема была в том, что на украинские номера MTC и Beeline звонить категорически отказывалось, писало мол звонок совершен, код неверный. Поставил симку Utel не сильно надеясь на удачу и тут же получил звонок. Дождался пока тетка договорит, ввел с клавиатуры цифры и активировал акаунт.
    Когда-то я уже пользовался бесплатным акком, но забыл убрать некоторые услуги, в результате насчитало сколько-то баксов. Я тогда просто указал левую карту в настройках, с которой оно тщетно несколько месяцев пыталось забрать свои кровные, о чем приходили уведомления.

    Наверное и сейчас, будет не лишним отвязать карту после активации от греха подальше.
  • 0
    Ха, офигеть, амазоновцы молодцы конечно. Сняли с меня 5 баксов. По баксу за каждую попытку активации что ли.

    Лог выписки по карте, которая привязана к амазону.
    Оплата Business Services: Amazon Payments 15.01 16:59 -1.00 USD
    Оплата в книжных магазинах: Amazon.com 15.01 16:58 -1.00 USD
    Оплата в книжных магазинах: Amazon.com 15.01 15:42 -1.00 USD
    Оплата в книжных магазинах: Amazon.com 14.01 21:49 -1.00 USD
    Оплата в книжных магазинах: Amazon.com 14.01 21:40 -1.00 USD

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

    Эти деньги вообще должны автоматом возвращаться или это плата за активацию?
  • 0
    у меня однажды сняли в процессе активации 7 долларов аж. Правда за раз и через 3-4 дня все 7 вернули — получилось вообще бесплатно. А с такой вот однодолларовой чередой не сталкивался…
  • 0
    Извращенец, php без APC ???
    • 0
      APC же нет в виде пакета и он компилится через pecl install? А это менее повторяемо и потом у нас же по определению микроскопический сайт — чего там кешировать-то? :)
      • 0
        в remi есть готовое.
        Снижение нагрузки на CPU в 2-3 раза всегда полезно, в том числе и для посетителя по скорости отдачи страницы.
        • 0
          ну значит описание не полное (и не претендовал кстати) и будет еще одним поводом больше позвать бородатого спеца :)
  • 0
    Поднял инстанс на 32х битном Amazon Linux AMI. Поднял энжинс, подня пхп-фпм, все замечательно. Веб сервер и пхп работают от юзера webserver. Решил настроить синхронизацию иде с сервером, посему задал ключ для пользователя www и пытаюсь подключится через него. Но вот незадача, сервер отказывается авторизовываться по созданному ключу. Создал через ssh-keygen -t rsa. Сконвертировал в пути формат. Авторизовываться всё равно отказывается, начал ковырять конфиг sshd, раскоментил директиву AuthorizedKeysFile ~/.ssh/authorized_keys Всё равно не пускает. Может кто-то сталкивался с сем?
    • 0
      Если ваш IDE — phpstorm, то сгенерируйте публичный ключик рядышком с похожим именем, но .pub окончанием
  • 0
    А тем временем изменились лимиты на бесплатные аккаунты

    Было:

    AWS Free Usage Tier (Per Month):
    750 hours of Amazon EC2 Linux Micro Instance usage (613 MB of memory and 32-bit and 64-bit platform support) – enough hours to run continuously each month*
    750 hours of an Elastic Load Balancer plus 15 GB data processing*
    10 GB of Amazon Elastic Block Storage, plus 1 million I/Os and 1 GB of snapshot storage*
    5 GB of Amazon S3 standard storage, 20,000 Get Requests, and 2,000 Put Requests*
    15 GB of bandwidth out aggregated across all AWS services*
    25 Amazon SimpleDB Machine Hours and 1 GB of Storage**
    100,000 Requests of Amazon Simple Queue Service**
    100,000 Requests, 100,000 HTTP notifications and 1,000 email notifications for Amazon Simple Notification Service**
    10 Amazon Cloudwatch metrics, 10 alarms, and 1,000,000 API requests**
    In addition to these services, the AWS Management Console is available at no charge to help you build and manage your application on AWS.

    Стало:

    750 hours of Amazon EC2 Linux Micro Instance usage (613 MB of memory and 32-bit and 64-bit platform support) – enough hours to run continuously each month*
    750 hours of Amazon EC2 Microsoft Windows Server Micro Instance usage (613 MB of memory and 32-bit and 64-bit platform support) – enough hours to run continuously each month*
    750 hours of an Elastic Load Balancer plus 15 GB data processing*
    30 GB of Amazon Elastic Block Storage, plus 2 million I/Os and 1 GB of snapshot storage*
    5 GB of Amazon S3 standard storage, 20,000 Get Requests, and 2,000 Put Requests*
    15 GB of bandwidth out aggregated across all AWS services*
    25 Amazon SimpleDB Machine Hours and 1 GB of Storage**
    100,000 Requests of Amazon Simple Queue Service**
    100,000 Requests, 100,000 HTTP notifications and 1,000 email notifications for Amazon Simple Notification Service**
    10 Amazon Cloudwatch metrics, 10 alarms, and 1,000,000 API requests**
    In addition to these services, the AWS Management Console is available at no charge to help you build and manage your application on AWS.

    В два раза увеличились квоты по дисковым операциям и в 3 по дисковому пространству. Также добавилась возможность запустить Windows Server в микро инстансе. Что может быть очень интересным и полезным для Windows разработчиков.
  • 0
    Прошу прощения, возможно вопрос покажется глупым. Могу ли я как-то установить php 5.4 RC6 (или 5)?
  • 0
    Вопрос: кто-нибудь превышал бесплатное использование?

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