Podíváme se na MoinMoin - jeden z nejpopulárnějších wiki enginů.
2.3.2007 06:00 | Radim Kolář | přečteno 19573×
Před pár lety, přibližně okolo roku 2002, nastal boom wiki. Všichni byli z Wiki nadšení a každý kdo ještě ho neměl nebyl patřičně IN. Tyto nadšené doby sice už minuly, ale Wiki je stále velmi užitečným nástrojem.
Wiki je web aplikace typu groupware, která umožňuje uživatelům spolupracovat na editaci hypertextových dokumentů. Skládá se ze systému pro správu verzí, markup systému (nepoužívá se HTML) a vyhledávacího engine. Klíčovým rysem Wiki technologie je umožnit komukoliv (nebo alespoň registrovaným uživatelům) měnit obsah většiny stránek.
Wiki lze využít mnoha způsoby. Nejčastější využití je knowledge base typu WikiPedia, ale vzhledem k snadné editaci se Wiki používají i jako blogy, CMS, databáze nebo CRM. Osobně používám wiki jako poznámkový bloček kombinovaný s TODO listem a Bug/installation tracking systémem. Hezky se při tom využije jedna ze základních vlastností wiki - ukládání komentované historie změn.
MoinMoin má mnoho pokročilých vlastností. Stránky lze hierarchicky uspořádat, používat šablony a kategorie, full text search, sledovat úplnou historii změn, generovat grafy počtu změn a přístupů. Markup jazyk podporuje renderování tabulek včetně custom HTML atributů, syntax highlighting, smajlíky, makra, attachmenty, inline HTML, generování slide show, plná podpora Unicode a I18N, export změn ve formě RSS, rozesílání změn emailem, WYSIWYG editace, XMLRPC podpora, ACL listy, Antispam systém, podpora DocBook a ReStructuredText.
MoinMoin je naprogramováno v jazyce Python, což je pro někoho dobrá a pro někoho zase špatná zpráva. Já osobně jsem si před léty MoinMoin nainstaloval jelikož jsem příznivcem programovacího jazyka Python. Jelikož je Python multiplatformní, MoinMoin běhá i pod Windows. Ačkoliv minimální podporovanou verzí je Python 2.3, doporučuji minimálně díky bugfixům a memory leakům interpretru nainstalovat Python 2.4.4.
Administrátory jistě potěší, že kromě Pythonu už není nic jiného zapotřebí. Není potřeba ani PHP, ani Apache, ani SQL databáze. MoinMoin umí běžet i v prostředí twisted, mod_python, CGI, FastCGI, WSGI, ale nejrychleji běhá v jako standalone aplikace, což se i nejsnáze konfiguruje.
Instalaci lze provádět i z balíčku, pokud pro vaše distro existuje, ale vzhledem k rychlosti aktualizace většiny dister (pravda jsou i vyjímky jako FreeBSD nebo Gentoo) je lepší instalovat ručně, abychom měli rychlejší přístup k bugfixům.
K instalaci je použit standardní Python modul distutils. Osobně instaluji s těmito přepínači:
python setup.py --quiet install --install-data='/usr/local' --record=install.log
Druhým krokem je vytvoření instance. To už je trošku složitější, podívejte se do instalačního návodu V našem případě to bude vypadat takto:
mkdir -p /usr/local/www/wiki cd /usr/local/www/wiki cp -R /usr/local/share/moin/data . cp -R /usr/local/share/moin/underlay . cp /usr/local/share/moin/config/wikiconfig.py . cp /usr/local/share/moin/server/moin.py . cp /usr/local/share/moin/server/moin .
Pro adresář instance je vhodné nastavit restriktivnější přístupová práva, neboť kromě stránek (což jsou veřejná data) obsahuje i databázi registrovaných uživatelů.
chown -R www-data /usr/local/www/wiki chmod -R u+rwX /usr/local/www/wiki chmod -R g-w /usr/local/www/wiki chmod -R o-rwx /usr/local/www/wiki
Počáteční konfigurace je jednoduchá. V souboru /usr/local/www/wiki/moin, který slouží ke startování / zastavování wiki, doplňte dráhu k moin.py takto:
# Add the path to moin.py directory sys.path.insert(0, '/usr/local/www/wiki')
Standalone server se konfiguruje v souboru moin.py. Upravte cestu ke konfiguraci wiki stejně jako v předchozím prípadě a nastavte cestu k statickým komponentům docs = '/usr/local/share/moin/htdocs'. V moin.py lze nakonfigurovat port a uživatele pod kterým wiki server běží.
Konfigurace vlastního wiki je v souboru wikiconfig.py. V konfiguraci není třeba provádět moc změn. Většinou změníte jen jméno wiki a případně startovací stránku. Je potřeba použít unicode Stringy (prefix u).
sitename = u'Retro Wiki' page_front_page = u"Start".
Nejdůležitější část konfigurace se nachází v sekci Critical setup a obsahuje nastavení datových adresářů v našem případě bude následující
data_dir = data_dir = '/usr/local/www/wiki/data/' data_underlay_dir = '/usr/local/www/wiki/underlay/'
Čas od času se změní formát datových souborů a kromě aktualizace vlastního MoinMoin software je potřeba překonvertovat i stávající data. Od verze MoinMoin 1.5.3 se data konvertují snadno. Zastavte wiki server a proveďte následující příkazy
sudo -u www-data sh moin --config-dir=/usr/local/www/wiki migration data
Migrace z verzí starších než 1.5.3 je složitější, podrobnější informace se dozvíte v souboru docs/README.migration.
Wiki server se spouští scriptem /usr/local/www/wiki/moin s parametrem start a zastavuje obdobně s parametrem stop. Je vhodné zajistit jeho spuštění při startu systému.
Většina administrátorů preferuje wiki zaintegrované do jmenného prostoru serveru. (Lepší GoogleRank, ušetří se jedna IP adresa a některé firewally nepovolují HTTP komunikaci na jiném portu než 80. Nejjednodušší je použít proxy modul z Apache. Podrobnosti o nastavení najdete zde.
MoinMoin, ostatně jako většina wiki, se používá snadno. Hlavním problémem začínajících uživatelů je vypořádat se s markupem stránek, který se liší podle použitého wiki engine. MoinMoin uživatelům v tomto pomáhá. Jednak je při editaci zobrazeno kratičké připomenutí základní syntaxe (dokonce i v češtině, pokud ji máte nastavenou v prohlížeči) a od verze 1.5 lze použít GUI (WYSIWYG) editor stránek, který sice neumí všechny markup finesy, ale pro většinu editací plně postačí. Vytváření nových stránek je také snadné, stačí zadat jméno požadované stránky do browseru jako URL a MoinMoin nabídne její vytvoření, při kterém je možné použít některou z připravených šablon.
MoinMoin používá tradiční wiki CamelCase linky. Každé slovo CamelCase slovo se automaticky stává hyperlinkem na stejnojmennou stránku. Pokud chcete CamelCase slovo aniž by se stalo linkem je třeba vložit do slova nějakou prázdnou formátovací sekvenci např. Camel``Case. Jména stánek jsou case-sensitive.
V MoinMoin se pro hypertextové odkazy používají hranaté závorky, které lze u CamelCase či URL odkazů vynechat. Odkaz na wiki stránku se píše do uvozovek ["stranka"], u externích odkazů link text následuje URL: [http://moinmoin.wikiwikiweb.de/ Domovská stránka MoinMoin] se zobrazí jako Domovská stránka MoinMoin.
MoinMoin podporuje také InterWiki linky. Před jméno stránky stačí napsat jméno Wiki oddělené dvojtečkou např. WikiPedia:Linux. Jména ostatních wiki a jejich URL jsou uloženy v adresáři instance v souboru data/intermap.txt, který v současné době obsahuje 131 záznamů.
Nadpisy se zapisují pomocí = t.j. = nadpis první úrovně =, == nadpis druhé úrovně == atd. Co se týče ostatního nejpoužívanějšího markupu, kurzíva se píše do ''dvojitých uvozovek'' a tučný text do '''trojitých'''. Docela hezkým trikem je zapisovat email adresy pomocí makra MailTo [[MailTo(hsn AT SPAMFREE sendmail DOT cz)]], které je pak ukáže jen přihlášeným uživatelům.
MoinMoin se dá velice dobře nejen skinovat, ale také rozšiřovat pomocí pluginů a maker. Popis tvorby těchto rozšíření však přesahuje rozsah tohoto článku a tak se alespoň můžete inspirovat v galerii screenshotů, kde najdete obrázky z několika známých wiki používající MoinMoin engine.
Dalším známým wiki enginem zejména díky projektu WikiPedia je MediaWiki. MediaWiki je zaměřeno zejména na větší projekty s důrazem na výkon a škálovatelnost. MoinMoin nebylo navrženo pro wiki obsahující statisíce stránek, osobně bych MoinMoin nepoužil pro wiki čítající více než několik málo tisíc stránek, většina wiki je však mnohem menší, průměrná wiki obsahují maximálně pár set stránek. Srovnání MediaWiki VS MoinMoin je k dispozici zde a zde.
Jak již jsem napsal v úvodu, Wiki (zejména doupravované) se dají použít pro široké spektrum web aplikací na kterých není použití wiki engine na první pohled vůbec poznat. MoinMoin se snadno upravuje a data jsou uložena v jednoduchém formátu, takže je není problém do tohoto formátu vyexportovat.