WIKI

SEOUL‍
wiki:sw:ikiwiki

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
wiki:sw:ikiwiki [2023/06/14 16:19] – 제거됨 - 바깥 편집 (Unknown date) 127.0.0.1wiki:sw:ikiwiki [2025/01/13 02:36] (현재) clockoon
줄 1: 줄 1:
 +ikiwiki
 +==========
 +
 +#software #wiki
 +
 +## 개요
 +이 문서는 (아마도) ikiwiki에 대한 거의 유일한 한글 정보를 기록하기 위해 작성되었다. 즉, 혹시나 나처럼 기존 [[tech:위키]]나 [[tech:블로그]]나 [[tech:cms]]에 불만족을 느끼고 대안을 찾다가 흘러흘러 ikiwiki를 알게 되고, 사용해보고 싶은 사람을 위해 경험을 정리한다.
 +
 +## 장단점
 +
 +### 장점
 +
 +- plain text 기반이다. 즉 이후 어떠한 시스템으로 migration하는 것이 매우 쉽다.
 +- [[git]] 등 외부 [[tech:rcs]] 기반이다. 즉 future-proof한 컨텐츠 관리 방식이며, 별다른 어플이나 웹 인터페이스가 필요하지 않다.
 +  - 이 특징 덕분에, (git 기준) 로컬에서 작업 - commit - push - 퍼블리시 라는 워크플로우가 가능하다. 기존의 여러 위키 엔진은 철저히 웹 기반의 관리를 기준으로 하므로, '일단 편집하던 내용을 잠깐 놔두고 나중에 다시 완성시키는' draft라는 개념이 부족했다.
 +- 플러그인을 통해 다양한 확장자와 포멧을 지원한다. 역시나 future-proof하다.
 +
 +### 단점
 +
 +- 컴파일 시간이 오래 걸린다. 대부분의 글들이 '끔찍한' 컴파일 시간에 대해 언급하고 있다. 
 +
 +## 설치법
 +기본적인 (perl) cgi를 지원하는 서버에서 어렵지 않게 설치 가능하다. Shared hosting 환경에서도 가능한지는 테스트해보지 않았다. 요새는 무료 cloud server를 많이 제공하므로, 그냥 서버 세팅해서 써도 무방할 듯.
 +
 +아래 내용은 [[tech: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: 페이지 별로 다른 [[tech:css]] 파일을 사용하고자 할 때 지정한다. 단 wikilink 형식으로 지정하므로 외부 스타일시트를 사용할 수는 없다. 또한 [[#htmlscrubber]] 플러그인을 사용할 경우 이 내용은 무시된다.
 +- script: 페이지 별로 다른 [[tech: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 피드로 묶는다. [[tech:팟캐스트]] 페이지 등을 생성할 때 유용하다.
 +- 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는 너무 오래된 소프트웨어이기 때문에, 적지 않은 플러그인들이 예컨대 [[tech:github]] 같은 저장소에 올려져 있지 않고 흩어져 있다.
 +
 +### 설치법
 +
 +### 내장 플러그인
 +
 +- meta
 +
 +## 링크
 +- [공식 사이트](https://ikiwiki.info/)
 +---- struct data ----
 +pageinfo.status      : Draft
 +----