Установка Hakyll на Debian
by Antony Pavlov on 2014-01-07
Введение
Ниже описывается методика установки и использования системы генерации статических сайтов Hakyll на ЭВМ под управлением Debian Linux.
См. также статью про установку Hakyll для Windows.
Установка простая: libghc-hakyll-dev
Для Debian существует пакет libghc-hakyll-dev
. Установим данный пакет:
aptitude install libghc-hakyll-dev
Создадим каркас для минимального сайта:
$ cp -a /usr/share/hakyll/example/ my-site
Теперь можно перейти к разделу Развёртывание минимального сайта
Установка непростая: cabal
Будем действовать длинным и нудным путём — при помощи cabal.
Замечание 1
Использование cabal потребует скачивания значительного числа пакетов и их пересборки (как в Gentoo) так что запаситесь терпением.
Замечание 2
Установку пакетов cabal производит по умолчанию в домашний каталог пользователя, то есть пакеты (и в частности hakyll) становятся доступны только пользователю запускавшему cabal.
При обновлении системных библиотек или компилятора ghc возможно нарушение работы Hakyll — в этом случае придётся перезапустить процедуру установки при помощи cabal. В случае совсем капитального обновления для возвращения Hakyll работоспособности возможно придётся стереть временные файлы, которые создавались для работы Haskell-программ. Например, каталоги ~/.cabal
и ~/.ghc
.
Начальная установка на минимальный Debian
Установим компилятор Haskell, систему пакетирования программ на языке Haskell — cabal, а также alex и happy, чтобы не собирать их при помощи cabal.
# aptitude install ghc cabal-install libz-dev alex happy
Обновим список пакетов и установим Hakyll:
$ cabal update
$ cabal install hakyll
После окончания работы cabal install
(эта работа может потребовать десятков минут) нам будет доступен исполняемый файл
Создадим каркас для минимального сайта:
$ ~/.cabal/bin/hakyll-init my-site
# Развёртывание минимального сайта # {#mysite}
Собираем исполняемый файл для генератора сайта:
$ cd my-site $ ghc –make site.hs
Для создания новой записи достаточно создать новый файл
```posts/yyyy-mm-dd-NAME.markdown```, где
```yyyy``` --- год, ```mm``` --- месяц, ```dd``` --- день
создания записи, а ```NAME``` --- короткое имя записи,
например, ```2013-12-23-linux-screen-capture.markdown```.
Расширение ```markdown``` можно сократить до двух букв ```md```.
Первые строчки файла должны содержать заголовок вида:
Для конвертации страниц в формате Markdown в html-страницы
Hakyll использует программу [pandoc](http://johnmacfarlane.net/pandoc).
Толковое описание диалекта Markdown, используемого в pandoc,
[тут](http://johnmacfarlane.net/pandoc/demo/example9/pandocs-markdown.html).
Для генерации статического сайта необходимо выполнить
$ ./site build
сгенерированный сайт окажется в каталоге ```_site```, откуда его
можно перебросить в место постоянной дислокации.
Hakyll можно запустить в режиме web-сервера для просмотра
сгенерированного сайта:
$ ./site server
По умолчанию сервер будет доступен по адресу [http://localhost:8000](http://localhost:8000).
# Примеры сайтов на Hakyll #
Примеры сайтов на Hakyll [тут](http://jaspervdj.be/hakyll/examples.html).
На что стоит обратить внимание:
* [http://blog.clement.delafargue.name/](http://blog.clement.delafargue.name) [github sources](https://github.com/divarvel/blog)
* http://www.skybluetrades.net/
git clone https://github.com/divarvel/blog cd blog ghc –make hakyll.hs ./hakyll build ./hakyll server
ctrl-c
export EDITOR=vi
bash ./new_post.sh Post name > test2
mv posts/.2013-12-20-test2.md posts/2013-12-20-test2.md
./hakkyl rebuild ./hakyll server
# Настройка web-сервера #
Предположим, что статический сайт, который генерирует
hakyll мы будем размещать на выделенном сервере.
Создадим для этого на сервере пользователя blog,
в домашнем каталоге которого и будем размещать сайт.
## Использование rsync ##
Будем использовать rsync для быстрого копирования сгенерированного
сайта на web-сервер. Предположим, что мы находимся в каталоге
с исходными текстами нашего блога и только что сгенеририровали
статический сайт в каталоге ```_site```. Переправим содержимое
```_site``` в одноимённый каталог в домашнем каталоге пользователя
blog на web-серевере ```web.server.to```. Используем rsync
для ускорения передачи данных:
rsync -v -az -e ssh –delete _site/ blog@web.server.to:_site
## Использование apache ##
Настроим web-сервер apache для хостинга нашего блога.
В каталог ```/etc/apache2/conf.d``` добавляем файл ```hakyll_blog.conf```
со следующим содержимым:
Alias /myblog /home/blog/_site
и перезапускам apache.
Теперь при попытке обратиться по адресу ```http://web.server.to/myblog```
в браузере должна показываться главная страница блога.
# Примечания #
NB: В Debian имеется пакет ```cabal-debian```.
NB: При использовании cabal для установки исполняемых программ (alex и happy) возможно стоит выполнить
$ echo “export PATH=$PATH:~/.cabal/bin” >> .bashrc ```` и перелогиниться.