О blohg

Blohg - это блоговый движок, написанный на Python.

В основе - Flask, Jinja2, docutils, Mercurial. Система комментариев внешная, от disqus.

Преимущества для меня:

  • reStructuredText - больше возможностей, чем например у Markdown.
  • Mercurial - удобство публикования постов - edit, hg commit, hg push (но, на текущий момент, нет возможности публиковать из браузера, думаю реализовать это).

Установка

Как установить, расписывать не люблю, но в gentoo это делается легко (Rafael G. Martins - автор blohg - один из разработчиков gentoo) (пока смотрел его сайт, увидел много вкусностей, внедрю и опишу):

$ emerge blohg

Использование

Создание репозитория:

$ blohg initrepo --repo-path my_blohg

Настраиваем параметры в config.yaml, настраиваем шаблоны (в директории templates).

Пишем посты (в директории content/post), создаем аттачи (в директории content/attachments).

Коммитим изменения.

Развертывание

Клонируем репозиторий на удаленный сервер:

$ hg clone my_blohg ssh://user@yourdomain.tld/path/to/my_blohg/

В качестве веб-сервера решил использовать lighttpd.

Конфиг mod_fastcgi:

fastcgi.debug = 0

fastcgi.server = ("/" =>
    (
       "blohg" => (
        "socket" => "/tmp/blohg-fcgi.sock",
        "bin-path" => "/var/www/blohg.fcgi",
        "check-local" => "disable",
        "fix-root-scriptname" => "enable"
       )
    )
)

alias.url = (
    "/static/" => "/var/www/blog/static"
)

url.rewrite-once = (
    "^(/static.*)$" => "$1",
    "^(/favicon.ico.*)$" => "/static$1",
)

Содержимое /var/www/blohg.fcgi (нужен модуль flup):

#!/usr/bin/python
from flup.server.fcgi import WSGIServer
from blohg import create_app

if __name__ == '__main__':
    application = create_app('/path/to/my_blohg')
    WSGIServer(application).run()

Доработки

В посте про мой сервер мне захотелось сделать зачеркнутый текст, но reStructuredText к сожалению такое не поддерживает. Пришлось править docutils, патч. Думаю попробовать перенести эту функциональность в blohg.

UPD: Сделано, changeset.

UPD2: Сделано правильно. Существует стандартный путь определить новую роль, которая только добавляет класс к тэгу <span>:

.. role:: strikeout
   :class: strikeout

Или можно обернуть нужный текст в контейнер с указанным классом:

.. container::
   :class: strikeout

Я форкнул blohg на http://bitbucket.org, для внесения своих изменений: форк. Точнее форкнул не проект самого Рафаэля, а пользователя Ry4an, так как Рафаэль хостит репозиторий у себя.

В планах прикрутить у себя rst-resume.

blog comments powered by Disqus