※ 이 글은 Oracle Cloud의 Ubuntu 20.04 Minimal을 기준으로 작성되었습니다. 하지만 일반 Ubuntu 20.04 혹은 이후 버전에서도 적용이 가능합니다.
이 글에서는 Ubuntu에 DokuWiki를 설치하는 방법에 대해 안내합니다.
많은 가이드 글들이 Apache2를 이용한 방법을 안내하지만, 개인적으로 NGINX를 더 선호하는지라 NGINX를 사용한 방법을 안내합니다. 그도 그럴 것이, NGINX가 필요한건 다 있으면서 가볍거든요.
이 문서에서는 이미 OS 등의 방화벽 설정을 완료하였다는 전제 하에 진행합니다. 열려야 할 포트는 80
(HTTP), 443
(HTTPS)입니다. Oracle Cloud의 경우 이 글을 참조하세요.
DokuWiki 다운로드 하기
먼저 DokuWiki 다운로드 페이지로 이동해 본인이 원하는대로 DokuWiki를 다운로드 받습니다.
이 글을 작성하는 시점에서 Stable Version은 2020-07-29 "Hogfather"
버전입니다.
Language는 본인 취향에 따라 선택하면 됩니다. 나는 기본적으로 해제 불가능하게 체크되어 있는 'en - English'를 제외한 나머지를 모두 Toggle All 버튼을 체크 해제한 후, 'ko - 한국어'만 체크해두었습니다.
이외에도 Popular Plugins에서 'CAPTCHA Plugin'과 'Upgrade Plugin', 'Wrap Plugin'을 선택했습니다. 이 플러그인들은 나중에 개별적으로 설치가 가능하므로, 굳이 여기서 받을 필요는 없습니다.
상단의 Download 버튼을 누르면 .tgz
파일이 다운로드 됩니다. 이것을 미리 압축을 풀어둡니다. 아니면 나중에 tgz 파일채로 업로드 한 후, 거기서 압축을 풀어도 됩니다만, 그게 귀찮으니까요.
압축을 해제했을 때 dokuwiki
디렉토리 밑에 install.php
나 doku.php
파일이 위치해 있으면 됩니다.
필요한 패키지 설치
이제 Ubuntu에서 필요한 패키지를 설치합시다.
제일 먼저 해야할 것은 역시 패키지 전체 업데이트입니다. 특히나 Oracle Cloud의 경우 이 과정을 거치지 않으면 패키지를 설치할 수 없습니다.
sudo apt update
sudo apt upgrade -y
이후 있으면 이래저래 편한 패키지들을 설치합니다. 일반적인 Ubuntu 설치 환경에서는 이 패키지들 중 대다수가 이미 설치되어 있겠지만, Oracle Cloud의 Ubuntu 20.04 Minimal에는 이름답게 이 패키지들조차 설치되어 있지 않습니다.
sudo apt install net-tools lsof wget nano
이제 DokuWiki에 필요한 패키지를 설치합니다.
현 시점에서 DokuWiki는 PHP 7.X까지 지원합니다. PHP 8이 나온지 얼마 되지 않은 시점인지라, '우리는 아직 PHP 8을 지원하지 않습니다'라고 공식 홈페이지에서 써놓고 있을 정도입니다. 그리고 현 시점에서 PHP 7.X의 최신 버전은 PHP 7.4입니다.
sudo apt install php7.4-fpm php7.4-xml php7.4-mbstring php7.4-sqlite3 imagemagick nginx certbot python3-certbot-nginx
php-
와 php7.4-
의 차이점이라면, php-
는 PHP의 최신 버전만을 지칭하지만, php7.4-
는 PHP 7.4만을 지칭합니다. 만약 이 글이 작성되고 난 후에 PHP 7.5 등이 나왔다면 위 명령어에서 7.4를 7.5로 바꾼 후 설치하면 되겠지요?
DokuWiki에서 이미지를 변환할 때 PHP의 GD 라이브러리를 사용할 것인지, ImageMagick을 사용할 지 선택할 수 있는데, 저는 ImageMagick을 선택했습니다. 만약 GD 라이브러리를 선호한다면 imagemagick
대신 php7.4-gd
패키지를 설치하세요.
php7.4-mbstring
이 설치되어 있어야 DokuWiki에서 문서 제목 그대로('utf8' 옵션) 문서 파일을 저장할 수 있습니다.
일부 DokuWiki 플러그인의 경우 php7.4-sqlite3
라이브러리가 필요합니다.
본인의 사이트에 HTTPS를 적용할 생각이 없다면 certbot
과 python3-certbot-nginx
패키지를 설치하지 않아도 좋습니다.
모든 패키지 설치가 끝났다면 다음 과정으로 넘어갑니다.
파일 업로드 및 소유권 변경
이제 아까 다운로드 받았던 파일들을 업로드 할 차례입니다.
dokuwiki
디렉토리를 통채로 /var/www/
경로에 업로드 합니다. 그렇게 하면 install.php
파일의 경로가 /var/www/dokuwiki/install.php
처럼 될겁니다.
이렇게 업로드 한 파일과 디렉토리의 소유권은 여러분이 파일들을 업로드 할 때 썼던 계정이 가져가게 됩니다. 이렇게 되면 NGINX 입장에서는 해당 디렉토리에 대한 소유권이 없기 때문에 웹페이지를 서비스 할 수 없습니다.
그래서 dokuwiki
의 소유권을 NGINX에게 넘겨주어야 합니다.
sudo chown -R www-data:www-data /var/www/dokuwiki
이 명령어는 나중에 dokuwiki
디렉토리 아래의 파일이나 디렉토리를 건드렸다면 한번씩 다시 실행하는게 좋습니다.
NGINX 설정
이제 필요한 파일들은 모두 모였으니, 사이트를 열어야겠죠.
NGINX의 다른 설정들은 크게 건들 필요가 없고, /etc/nginx/conf.d/
에 .conf
파일을 하나 만들어줍시다. 이름은 크게 상관이 없지만, 만약 여러분들이 도메인을 사용할 것이라면 그 도메인에 맞는 이름을 지어주는게 좋겠지요. example.com.conf
이런식으로요.
server {
#server_name example.com;
root /var/www/dokuwiki;
index index.php;
location / { try_files $uri $uri/ @dokuwiki; }
location @dokuwiki {
rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
rewrite ^/(.*) /doku.php?id=$1&$args last;
}
location ~ \.php$ {
if (!-f $request_filename) { return 404; }
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /(conf|bin|inc|vendor)/ {
deny all;
}
location ~ /data/ {
internal;
}
#fastcgi_param HTTPS on;
}
여러분들이 HTTPS를 사용할 것이라면 #fastcgi_param HTTPS on;
의 주석을 해제하세요.
이제 NGINX를 재시작해봅시다.
systemctl restart nginx
문제가 없다면 별다른 에러 없이 명령어가 종료되었을 것입니다.
만약 bind() to 0.0.0.0:80 failed (98: Address already in use)
와 같은 오류가 나타났다면 lsof -i :80
명령어를 통해 어떤 프로세스가 80번 포트를 사용하고 있는지 알아볼 수 있습니다. 해당 프로세스를 fuser -k 80/tcp
명령어로 종료한 후, 관련 프로세스의 설정을 변경하거나 서비스를 중지하면 됩니다.
(선택) HTTPS 적용하기
HTTPS는 필수가 아닌 선택이긴 합니다만, 보안을 중요하게 생각한다면 HTTPS는 선택이 아닌 필수입니다. 그도 그럴것이, HTTP는 여러분들이 뭘 하는지 중간에서 훤히 다 보이거든요.
다음 명령어를 이용해 certbot을 실행합니다. 여러분이 모든 과정을 잘 진행했다면 문제없이 진행할 수 있을것입니다.
sudo certbot --nginx --agree-tos --register-unsafely-without-email
DokuWiki 설정하기
여기서 끝난 것이 아닙니다. 최초 설정 과정이 필요하죠. 여러분의 서버 IP 주소 혹은 도메인 주소 끝에 /install.php
를 붙인 후 웹브라우저에서 접속하세요. 가령, example.com/install.php
이렇게요.
필요한 정보를 모두 적은 후, 최초 설정을 완료한 후에는 install.php
파일을 지워도 좋습니다. 어짜피 뭔가 문제가 생기면 install.php
에 다시 접속하는게 아니라 처음부터 다시 DokuWiki를 재설치하는게 더 확실하거든요.
자, 이제 DokuWiki의 설정이 모두 완료되었습니다. 즐거운 위키 생활 되세요.