WIKI

SEOUL_still under construction‍
wiki:sw:ikiwiki
pageinfo
status
Draft

<!DOCTYPE markdown>

ikiwiki_kr

개요

이 문서는 (아마도) ikiwiki에 대한 거의 유일한 한글 정보를 기록하기 위해 작성되었다. 즉, 혹시나 나처럼 기존 위키블로그cms에 불만족을 느끼고 대안을 찾다가 흘러흘러 ikiwiki를 알게 되고, 사용해보고 싶은 사람을 위해 경험을 정리한다.

장단점

장점

  • plain text 기반이다. 즉 이후 어떠한 시스템으로 migration하는 것이 매우 쉽다.
  • Git 등 외부 rcs 기반이다. 즉 future-proof한 컨텐츠 관리 방식이며, 별다른 어플이나 웹 인터페이스가 필요하지 않다.
    • 이 특징 덕분에, (git 기준) 로컬에서 작업 - commit - push - 퍼블리시 라는 워크플로우가 가능하다. 기존의 여러 위키 엔진은 철저히 웹 기반의 관리를 기준으로 하므로, '일단 편집하던 내용을 잠깐 놔두고 나중에 다시 완성시키는' draft라는 개념이 부족했다.
  • 플러그인을 통해 다양한 확장자와 포멧을 지원한다. 역시나 future-proof하다.

단점

  • 컴파일 시간이 오래 걸린다. 대부분의 글들이 '끔찍한' 컴파일 시간에 대해 언급하고 있다.

설치법

기본적인 (perl) cgi를 지원하는 서버에서 어렵지 않게 설치 가능하다. Shared hosting 환경에서도 가능한지는 테스트해보지 않았다. 요새는 무료 cloud server를 많이 제공하므로, 그냥 서버 세팅해서 써도 무방할 듯.

아래 내용은 debian 기준으로 설명.

Apache2

ikiwiki는 cgi 모듈을 사용한다. 다만, 기본으로 활성화된 mpm 모듈을 사용할 경우 cgid로 대체되므로, 다음과 같이 모듈을 비활성화한다.

sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo a2enmod cgi

ikiwiki

ikiwiki는 Debian / Ubuntu 패키지 형태로 되어 있으므로, apt 명령어를 통해 설치할 수 있다. 설치 후에는, 기본적인 setup script를 사용한 후 설정을 바꾸는 방식을 추천.

ikiwiki --setup /etc/ikiwiki/auto.setup

설정

문법

meta

페이지에 메타데이터를 삽입하기 위한 문법이며, [[sw:meta_field_value_param_n_value_n]] 형태로 사용햔다. 하나의 블록 안에 하나의 field만 입력 가능하며, 여러 field를 지정하고 싶다면 여러 블록을 사용해야 한다.

지원하는 field는 다음과 같다.

  • title: 문서 제일 위에 나타나는 title을 변경한다. 기본적으로는 page name과 동일하다. sortas param은 페이지 목록을 정렬할 때 사용할 key를 지정한다.
  • license: 페이지 라이센스를 지정한다. value로 위키 마크업을 사용 가능하다.
  • author: 페이지의 저자를 지정한다. sortas param은 페이지 목록을 정렬할 때 사용할 key를 지정한다.
  • authorurl: 페이지 저자의 url을 지정한다.
  • description: 페이지의 설명 / 요약을 지정한다. 이 값은 html head 영역에 기재되며, map 등을 사용할 경우에 나타난다.
  • keywords: 페이지를 요약하는 키워드를 지정한다. 이 값은 html head 영역에 기재되며, 글자 / 숫자 / 공백 / 쉼표만을 허용한다. 예상과 달리 이 정보는 검색 엔진에서 사용되지 않는다.
  • permalink: ikiwiki에서 자동으로 생성하는 주소와 다른 링크를 사용하고 싶을 때 지정한다.
  • date: 페이지를 생성한 날짜를 지정한다. 이 값은 html meta 헤더에 기재되며, 내부 데이터베이스를 수정한다.
  • stylesheet: 페이지 별로 다른 css 파일을 사용하고자 할 때 지정한다. 단 wikilink 형식으로 지정하므로 외부 스타일시트를 사용할 수는 없다. 또한 htmlscrubber 플러그인을 사용할 경우 이 내용은 무시된다.
  • script: 페이지 별로 다른 javascript 파일을 적용하고자 할 때 지정한다. 단 wikilink 형식으로 지정하므로 외부 파일을 사용할 수는 없다. HTML4 및 HTML5의 defer / async 옵션을 추가 parameter로 지정할 수 있다(예: [[sw:meta_script_somescript_defer_async]]).
  • openid: 외부 OpenID 서버와 통신할 수 있는 링크를 적용한다.
  • link: 다른 페이지로의 링크를 지정한다. 혹은 html link 태그를 지정한다(예: [[sw:meta_link_url_rel_value]]). htmlscrubber 플러그인을 사용할 경우 후자의 내용은 무시된다.
  • enclosure: 특정 파일 링크를 RSS / Atom 피드로 묶는다. 팟캐스트 페이지 등을 생성할 때 유용하다.
  • redir: 다른 페이지로의 리다이렉트를 지원한다. 기본 문법은 [[sw:meta_redir_otherpage]]이다. 만약 특정 시간 후 이동하도록 딜레이를 주고 싶다면 "delay=seconds" 형태로 옵션을 지정하면 된다. 외부 url을 지정하는 것도 가능하지만, htmlscrubber 플러그인을 사용할 경우 이 내용은 무시된다. 추가로 #ANCHOR 문법을 사용하여 특정 헤딩을 지정할 수 있다.
  • robots: html robots 태그 옵션을 지정한다. index / noindex / follow / nofollow 옵션을 지정할 수 있다. 기본값은 “index, nofollow”이다.
  • guid: 페이지에 유니크한 ID를 지정한다. 기본값은 페이지 URL 값이다. 페이지를 이동할 가능성이 있을 때 유용하다.
  • updated: 페이지 수정 시간을 임의로 지정한다. 예컨대 블로그 페이지를 수정할 일이 있을 때, RSS 상에서 순서를 바꾸고 싶지 않을 때 유용하다.
  • name: HTML meta 태그의 name 속성을 지정한다. htmlscrubber 플러그인을 사용할 경우 이 내용은 무시된다.

이 외에 다른 field를 사용할 경우, 단순히 HTML meta 태그에 해당 내용이 추가된다. 만약 field의 이름이 특수할 경우, [[sw:meta_name_value_content_value]] 형태로 지정해야 한다.

플러그인

ikiwiki는 DokuWiki와 비슷한 철학을 갖고 있다. 즉 코어는 굉장히 기본적인 기능만을 제공하고, 추가적인 기능은 플러그인으로 구현하게 된다. 몇몇 플러그인은 내장되어 있다. 안타깝게도 ikiwiki는 너무 오래된 소프트웨어이기 때문에, 적지 않은 플러그인들이 예컨대 github 같은 저장소에 올려져 있지 않고 흩어져 있다.

설치법

내장 플러그인

  • meta
wiki/sw/ikiwiki.txt · 마지막으로 수정됨: 2023/06/14 16:19 저자 clockoon