После продолжительного тестирования и многочисленных экспериментов я, наконец, решился перевести сайт с порядком надоевшего Wordpress’а на Octopress.
Уже давно наблюдаю за развитием этого фреймворка, и вот, наконец, созрел до миграции блога на него. Расписывать подробно все его прелести не буду, в сети есть большое количество разных статей на эту тему, но основная идея - Octopress преобразует статьи, размеченные в markdown, в статический HTML-сайт, безо всякого php, баз данных и прочих задумчивых вещей. Причем, все это действо происходит прямо на моем компе, не загружая сервер лишней работой. Все, что остается - синхронизировать полученный HTML-контент с сервером с помощью rsync, например. Разумеется, тут теряется возможность написать пост, сидя в байдаре посреди речки или из открытого космоса - под рукой должен быть, как минимум, компьютер, но для меня это небольшая проблема, тем более, что для сиюминутного графоманства отлично подойдет и твиттер.
Причин для переезда множество и основная - просто захотелось что-то поменять. Wordpress наскучил и начал доставать своими тормозами (генерация страницы за 5 секунд - форменное безобразие на мой взгляд), предыдущий хостер тоже начал демонстрировать со временем признаки упадка в виде 500 Server Error. И даже попытка размещения сайта на VPS и эксперименты с кеш-плагинами для WP проблемы толком не решили.
Заодно, решил поменять и хостинг, ибо со статическим сайтом выбор значительно упрощается: хоть на narod.ru выкладывай. Ну, про narod.ru я пошутил: тамошняя принудительная реклама с легкостью перечеркивает все плюсы, поэтому я выложил сайт на Amazon S3. В течение прошлого года, благодаря кампании free tier (год бесплатного использования Amazon Web Services для всех желающих) я не только познакомился с этими замечательными сервисами, но и перевел туда несколько проектов, так что общение с S3 мне было не в новинку. Для тех же, кто слышит об этом впервые, есть несколько замечательных статей на Хабре.
Ну а теперь напишу небольшую шпаргалку для быстрого развертывания Octopress на домашнем компе с OS X 10.7 и синхронизации его с Amazon S3. В первую очередью для для установки и работы фреймворка мне понадобится git (ставится вместе с Xcode) и Ruby, причем именно версии 1.9.2. В OS X Lion Ruby установлен изначально, но версии 1.8.7, Octopress с таким работать не будет, так что придется обновиться. Итак, приступим:
1 2 |
|
Затем установим RVM (Ruby Version Manager) и вместе с ним Ruby 1.9.2:
1 2 3 4 |
|
Ну и собственно, установим Octopress:
1 2 3 |
|
Дальнейший процесс настройки и использования фреймворка хорошо и подробно документирован на сайте Octopress, поэтому не буду описывать его подробно. А вот о синхронизации с Amazon S3 стандартным для Octopress путем (через ‘rake deploy’) не слишком много написано в сети, так что остановимся на ней подробнее. Для начала нам понадобится утилитка s3cmd. Сама она написана для Linux, но, как показала практика, отлично работает и на Mac. Перейдем в папку с распакованным архивом и запустим в терминале:
1 2 |
|
Программа задаст несколько вопросов о способе подключения и ключах доступа к AWS, узнать которые можно тут.
Затем нам надо сконфигурировать rakefile для работы с s3cmd, для чего добавим в него следующие строки:
1 2 3 4 5 |
|
и установим там же переменные:
1 2 |
|
Привязать доменное имя к сайту на S3 можно через DNS-псевдоним CNAME:
1
|
|
Записи типа A не поддерживаются, но при сильном желании можно смухлевать:
1 2 3 4 5 6 |
|
Где 178.236.5.70 - IP адрес нашего сайта на S3 в данный момент. Можно привязать имя к этому адресу:
1
|
|
Вот тут и заключается главная проблема такого подхода: S3 использует балансировку нагрузки и IP-адреса постоянно меняются, подставляя наименее загруженный сервер в датацентре, а используя запись типа A мы лишаемся этой возможности. Вдобавок, нет никакой уверенности, что датацентр не сменит свои IP-адреса в будущем. В общем, рекомендовать привязку имени через запись A можно лишь в самом отчаянном положении при невозможности пользоваться записями CNAME.
Ну а дальнейшие действия просты: пишем посты на markdown, кидаем их в папку octopress/source/_posts
и генерируем сайт:
1 2 3 |
|
P.S. Для любителей нестандартных хостингов можно порекомендовать статьи о размещении сайта c Octopress на Heroku (и еще тут), Github и даже Google App Engine. Во всех этих случаях можно, кстати, размещать сайт совершенно забесплатно, но в ущерб посещаемости (GAE), скорости работы (Heroku) и закрытости исходников (Github).
P.P.S. Кстати, за время тестирования (примерно 2 месяца, правда, с небольшим трафиком) этого и 3-х других сайтов Amazon предъявил мне счет всего на 1.18$!