Вот краткий список вещей, о которых вам не следует беспокоиться при настройке статического веб-сайта:
- масштабирование ваших серверов для увеличения трафика
- вход в Консоль управления AWS, чтобы загрузить новый файл index.html.
- тратить 5 долларов США на размещение одного статического веб-сайта
Мне самому надоело переживать об этих вещах. Итак, я изучил Go, разработал небольшой инструмент командной строки за выходные и открыл его исходный код.
AWS S3 - доступный вариант для хостинга (и бесплатный для начинающих пользователей), а AWS CloudFront хорош для CDN. Но настроить эти два - боль. Контрольный список довольно длинный:
- правильно настроить S3
- настроить CloudFront
- убедитесь, что вы следовали лучшим практикам, таким как HTTP - ›перенаправление HTTPS.
- синхронизировать файлы
- сделать CloudFront недействительным для получения обновлений.
К счастью, мой AWS-site-manager с открытым исходным кодом позволяет размещать и обновлять статический сайт так же просто, как одну командную строку.
AWS Site Manager - это простой инструмент командной строки, который позволяет легко разместить статический веб-сайт с помощью AWS S3 и CloudFront, не нарушая передовых практик.
Если вы размещаете сайт впервые, создайте учетную запись AWS и зарегистрируйте свое доменное имя в такой службе, как Namecheap (убедитесь, что вы используете их ежемесячный купон на скидку).
Зачем использовать S3 и CloudFront для статических сайтов?
Итак, учитывая все проблемы, зачем возиться с S3 и CloudFront? Две основные причины:
- Доступность функций (по сравнению с бесплатным динамометрическим компьютером Heroku, который отключается при достижении предела бездействия, или Github.io, который не поддерживает HTTPS с пользовательскими доменами)
- Скорость (CloudFront - дешевый, но приемлемый CDN)
Учитывая преимущества, единственным препятствием была установка, поэтому мы создали инструмент командной строки для удобного использования в будущем. Ниже я расскажу, как настроить этот менеджер сайтов с открытым исходным кодом.
AWS-site-manager выполняет 2 вещи:
1. Настройте S3 и CloudFront с оптимальной конфигурацией:
- Создать корзины S3
- Настройте CloudFront Distribution и настройте CNAME
- Загрузите и установите индивидуальные сертификаты HTTPS
- Перенаправьте www на голые домены для лучшего SEO
- Перенаправить HTTP на HTTPS для лучшего SEO (если HTTPS включен)
- Настройка IAM / автоматическое шифрование сертификата (скоро)
2. Синхронизируйте локальную папку с S3.
- Gzip-файлы для повышения скорости работы сайта (заменят CloudFront Gzip Setting)
- Разумное значение по умолчанию для заголовка HTTP (правильный тип MIME, max-age = 900, etag и т. Д.)
- Недействительное распространение CloudFront для синхронизируемых файлов
Начало работы: Установить
Загрузите двоичный файл для Linux / Mac / Windows выпуск здесь.
Или скомпилируйте из исходников: Если у вас установлена Go 1.6 или выше, выполните следующую команду:
Как использовать AWS Site Manager
1. Настройте учетные данные AWS и выполните config.
Если вы раньше не настраивали учетные данные AWS в своей среде, вы можете настроить их, поместив следующие строки в ~/.aws/credentials
.
И в ~/.aws/config
Вам также следует установить переменную среды AWS_SDK_LOAD_CONFIG
Если вы работаете в Linux / Mac с помощью bash, введите следующую строку в ~/.bashrc
Подробнее о настройке AWS CLI можно прочитать в его официальной документации.
2. Используйте это!
Предполагая, что вы собираетесь создать веб-сайты example.com и www.example.com, вы можете:
Приведенные выше команды будут:
- создать корзину S3 example.com и www.example.com
- синхронизировать все файлы в локальной папке
- перенаправить www.example.com на example.com
Если вы хотите использовать https и у вас есть готовый сертификат в формате PEM, вместо этого выполните следующие командные строки, чтобы настроить HTTPS. (если ваш реестр SSL отправил вам .key
/ .crt
, прочтите это)
Наконец, вам необходимо настроить сопоставление DNS с конечной точкой распространения CloudFront. Рассмотрите возможность использования для этого АРМ Маршрут-53.
Вам необходимо настроить запись CNAME, чтобы указать ваше доменное имя на Cloud Front Distribution. Вы можете получить свое доменное имя CloudFront из Консоли управления AWS, а затем установить CNAME своего домена в качестве доменного имени.
Если вам нужно обновить сайт, просто запустите aws-site-manager sync –domain example.com
В папке, и команда сравнит изменения файлов, загрузит новые файлы в S3 и сделает недействительным кеш CloudFront для вас.
Иди и запусти
Этот проект решил повторяющуюся проблему для меня и моей команды в Урском. Помимо создания мобильных и веб-приложений, мы также часто создаем разовые статические сайты, которые мы хотим иметь возможность удобно обновлять время от времени.
AWS-site-manager имеет открытый код и находится на начальной стадии. Если вы хотите внести свой вклад, вы можете создать проблемы или отправить запрос на перенос.
Если у вас есть вопросы по этому проекту или бессерверным решениям в целом, вы можете связаться со мной здесь или в Twitter. Или, если вы когда-нибудь заезжали в Гонконг, приходите ко мне в офис пообщаться!
Наслаждаться!
PS: Моя компания также работает над другим проектом с открытым исходным кодом под названием Skygear.io, который представляет собой бесплатную BaaS, которая включает такие функции, как чат, социальные сети, ботов, вход в социальные сети, синхронизация данных в реальном времени и офлайн, CMS для мобильных устройств. , управление пользователями и т. д.