vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Почему после долгих и продолжительных раздумий я выбрал ikiwiki? Потому что:

1. На мой взгляд ikiwiki обладает главным свойством, требуемым для веб-приложений на домашней машине - не занимает ресурсов, когда не используется.
2. Второй - то что оно устойчиво к кратковременным всплескам посещаемости, связанным с публикацией ссылок на посещаемых ресурсах. Потому что для чтения это - статика.
3. Обладает уже готовой возможностью пускать пользователей по их аккаунтам во всяких прочих системах ЖЖ, Гугль, FB etc. Это очень полезно для маленького, но публичного сайта. Чтобы не заставлять всех желающих регистроваться на yet another сайте.
4. Работает с произвольными системами версионирования.
5. Хорошая поддержка в Debian.
6. Как это ни странно для современного OSS проекта, в команде есть кто-то кто имеет представление об информационной безопасности.

Недостатки у ikiwiki тоже есть.

1. Отсутствие внятной introductory documentation. (восполнить этот недостаток отчасти призван этот пост)
2. Я пока так и не понял как кастомизировать внешний вид сайта. Для сайта вида "личная записная книжка" это и не важно.
3. Внятного руководства "что делать, если что-то не работает" тоже нет.


Шаг первый, установка

При установке пакета ikiwiki внимательно изучите список Suggests. Потому что в нем есть множество пакетов. которые необходимы для работы тех или иных плагинов ikiwiki. Вообще-то в багрепортах давно висит пожелание вынести эти плагины в отдельные deb-пакеты, чтобы можно было зависимости писать в Depends. Но пока до этого не дошло.

Мне для подключения всего лишь двух плагинов - search и attachment понадобилась ручная установка для первого - xapian-omega и libsearch-xapian-perl, для второго - libfile-mimeinfo-perl.
Что характерно, web-сервера с поддержкой cgi в зависимостях вообще нет. И это правильно. Вообще-то наличие web-сервера на машине где стоит ikiwiki совершенно необязательно. Можно все делать в оффлайне, а выпихивать на сервер rsync-ом. Но наша задача сейчас не в этом. А в том, чтобы получить wiki, которую можно редактировать через браузер.

Поэтому web-сервер, умеющий исполнять cgi нам понадобятся. Впрочем любители nginx могут воспользоваться этим советом.

Конфиг виртуального сайта для apache2 у меня выглядит так:
<VirtualHost *:80>
        ServerAdmin webmaster@wagner.pp.ru
        ServerName wiki.wagner.pp.ru
        
        AddDefaultCharset utf-8 
        AddHandler cgi-script .cgi      
        DocumentRoot /var/www/wiki
     
        ErrorLog ${APACHE_LOG_DIR}/wiki_error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/wiki_access.log combined
</VirtualHost>


Настройка прав доступа
По некоторому размышлению я завел для wiki отдельного пользователя. Благо ikiwiki для операций, выполняемых через web-интерфейс или post-commit-хуки системы версионирования, имеет suid-врапперы, так что можно не делать директорию с данными writable для того юзера, от которого работает web-сервер. Но делать это от рута - тоже соврешенно лишнее.

Этому пользователю должны быть доступны на запись каталоги
1. Тот, откуда раздается web-сервером сгенерированный html (в вышеприведенном конфиге /var/www/wiki)
2. staging area, в котором имеется рабочая копия wiki, выписанная из системы управления версиями откуда генерируется html (я использую эту же директорию в качестве домашней для юзера wiki)
3. Репозиторий системы версионирования.

Поскольку в качестве системы версионирования для вики я использовал subversion (git, bazaar, mercurial и monotone - поддерживаются) и не только держу репозиторий на той же машине, но и работаю на ней же локально, соответственно и web-интерфейс, и я сам используем протокол file://, мне потредовалось чтобы в ту же группу что и юзер wiki, входил я, любимый, и [personal profile] irene_dragon. Но если у вас доступ в репозиторий осуществляется по протоколам, которые не завязаны на локальных системных пользователйе, вам этого не надо.

(Варианта в котором местоположение репозитория и машина, где из хранящихся в репозитории файлов генерируется html не совпадают, я пока не рассматривал).

Конфигурирование ikiwiki

