[Ubuntu] Dokuwiki 데이터 이관작업

[Ubuntu] Dokuwiki 데이터 이관작업
Photo by Maarten van den Heuvel / Unsplash

사용환경

  • OS : Ubuntu 22.04 LTS (Jammy Jellyfish)
  • Apache : 2.4.52
  • PHP : 8.1.2
  • Dokuwiki : Release 2024-02-06a "Kaos"

A. 시작하기 전에..

대학생(대략 2009년?) 때 리눅스를 메인 OS로 전환하기 시작하면서 처음에는 윈도우즈와 리눅스 듀얼부팅을 하고, 윈도우즈 D드라이브를 리눅스와 같이 사용하면서 기존의 디렉토리+파일 구조로 개인데이터를 관리했었다.

문제는 현재와는 다르게 그 당시에는 한글, 워드와 같은 문서데이터를 리눅스에서 읽거나 변경할 솔루션이 마땅치 않았다는 것이다. 그래서 사용하려는 파일에 따라서 부팅하는 OS를 바꿔가며 사용하는 등의 번거로움이 있었다.

그 당시에 스마트폰이 막 대중화가 되가는 시기였어서 리눅스(Ubuntu)와 윈도우즈에 모바일 디바이스까지 개인데이터를 활용하는 장비가 늘어나다보니 PC에 개인데이터를 보관하는 것에 한계를 느끼고 드롭박스 같은 클라우드 스토리지를 이용하는 등의 여러 시도를 했던 것으로 기억한다. 여러 방법을 사용해보다가 최종적으로 정착했던 것이 dokuwiki였다.

리눅스를 공부하면서 같이 시작했던 wordpress용 호스팅서버가 있어서 dokuwiki를 추가로 설치한 뒤 간단하게 사용하기 시작했는데, 내가 생각했던 외부기억장치로 가장 적합한 형태여서 모든 개인데이터를 dokuwiki 이전하고 운영하기 시작했다. 그렇게 재작년까지 개인데이터를 dokuwiki로 정말 잘 운영했다.

그렇지만 현재는 Notion을 메인으로 전환이 완료되어, 과거 데이터들은 가끔씩만 확인하다보니 계속 비용을 내가면서 유지할 필요성이 떨어져 집에서 굴러다니던 미니 PC에 우분투를 설치해서 이전해서 운영하려고 한다.

B. 이관대상 데이터

dokuwiki는 대부분의 wiki 솔루션들과 다르게 데이터베이스가 없이 파일로만 관리되는 wiki이다.(실상은 파일db나 마찬가지..?) dokuwiki를 선택했던 이유도 최악의 경우에 dokuwiki가 개발중단이 된다고 해도 내가 dokuwiki를 이용해서 생성한 데이터는 txt형태로 남아있다는 것이 가장 큰 장점이었다.

신규 Ubuntu서버(미니PC)에 dokuwiki를 설치하고나서 아래의 데이터를 옮겼다.

  1. {WIKI_ROOT}/data/page : 문서(page)의 현재버전 데이터
  2. {WIKI_ROOT}/data/attic : 문서(page)의 과거버전 데이터
  3. {WIKI_ROOT}/data/meta : 문서(page)의 변경이력 데이터
  4. {WIKI_ROOT}/data/media : 미디어(첨부파일) 현재버전 데이터
  5. {WIKI_ROOT}/data/media_attic : 미디어(첨부파일) 과거버전 데이터
  6. {WIKI_ROOT}/data/media_meta : 미디어(첨부파일) 변경이력 데이터

dokuwiki의 설치 위치에 있는 data 디렉토리에는 위 6개의 디렉토리 외에도 cache, index, locks, log, tmp 디렉토리가 있는데 그 디렉토리에 있는 데이터들은 dokuwiki의 성능이나 기능을 위해서 생성되는 데이터라서 위의 6개의 데이터를 이관한 뒤에 사용하다보면 차츰 생성되는 데이터이므로 백업이나 이관할 필요가 없다.(특히 cache 디렉토리는 명칭으로 유추해보자면 성능을 이유로 캐시해둔 데이터로 보이는데, 데이터 갯수가 많아서 백업 & 복구시간이 오래걸리니 가능하면 cache라도 빼고 이관하자...)

C. 이관 후 작업

dokuwiki는 파일기반으로 동작하는 wiki 솔루션이라서 해당 파일들의 소유주와 퍼미션이 중요하다. 누구나 편집하고 봐도 무관한 wiki라면 대충 퍼미션 777 때려버리면 편할테지만.. 내 경우에는 내 개인데이터를 보관하던 wiki로 나 외에는 열람조차 하지 않았으면 하는 데이터가 대부분이라서 소유주 및 퍼미션 작업을 반드시 해줘야한다.(그것도 아주 잘! 정확하게!)

백업 & 리스토어, dokuwiki 설치과정은 설명하지 않고 소유주 변경과 퍼미션 변경만 설명할 생각이다.(추후에 다룰 예정이긴 함..)

dokuwiki는 /var/www/html/dokuwiki에 설치되어있고, 위의 6개 이관데이터는 /var/www/html/dokuwiki/data 하위에 이관되어 있는 상태로 진행하겠다. 그리고 apache2 프로세스의 소유주는 www-data이다.

$ cd /var/www/html/dokuwiki/
$ sudo chown -R www-data:www-data data
$ sudo chmod 755 data
$ cd data
$ find . -type d -exec sudo chmod 755 {} \;
$ find . -type f -exec sudo chmod 644 {} \;

위의 명령어들을 라인별로 설명하면 아래와 같다.

  1. dokuwiki 설치경로로 이동한다.
  2. data 디렉토리의 소유주와 그룹을 www-data로 변경한다. (apache 프로세스가 write가능하기 위함)
  3. data 디렉토리의 퍼미션을 755로 변경한다.
  4. data 디렉토리 안으로 들어간다.
  5. data 하위의 모든 디렉토리 퍼미션을 755로 변경한다.(dokuwiki 기본값)
  6. data 하위의 모든 파일 퍼미션을 644로 변경한다.(dokuwiki 기본값)

위와 같이 퍼미션을 변경하고 나서도... apache의 설정에 따라서는 URL에 page의 절대경로를 입력하면(ex: http://1.1.1.1/dokuwiki/data/pages/start.txt) 파일이 열릴 수는 있다.

위 소유주와 퍼미션 작업은 apache 설정이 정상이라는 전제를 두고서 작업한 내용이다.

D. 마치면서..

사실 이 포스트는 누군가의 안내를 위한 문서라기보단 나중에 또 dokuwiki 데이터를 다른 서버로 이관할 때 보기 위해서 만들어둔 것이라고 볼 수 있다.

뭐 사실 이 ghost 블로의 SEO 구성도 안한 상태라서 누군가 검색할 확률도 엄청 낮다보니.. 오히려 더 편하다는 생각도 든다.(어차피 이런 주제로 파워블로거는 못되니 ㅋㅋㅋ)

그냥 일기장처럼 편하게 쓰려고 노력해보자. 어차피 목적은 글쓰는 연습이다.