Категория: Инструкции
При деплое Docpad -сайта на GitHub Pages столкнулся с некоторыми проблемами.
Так как у меня не всё прошло гладко и очевидно, решил написать эту инструкцию.
Проблема с абсолютными путямиСначала разберёмся с абсолютными путями в докпаде.
Если ещё не создана, сделаем в конфиге докпада переменную @site.url :
И добавим отдельную конфигурацию для «development» окружения:
Эта переменная — @site.url — будет подставляться префиксом ко всем путям и ссылкам в зависимости от того, работаем мы на локалхосте или выкатываем сайт на хостинг.
Теперь нужно добавить хелпер « @getUrl() » ко всем « href » и « src » в шаблоне, в документах — везде, где встречаются абсолютные пути.
Теперь, когда мы запускаем docpad run . ко всем путям подставляется @site.url из девелоперского окружения — http://localhost:9778. А когда docpad run --env static . переменная @site.url равна нашему продакшен пути.
Деплой на GitHub PagesВ репозитории создадим ветку « gh-pages ». По инструкции это должна быть пустая ветка без истории, но об этом в дальнейшем позаботится плагин для деплоя.
В репозитории проекта создадим ветку с именем « gh-pages »
При попытке выполнить docpad deploy-ghpages --env static у меня появляется ошибка:
could not read Username for ’http://github.com’: No such file or directory
Плагин не смог соединиться с моим аккаунтом на гитхабе. Чтобы показать плагину правильный путь с логином и паролем, добавим новый «remote» для репозитория. Для этого в консоли git выполним:
git remote add deploy https:// login:password@github.com/repo_owner/repo_name.git
Где « deploy » — это название удаленного репозитория. Можно выбрать любое, но переопределять «origin» я бы не советовал: у меня от этого локальная копия репозитория потеряла связь с Гитхабом.
« login » и « password » — данные вашего аккаунта на Гитхабе.
« github.com/repo_owner/repo_name.git » — путь к репозиторию проекта, в котором у вас есть права на запись. Это не обязательно должен быть ваш репозиторий, если вы коллаборатор, и у вас есть доступ на запись — вы можете деплоить туда проект.
Добавление нового «remote» c логином и паролем. Эту процедуру нужно выполнить один раз для каждого локального репозитория
А в конфиге докпада пропишем настройки для плагина:
Теперь можно выкатывать сайт:
docpad deploy-ghpages --env static
13 сентября 2014 г. Просмотров: 20865 Комментарии: 0
Полезные статьи
Многим трудно начать работать с Git. ведь не все привыкли работать с командной строкой, но именно ее лучше всего использовать при работе с репозиторием Git. И сегодня я расскажу о самом простом, так сказать Git для чайника. чтобы помочь освоиться Вам с этой системой. Git представляет собой систему контроля версий, которая позволяет в нужный момент откатиться на старую версию, если вы "наломали дров ".
С помощью Git Вы сможете размещать свой код на GitHub. BitBucket и Google Code .
Вы всегда сможете скачать код своего проекта на компьютер, изменить его и залить обратно, чтобы он стал доступен Вашим коллегам.
С чего начать?Нам понадобиться программа Git Bash. это шелл сделанный на основе Cygwin, поэтому возможно использование Unix-команд, вроде ls, cd, mkdir. Скачать его можно по следующей ссылке http://git-scm.com/ .
Настройка GitПеред началом работы нам необходимо немного настроить программу. Нам нужно установить имя пользователя и электронный адрес через командную строку:
Также нам нужно настроить параметры установок окончания строк, для Windows мы вводим две команды
На этом настройка заканчивается, можем начинать работу с проектом.
Создание проектаДопустим у нас есть папка с проектом, которую мы хотим разместить на GitHub.
1. Создаем репозиторий на сайте.
2. Инициализируем папку для Git репозитория. Это нужно сделать только один раз для каждого проекта.
3. Связываем папку с удаленным репозиторием
4. Добавляем все новые и измененные файлы
5. Помечаем все новые и измененные файлы сообщением (commit )
- вместо message вписываем сообщение, например Initial Commit. или Bugfix.
6. Закачиваем код на удаленный репозиторий
в таком виде используем только первый раз, потом используем команду без флагов
7. Можно посмотреть статус изменений, которые были сделаны.
8. Для скачивания репозитория используется команда
Второй компьютерДля использования репозитория на другом компьютере, используем следующие команды.
1. Клонирование репозитория
В результате git скачает удаленный репозиторий в новую папку test-project
2. После каких-то изменений в коде, выполняем все те же команды
Откат изменений1. Полный откат до предыдущего коммита
2. Сброс изменений в файле на версию коммита
3. Откат до установленного тега, например v1
Для более лучшего пониманию лучше ознакомиться с интерактивным туром по Git
GitHub Pages это публичные страницы пользователей, организаций и репозиториев, с бесплатным хостингом от GitHub с доменом github.io или с кастомным доменом. GitHub Pages работают на Jekyll, поэтому кроме поддержки обычного HTML они дают прекрасную возможность для хостинга сайтов на Jekyll.
Никогда не работали с GitHub Pages ранее? Есть отличное руководство от Джонатана Макглона. из него вы узнаете достаточно о Git, GitHub и Jekyll для запуска собственного сайта.
Развертывание на GitHub PagesGitHub Pages работают за счет сборки отдельных ветвей или репозиториев на GitHub. Их два типа — страницы пользователей/организаций и страницы проектов. Способы развертывания обоих типов сайтов почти идентичны, за исключением нескольких малозначительных деталей.
Наши коллеги с github создали gem github-pages. используемый для управления Jekyll и его зависимостями на GitHub Pages. Использование его в ваших проектах поможет вам при развертывании на GitHub Pages избежать каких-либо различий между версиями gem. Чтобы использовать текущую версию gem в вашем проекте, добавьте в ваш Gemfile следующий код:
Это гарантирует, что при запуске bundle install у вас будет корректная версия github-pages. Если это не работает, попробуйте простой вариант:
После чего выполняйте bundle update. Текущую версию Jekyll, используемую на GitHub, можно узнать с помощью команды github-pages versions (на данный момент это 3.1.6).
Страницы пользователей и организацийСтраницы пользователей и организаций располагаются в специальном репозитории GitHub. предназначенном только для хранения файлов GitHub Pages. Репозиторий должен быть назван по имени учетной записи. Например, репозиторий mojombo’s user page repository назван mojombo.github.io .
Содержимое ветки master вашего репозитория будет использовано для сборки и публикации сайта на GitHub, поэтому обеспечте нахождение Jekyll в этом каталоге.
GitHub Pages изначально ориентированы на работу с субдоменом username.github.io. поэтому репозитории должны называться по имени учетной записи даже при использовании кастомного домена
Страницы проектовВ отличие от страниц пользователей и организаций, страницы проектов хранятся в репозитории проекта, к которому они относятся; а сам контент сайта хранится в специальной ветви gh-pages. Контент этой ветки будет отображаться с помощью Jekyll и собранный сайт доступен в отдельном каталоге вашего поддомена на GitHub Pages, например, username.github.io/project (если вы не задали кастомный домен).
Репозиторий проекта Jekyll сам по себе является прекрасным образцом структуры ветвления — мастер ветка содержит актуальную версию Jekyll, а сайт Jekyll находится в ветке gh-pages того же репозитория.
Github Pages переписывает конфигурацию исходников сайта. поэтому если вы расположите исходники не в корневом каталоге, ваш сайт может быть собран некорректно
Структура URL страницы проектаИногда вам нужен предпросмотр сайта, перед отправкой вашего его в ветку gh-pages. Однако используемая для страниц проектов структура подкаталогов затрудняет правильное определение URL. Чтобы ваш сайт собирался правильно, используйте в ваших шаблонах переменную site.github.url .
Это даст вам возможность для локального предпросмотра сайта и одновременно правильную его генерацию из ветки gh-pages на GitHub.
Для больше информации о работе с GitHub Pages и решения проблем, смотрите раздел помощи на GitHub Pages. При более серьезных проблемах обращайтесь в поддержку GitHub .
10 февраля 2016, Марина Зайцева
В одной из прошлых заметок я рассказывала о том, какие интересные подарки можно сделать с доменом. Один из них — свой сайт. Не всегда есть силы и желание настраивать хостинг, поэтому если нужен простой статический сайт или блог, к которому можно подобрать хорошие шаблоны, советую попробовать GitHub Pages .
Для начала зарегистрируйтесь на сайте http://github.com. Это бесплатно. Чтобы было удобней работать с будущим сайтом, поставьте себе приложение GitHub для Mac или GitHub для Windows. Если вы умеете работать с репозиториями из терминала, можете ничего не ставить.
После того, как вы создали репозиторий, клонируйте его из своего аккаунта себе на компьютер — это не так сложно, как звучит ?? Фактически у вас на компьютере появится папка, в которой будут храниться копии страниц сайта.
Для этого нажмите кнопку Set up in Desktop. и у вас откроется приложение GitHub. Оно спросит, куда и под каким именем клонировать репозиторий.
У GitHub Pages есть свои простые маркдаун-страницы для сайтов, но можно поискать красивые бесплатные шаблоны других фреймворков, например, для Bootstrap .
Свой домен на GitHub PagesНе всегда хочется давать ссылку на свой сайт в виде http://username.github.io, поэтому советую направить его на красивый личный домен. Для начала зарегистрируйте домен. если его у вас еще нет ??
Для того чтобы направить свой домен на сайт в GitHub Pages, нужно указать этот домен в файле CNAME в репозитории GitHub и правильно настроить DNS-записи самого домена.
Сделаем все по порядку.
Файл CNAME в репозиторииТеперь проверим, все ли правильно получилось настроить. Зайдите в свой репозиторий и нажмите на Settings в правой панели сайта.
В разделе GitHub Pages вы должны увидеть такую строчку: Your site is published at http://blog.example.com.
Настройка DNS-записей для GitHub Pages на NIC.UAЧтобы направить свой домен на GitHub Pages, зайдите в свой кабинет на NIC.UA в раздел Мои заказы > Серверы имен (NS). поставьте галочку возле нужного домена и нажмите кнопку Изменить. В DNS-записях*:
* если в ваших DNS-записях уже есть А-запись с именем, которое вы хотите указать в новой DNS-записи CNAME (например,“@” или “blog”), сперва нужно удалить существующую А-запись.
Если ваш домен ещё не обслуживают серверами имён NIC.UA, настройте его согласно инструкции .
Если у вас возникнут дополнительные вопросы или сложности с настройкой, пишите нам в поддержку .
Первый пост блога, инструкция.
Содержание ЛирикаДавно зрела идея завести личный сайт для того, что бы туда скидывать разные решения, которые нашел в процессе программирования и хотелось бы запомнить. Да и просто иметь место, где мыслью по древу иногда можно растекаться.
Останавливало два фактора: лень и незнание веб-технологий(и отсутсвие большого желания изучать их). Использовать же современные готовые движки типа Wordpress. Blogger или LiveJournal и иже с ними не хотелось из-за их перегруженности, “вебдванольности”, не подконтрольности мне. Да и большинство функционала, который предлагают современные блоги/дневники, мне не нужно.
И вот тут в очередной раз гуляя по Github я наталкиваюсь на Github Pages. Полчаса чтения и я понимаю — это то что нужно. Суть в чем? Сервис предлагает пользователям Github бесплатный хостинг статических html-страниц для специально созданного репозитория. Простые страницы все же не блог — так какой же от сервиса толк? Там есть генератор удобный, который из пачки шаблонов и простого текста сгенерирует сайт пользователю на радость командой одной — git push — прелесть какая.
Если коротко, то вот что меня привлекло завести блог на Github Pages:Вместо чтения кучи документации по Jekyll, я нашел крутую репу poole. Как пишет ее автор:
“a clear and concise foundational setup for any Jekyll site. And it has a super minimal look… It does so by furnishing a full vanilla Jekyll install with example templates, pages, posts, and styles.”
Т.е. минимально необходимый набор для запуска блога: форкнул, поменял настройки под себя и пользуешься на здоровье. Правило “Все уже написано до нас!” работает безотказно :) .
Приступим к созданию своего блога:В принципе дальнейшие шаги уже не обязательны, если вы дошли сюда, то скорее всего у вас уже успешно работает блог. В этой секции я описываю изменения, которые я захотел сделать.
Дефолтная тема poole мне подошла практически идеально. Но захотелось изменить еще некоторые вещи.
Добавил три ссылки вверху:
Для этого я добавил в _config.yml :
Еще оказалось что с нуля нет поддержки тегов, что есть не классно. Для Jekyll есть отдельный плагин, который реализует теги, но в нашем случае это не подходит, так как тот Jekyll, который крутится на серверах Github, нельзя кастомизировать плагинами. Памятуя о правиле “Все написано до нас”, я полез в Google и спустя 5-ть минут решение найдено. Расписывать много не хочется, решение полностью скопировано, для наглядности будет удобно посмотреть diff. А именно файлы poole.css. index.html. post.html и tags.html .
Честно говоря я ни грамма не понял, что я за магию сделал, для того что бы теги заработали(что взять с С++ разработчика?), но все получилось и работает так как мне нужно. Вот, что крест животворящий свободный софт делает!
Я получил личный блог/сайт, не особо окунаясь в мир веба, могу писать разной степени полезности посты и продолжать программировать на своих любимых С/С++.
Ссылки© 2015. All rights reserved.
ivan 2015-04-10 08:45:08 UTC #1
Использовал сервис Github pages для хостинга тренировочного проекта. Пока был один сайт - проблем не было. Но сейчас появилась необходимость залить еще один. А место уже занято. Подскажите, пожалуйста, кто в курсе дела, как можно использовать сервис для нескольких проектов? Подозреваю, что это может происходить из-за моих недостаточных знаний git. Так что, если можно, в ответе не скупиться на мельчайшие подробности решения этого вопроса.
Заранее спасибо за ответ!
dmitry 2015-04-10 08:50:44 UTC #2
Положи каждый проект в папку, а в корень сайта index.html со ссылками на файлы из папок проекта. Структура папок будет выглядеть так:
Содержимое корневого index.html
dmitry 2015-04-10 08:57:11 UTC #3
ivan 2015-04-10 14:47:54 UTC #4
Круто! Спасибо большое за дельный ответ! Может быть еще кому-нибудь эта информация пригодится, т.к. сервис действительно стоящий.
maxellort 2015-04-10 17:56:56 UTC #5
jimmy_ringo 2015-04-11 14:01:40 UTC #6
Пока был один сайт - проблем не было. Но сейчас появилась необходимость залить еще один. А место уже занято.
Еще как вариант можно использовать битбакет пэйджес. Принцип тот же, что и на гитхабе: создаешь репозиторий вида nickname.bitbucket.org и пушишь в него нужные файлы, а дальше можно использовать такую же организационную структуру, как выше описал Дима. Плюс битбакета - это то, что он позволяет создавать приватные репозитории, т.е. на нем удобней хранить свой код. На гитхабе создавать приватные репозитории тоже можно, но это удовольствие там платное.
ivan 2015-05-02 11:23:41 UTC #7
Спасибо! Похоже, что штука полезная!
lena 2015-07-09 07:34:04 UTC #8
На GitHub находятся файлы, которые хочу удалить и заменить другими.
Склонировала файлы из репозитория GitHub на Git (как здесь в инструкции - https://help.github.com/articles/creating-project-pages-manually/ )
Потом удаляю файл, например index.html, командой
git rm --cached index.html
в итоге он удалился из репозитория на Git но не из GitHub
Как из GitHub поудалять?
dmitry 2015-07-09 13:04:08 UTC #9
тебе надо отправить изменения локального репозитория в удаленный репозиторий
lena 2015-07-09 14:27:12 UTC #10
а в каком формате его надо запушивать?
git push index.html - так выдает ошибку
3.jpg 672x636 155 KB
OpenShift по умолчанию предоставляет возможность использовать на своем аккаунте только три приложения. И как указывается в FAQ. для использования большего числа приложений необходимо просто зарегистрировать дополнительные аккаунты.
В качестве одного из приложений у меня выступала моя визитка, состоящая только из одной страницы. Я посчитал расточительством размещать ее на столь мощном сервере, при этом отнимая у меня возможность размещения дополнительных приложений без регистрации дополнительных аккаунтов. И решил перенести визитку на сервер GitHub.
На серверах GitHub можно размещать сайты двумя способами – во первых, это создавать репозиторий с именем username.github.com, где username это имя логина. И в этом репозитории размещаются либо готовые html-файлы, либо движок jekyll. И второй способ – это создание произвольного репозитория, в котором создается дополнительная ветка gh-pages. в которой будут размещаться сгенерированные html-файлы. Так как у меня репозиторий уже существовал (denis.evsyukov.org ), оставалось использовать только второй вариант. При этом можно было проверить, можно ли размещать на pages.github.com несколько сайтов.
В качестве движка для своей визитки я использовал Jekyll, о котором уже не раз писал на страницах своего сайта (tag:Jekyll ). А в качестве образца я использовал код движка Octopress. взяв из него сам принцип публикации.
Создаем в корне своео репозитория директорию _deploy. и добавляем ее сразу в файл .gitignore. В данной директории будет размещаться еще один git-репозиторий, с помощью которого будет осуществляться публикация сайта в отдельную ветку нашего репозитория. Итак, даем следующие команды:
В последней строке вместо #repo_url# нужно указать url-адрес своего репозитория. При этом адрес репозитория нужно брать с SSH, а не https протоколом. При этом для публикации будут использоваться ключи, а не спрашиваться каждый раз имя пользователя и пароль, что, на мой взгляд, гораздо удобнее. И по сути на этом предварительная работа закончена, репозиторий готов к публикации, осталось только изменить одну задачу в файле Rakefile .
Для начала стоит в начале файла определить несколько переменных:
Обратите внимание на то, что я использую структуру директорий из octopress, а не из классического jekyll, на мой взгляд, она более удобная для восприятия и работы. Отличия заключаются в том, что исходный код сайта размещается не в корне, а в директории source. И генерация производится не в директорию _site. а в public. Что помимо прочего позволяет использовать jekyll с целым рядом сторонних движков и веб-серверов.
И теперь определяем задачу для размещения готового сайта на сервере GitHub:
Первая задача :deploy только вызывает задачу :push. можно было бы и без нее обойтись, но именно с ее помощью можно будет в дальнейшем значительно упростить изменение метода размещения сайта. Достаточно будет прописать новую задачу и использовать ее имя в переменной deploy_default. Задача copydot призвана после генерации сайта производить копирование файлов из директории public в директорию _deploy. после чего :push заканчивает весь процесс, обновляя git-репозиторий в директории _deploy и публикуя его на сервере.
Теперь осталось только в директории source создать файл CNAME. в котором прописывается необходимый домен. Запускаем генерацию сайта и его публикацию на сервере github:
После чего остается только изменить dns-зону у нашего домена. Для домена создается A record со значением 204.232.175.78. Теперь ждем обновления зоны и наблюдаем свой рабочий сайт уже на сервере GitHub.
Таким образом на сервере GitHub можно размещать любое число сайтов. И если раньше стояли ограничения на объем используемых репозиториев, то с недавних пор и это ограничение убрали. Таким образом GitHub остается идеальным вариантом для размещения статических сайтов. А для использования rails, django и им подобным, стоит обратить внимание на OpenShift .
Похожие статьиТема давно не новая, но все все равно не могу обойти стороной такую замечательную функцию GitHub.com, как генератор статических страниц.
Суть заключается в том, что создавая репозиторий на GitHub, можно разместить исходники статического сайта и показывать их как сайт. Эта функция будет полезна для тех, кому нужно где то разместить простенький сайт или сайт-визитку и не заморачиваться об оплате хостинга.
Создание репозиторияПосле того, как создан репозиторий с генератором страниц. Клонируем проект на компьютер используя приложение Github (для Mac или Windows ) и изменяем странцу, на нужную вам.
CNAMECNAME — это специальный файл, который свяжет ваш github репозиторий с доменом. Файл не должен иметь какого либо расширения, только название «cname», а внутри имя домена. Например, example.ru или домен третьего уровня: site.example.ru.
A записьСвязываем домен с репозиторием. Необходимо в админ панели вашего доменного регистратора указать в настройках домена A-запись следующего вида:
Имя — либо ваш домен, либо поддомен и ip адрес, который свяжет вас с Github: 204.232.175.78
Такими нехитрыми действиями мы можем размещать статические сайты на Github и не платить за это ??
Описывать то, как работать с клиентом Github — не буду, т.к это тема отдельного поста. Если нужно описать общие принципы работы с данным сервисом — пиши в комменты что вы хотели бы узнать о Github.
Примечание