Читаем файл /etc/ikiwiki/auto.setup и обнаруживаем что он содержит не совсем то, что нам надо.
Копируем его в скажем ~wiki/wiki.setup, отрываем всю интерактивность (в смысле вызовы IkiWiki::Setup::Automator::ask
и вместо этого вписываем все что надо в вызов Ikiwiki::Setup::Automator->import.

После этого запускаем
sudo -u wiki -H ikiwiki --setup wiki.setup

и, если мы не наглючили в конфигурации, обнаруживаем, что случилось следующее:
1. В систему контроля версий зачекинен модуль для будущей wiki
2. Создана staging area.
3. в файле указанном в опции dumpconfig содержится куда более развесистый конфиг, чем тот что был у нас иззначально.


Вот этот конфиг мы теперь можем подредактировать, добавив в первую очередь нужные плагиныв список add_plugins.
и опции их конфигурации ниже.

после каждого изменения конфига не забываейте выполнить sudo -u wiki ikiwiki --setup файлконфигурации

Полагаться на websetup не рекомендую, с конфигом - проще.
Заполнение wiki
Начиная с этого момента можно пытаться работать через web-интерфейс. Но очень рекомендую держать под рукой
рабочую копию выписанную из системы управления версиями. Поскольку, например, для перемещения файлов из одного каталога в другой в web-интерфейсе средств не предусмотрено.

Опять же, web-интерфейс не предлагает, например средств для создания файла robots.txt, в то время как зачекинив его в систему управления версиями мы получаем сразу то, что надо.

Date: 2012-03-05 08:45 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
(Варианта в котором местоположение репозитория и машина, где из хранящихся в репозитории файлов генерируется html я пока не рассматривал).
Не хватает слов.

Date: 2012-03-05 08:47 am (UTC)
From: [personal profile] vikarti_anantra
я правильно понимаю что вариант использования ее без ее веб-интерфейса- является одним из штатных?

и можно редактировать текст страниц ручками в локальном редакторе + потом результирующий HTML - выкладывать куда-то, где в принципе веб-сервер не поддерживает динамику?
(да - заплатив за это интерактивностью например)


Date: 2012-03-05 08:56 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
ikiwiki-mode для Emacs с preview есть?

Date: 2012-03-05 08:57 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
А корректность ссылок должен отслеживать скрипт.

Date: 2012-03-05 08:58 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Хотя нет. Скрипт способен проверить работоспособность ссылки, но не её корректность.

Date: 2012-03-05 09:07 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Ему и не надо. Это будешь понимать ты. Если скрипт сможет выдать список висящих ссылок внутри вики — это будет список todo (и контроль опечаток).

Date: 2012-03-06 01:18 pm (UTC)
From: [personal profile] vikarti_anantra
вот интересно - по ее внутреннему устройству документация есть или только исходники?
пример вопроса: TMPL_VAR URL в шаблоне тупо не работает - значение url из конфига - игнорируется
на ikiwiki.info быстро ответ найти не вышло

быстрее - оказалось Render.pm поправить на предмет ввода MYURL с $config{'url'}
+ исправить page.tmpl c использованием новой переменной
это - правильный подход в данной ситуации или все же нет?

с другой стороны...мне нравится. хотябы тем что поправить оказалось просто и код - более менее читаемый(притом что Perl я очень давно последний раз видела). круто.


Date: 2012-03-05 08:49 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Может здесь нужен тег wiki? Или ikiwiki?

Date: 2012-03-05 08:55 am (UTC)
ext_605364: geg MOPO4 (Default)
From: [identity profile] gegmopo4.livejournal.com
Кстати, я тебе уже сообщал когда-то о ошибке в тегах. Сейчас вижу ещё две — «комьютерное» и «фвнтастика».

про внешний вид

Date: 2012-03-05 12:27 pm (UTC)
From: [identity profile] ladykosha.livejournal.com
Насколько я понимаю, это про внешний вид:

* Ikiwiki uses many templates for many purposes. By editing its templates, you can fully customise its appearance, and avoid duplicate content - http://ikiwiki.info/templates/
* CSS - http://ikiwiki.info/css/
* Плагин theme - http://ikiwiki.info/plugins/theme/

Re: про внешний вид

Date: 2012-03-05 04:04 pm (UTC)
tobez: (Default)
From: [personal profile] tobez
Там не Template Toolkit, а вовсе даже HTML::Template (гораздо корявее, имхо, чем TT, но работает).

А пошаговое описание - создаем в своем корне каталог templates/, копируем туда стандартный теплейт из поставки, который собираемся менять, и меняем. Полная документация конечно бы не помешала, но и do it by example вполне прекрасно работает. Каталог templates/ в корне работает похоже на unionfs, налагаясь на стандартный templates/.

Примеры довольно радикального изменения внешнего вида, к которым я сам приложил шаловливые ручки
(просьба не пинать за корявый дизайн): http://www.bsd-dk.dk/ , http://blog.tobez.org/

Date: 2012-03-05 12:47 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
1. Первая ссылка -- битая...

2. Ну, почему, почему оно использует какой-то третюю ни с чем не совместимую wiki нотацию! Если бы оно еще нотацию mediawiki в каком-то минимальном объеме умело, перевел бы на него все имеющиеся. А так...

Date: 2012-03-05 01:18 pm (UTC)
ext_613079: Default userpic (Default)
From: [identity profile] shaplov.livejournal.com
Ага... это хорошо... рекомендую добавить это в обзор. потому как люди в основной своей массе хотят mediawiki-подобную разметку.

В рамках оффтопика.

Date: 2012-03-05 02:49 pm (UTC)
From: [identity profile] the--listener.livejournal.com
В френдленте хорошо получилось.
- Почему я голосовал за Прохорова
- Почему я выбрал Путина
- Почему я выбрал Прохорова
- Почему я выбрал ikiwiki

Не согласен с выбором (wackowiki - это наше все), но полностью одобряю.

Date: 2012-03-06 08:22 am (UTC)
From: [identity profile] t-mike.livejournal.com
хм... раз wiki отдельный vhost и есть отдельный юзер wiki, то имеет смысл прописать SuexecUserGroup
имхо

Date: 2021-04-08 07:54 pm (UTC)
From: [identity profile] http://v3625.ml/blog/
Витус, а как вы тогда решили проблему UTF-8 в почтовых уведомлениях от движка? Вот отсюда патч накладывали или как-то по-другому: https://ikiwiki.info/todo/passwordauth:_sendmail_interface/

P.S. Вообще, жаль, что забросили, интересная, вроде, штука.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

July 2025

S M T W T F S
  12345
6789 1011 12
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 15th, 2025 12:51 pm
Powered by Dreamwidth Studios