Архив рубрики: Мануалы

Как использовать AWS S3 для статических сайтов?

Всем привет! Я вернулся к ведению блога! 🙂

Итак, сегодня мы рассмотрим пошагово настройку хостинга сайтов на серверах AWS. Подробно о плюсах и минусах я писал здесь — HTML-хостинг сайта на AWS S3 Amazon.

Настройка бакета (хранилища) статического сайта

Создание хранилища

  • Для начала логинимся в Amazon AWS.
  • Затем создаем хранилище. Переходим в сервис S3 и кликаем «Create bucket» для создания хранилища.
  • Переходим на страницу создания бакета и вносим свои название и регион (которые нам нужны)
  • Все настройки ниже оставляем стандартными и нажимаем кнопку «Create bucket»
  • У нас должен появиться в списке бакет

Настроим политику безопасности

  • Теперь настроим наше хранилище как сайт. Для этого кликаем таб Permissions и переходим на страницу редактирования политик. Находим внизу поле «Bucket policy», кликаем Edit и вставляем туда свой конфиг политики.

    Обратите внимание на строку «StringNotLike». Это массив нежелательных ботов для вашего сайта. Вы можете в это массив по примеру вставить своих ботов, чтобы они не краулили ваш сайт.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::shoot.click/*",
            "Condition": {
                "StringNotLike": {
                    "aws:UserAgent": [
                        "Baiduspider*",
                        "Sosospider*",
                        "Sogou*"
                    ]
                }
            }
        }
    ]
}

Нажимаем кнопку Save changes. Если получаем такую ошибку, значит надо отредактировать политику доступа.

Для этого отменяем редактирование политики бакета, на странице Permissions находим блок с Block publick access (bucket settings) и снимаем галочку, тем самым выключая блок. Затем пытаемся снова вставить код в Bucket policy.

  • Сохраняем политику. Возле названия бакета должен появиться лейбл Publicly accessible.

Настроим хостинг

Чтобы превратить бакет в хранилище хостинга, нужно перейти в пункт Properties -> Static website hosting. Это в самом низу страницы.

Протокол указываем http.

Сохраняем настройки.

Настройка DNS-записей

Для того, чтобы настроить DNS для нашего бакета, нужно перейти в панель сервиса Route 53. Опишу процесс пошагово:

  1. Создать хостинговую зону.
  2. Создать Record Set для зоны.
  3. Прописать NS-записи в панели регистратора.

Шаг 1 — создание Hosted zone

В панели Route 53 кликаем «Create hosted zone».

Далее в поле названия вписываем имя домена и кликаем Create hosted zone.

У нас должны появиться две записи:

Шаг 2 — Создание Record Set для зоны

Для этого кликаем кнопку Create record в панели зоны.

Переходим в панель создания записей для зоны.

  1. Включаем пункт «Alias».
  2. Выбираем из выпадающего списка «Alias to S3 website endpoint»
  3. Из появившегося внизу списка выбираем зону, в которой создали бакет.
  4. В поле ниже должен подтянуться endpoint нашего бакета.
  5. Кликаем Create records.

Такие же манипуляции делаем для www-домена.

Шаг 3 — Редактирование NS-записей

В панели Route 53 копируем ns-записи для домена и вставляем их в панели регистратора.

Добавление файлов в корень бакета S3

Открываем наш бакет и перетаскиваем файлы в корень бакета.

Если мы все правильно сделали, то у нас должно все получиться. Например: http://shoot.click/

Настройка Cloudflare для чайников

В этот раз поговорим о настройке Cloudflare (далее CF) со всеми моментами и нюансами. Первым делом создаем аккаунт непосредственно в CF. Сразу палю небольшую фичу, если нужно создать много аккаунтов. Просто при регистрации указываете свою почту с точкой в названии, например вместо example@gmail.com указываете ex.ample@gmail.com, для CF это будет новый аккаунт, а все письма будут приходить вам на example@gmail.com. И эта фишка работает в многих сервисах.

После того как залогинились на сайте https://www.cloudflare.com/ нажимаем кнопку  «Add Site»:

Здесь указываем свой домен и нажимаем Add Site:

Тут нажимаем Next:

Выбираем пакет FREE и нажимаем Confirm Plan:

В появившемся окне нажимаем Purchase:

Здесь смотрим чтобы на главном и www-поддомене стояли “тучки”(это кэширование — только при активном кэшировании скрывается реальный ip) и верно ли указан ip сервера, после чего нажимаем Continue:

Здесь мы копируем NS’ы 2, ими нужно будет заменить NS’ы 1 в доменном регистраторе, NS’ы 3 нужно будет просто удалить в доменном регистраторе:

ВАЖНО! Было обсуждение в одном из чатов, и как оказалось многие совершают такую ошибку. Если планируете добавлять сайт в CF ни в коем случае не прописывайте в панели регистратора свой реальный ip, вы так рискуете спалить свои сетки. Просто после добавления в CF укажите NS, которые будут указаны там.

Если у вас стоит вопрос массовости как и у меня, и нужно добавлять сайты в CF массово, то есть готовое решение. Проверенный мною скрипт, который можно использовать прямо на сайте, либо накатить себе на сервер. Скачать/протестировать его можно тут. Для его работы необходимо получить API ключ, который вы можете просмотреть в настройках своего аккаунта CF.

Как сменить NS на примере NameCheap

Логинимся в NameCheap и во вкладке Dashboard ищем наш домен и нажимаем Manage:

Листаем до вкладки NameServers, выбираем Custom DNS:

После чего нажимаем на галочку:

Изменения вступят в силу от 10 минут до 72 часов. 

И опять таки вернемся к вопросу массовости, если необходимо сменить NS на десятках доменов за раз, то и на этот случай есть достаточно много готовых решений на том же GitHub. Я же для себя сделал скрипты на Python для Namecheap и Godaddy. Если интересует стучитесь в телеграм.

4.7 / 5 ( 6 голосов )