dokuwiki 설치 (1)

SIMPLISM·2021년 8월 19일
1

도쿠위키.wiki

목록 보기
6/7

시작하면서..

앞에 작성한 포스트들은 이 dokuwiki를 설치하기 위한 준비작업이었다. 뭔가 길어서 포기하고 싶어질 수 있는데, 추후에 체험판(?) 역할을 할 수 있는 내장서버를 이용한 dokuwiki도 설명할 계획이다.(사실 그걸 먼저하고 이걸 나중에 했어야...)

도쿠위키 다운로드

HowtoForge의 문서는 wget을 이용해서 다운받는 것으로 설명되어 있는데, 난 그냥 웹브라우저에서 파일을 다운받는 것을 더 선호한다.(이유는 바로 뒤에서 설명할 예정)

웹브라우저에서 dokuwiki 다운로드 페이지로 이동한다.

특별한 이유가 없는한 Stable을 선택하고, 그 다음은 Languages로 넘어가면 Toggle all 버튼을 눌러서 필수인 영어만 남기고 다 선택을 해제한다.

내가 사용할 dokuwiki는 공개용이 아닌 개인용도로 사용할 예정이라서 다국어 지원이 필요없는데 굳이 필요없는 언어파일들을 설치하고 싶지 않았다.(사실 공개용도로 사용해도 영어, 한국어만 되면...😉)

대신 한국어는 지원하는 것이 좋으니 스크롤을 쭉 내려서 ko - 한국어를 체크해서 선택한다.

그리고 Popular Plugins에서 다른 플러그인은 생각보다 사용율이 높지 않은데, Wrap 플러그인은 활용도가 높으니 반드시 선택하도록 하자.

PC에 다운받았으면 이제 서버에 업로드를 할 시간이다.

dokuwiki 업로드

사실 HowtoForge에서는 wget 명령어로 서버에서 바로 파일다운로드를 하도록 문서를 작성한 것은 아마도 이 업로드하는 과정이 생략되니 작성이 보다 용이해서라고 추정된다.😁

ssh로 접속이 가능하니 FileZilla같은 ftp 클라이언트를 이용해서 업로드를 한다.
(주의: FileZilla의 경우에 포트를 반드시 ssh 포트번호로 입력해야 sftp를 통해서 접속한다.)

$ ls
dokuwiki-2020-07-29_Hogfather_20210816.tgz

아 업로드하기 전에 파일명의 일부는 변경해줬다.

변경 전 파일명 : dokuwiki-8c896fb6c6bd28c5e1cb10f821008875.tgz
변경 후 파일명 : dokuwiki-2020-07-29_Hogfather_20210816.tgz

이유는 보통 저 설치파일은 보관해두는 편인데, 어느 버전의 dokuwiki(2020-07-29 Hogfather)인지랑 언제 다운로드 받았았는지(20210816)를 파일명만 보고서 알 수 있도록 하기 위함이다.(사실 크게 의미는 없다...😂)

압축해제

이제 tgz 파일을 압축해제한다. 해제할 위치는 웹서버의 디렉토리(/var/www/html)로 한다.

$ sudo mkdir /var/www/html/dokuwiki
$ ll /var/www/html
total 32
drwxr-xr-x 3 root root  4096 Aug 16 08:22 ./
drwxr-xr-x 3 root root  4096 Aug 16 07:12 ../
drwxr-xr-x 2 root root  4096 Aug 16 08:22 dokuwiki/
-rw-r--r-- 1 root root    18 Aug 16 08:04 index.html
-rw-r--r-- 1 root root    21 Aug 16 07:23 info.php
$ sudo tar -xvzf dokuwiki-2020-070-29_Hogfather_20210816.tgz -C /var/www/html/dokuwiki/ --strip-components=1
dokuwiki/.htaccess.dist
dokuwiki/COPYING
dokuwiki/README
dokuwiki/VERSION
dokuwiki/bin/.htaccess
(... 중간 생략 ...)
dokuwiki/vendor/splitbrain/php-cli/src/PSR3CLI.php
dokuwiki/vendor/splitbrain/php-cli/src/TableFormatter.php
$

웹서버 디렉토리에 dokuwiki용 디렉토리를 하나 생성한 뒤에 해당 경로에 압축을 풀어 넣어준다.

$ cd /var/www/html/dokuwiki
$ sudo cp /var/www/html/dokuwiki/.htaccess{.dist,}
$ ll
total 116
drwxr-xr-x  8 root root  4096 Aug 16 08:28 ./
drwxr-xr-x  3 root root  4096 Aug 16 08:22 ../
-rw-r--r--  1 root root  1688 Aug 16 08:28 .htaccess
-rw-r--r--  1 2012 2012  1688 Jul 29  2020 .htaccess.dist
-rw-r--r--  1 2012 2012 18092 Jul 29  2020 COPYING
-rw-r--r--  1 2012 2012   308 Jul 29  2020 README
-rw-r--r--  1 2012 2012    23 Jul 29  2020 VERSION
drwxr-xr-x  2 root root  4096 Aug 16 08:25 bin/
drwxr-xr-x  2 root root  4096 Aug 16 08:25 conf/
drwxr-xr-x 12 root root  4096 Aug 16 08:25 data/
-rw-r--r--  1 2012 2012  3618 Jul 29  2020 doku.php
-rw-r--r--  1 2012 2012 19576 Jul 29  2020 feed.php
drwxr-xr-x 20 root root  4096 Aug 16 08:25 inc/
-rw-r--r--  1 2012 2012  2540 Jul 29  2020 index.php
-rw-r--r--  1 2012 2012 20463 Jul 29  2020 install.php
drwxr-xr-x  8 root root  4096 Aug 16 08:25 lib/
drwxr-xr-x 11 root root  4096 Aug 16 08:25 vendor/
$

.htaccess 파일을 .htaccess.dist 파일을 이용해서 생성해준다.(사실 저런 명령어 처음 봄...😅)

Apache 추가설정

아파치에 도쿠위키용 설정을 넣어보자.

$ vi /etc/apache2/sites-available/dokuwiki.conf

vi로 dokuwiki.conf 파일을 생성하고, 아래의 내용을 붙여넣는다.

<VirtualHost *:80>
        ServerName    wiki.simplism.kr
        DocumentRoot  /var/www/html/dokuwiki

        <Directory ~ "/var/www/html/dokuwiki/(bin/|conf/|data/|inc/)">
            <IfModule mod_authz_core.c>
                AllowOverride All
                Require all denied
            </IfModule>
            <IfModule !mod_authz_core.c>
                Order allow,deny
                Deny from all
            </IfModule>
        </Directory>

        ErrorLog   /var/log/apache2/dokuwiki_error.log
        CustomLog  /var/log/apache2/dokuwiki_access.log combined
</VirtualHost>

위에서 ServerName은 도메인이 없는 경우에는 localhost로 입력해도 무관하다(고 알고 있다.. 테스트 못해봄😅)

위 설정파일을 아파치에 등록하기 위해서는 아래의 명령어를 실행한다.

$ sudo a2ensite dokuwiki.conf

참고로 저렇게 등록한 site 정보는 아래의 명령어로 해제가 가능하다.

$ sudo a2dissite dokuwiki.conf

저렇게 등록한 site 정보를 현재 구동 중인 아파치 웹서버에 적용하기 위해서는 아래의 명령어로 설정파일을 reload해주면 된다.

$ sudo systemctl reload apache2

dokuwiki 실행

웹브라우저에서 dokuwiki 페이지를 열어본다. 도메인이 없다면 http://[IP주소]/dokuwiki일 것이다.

퍼미션 오류

dokuwiki 주소로 접근했는데, 위처럼 나온다면 아~~주 정상이다. 웹서버 프로세스인 apache2 프로세스의 실행계정이 해당 파일에 대한 권한이 없어서 발생하는 것으로 자연스러운 현상이다.(전체적으로 설명하려면 포스트를 따로 만들어야한다...🤐)

apache2 프로세스 실행계정 확인

$ ps -ef | grep apache2
root        1372       1  0 17:06 ?        00:00:01 /usr/sbin/apache2 -k start
www-data    2472    1372  0 17:23 ?        00:00:00 /usr/sbin/apache2 -k start
www-data    2473    1372  0 17:23 ?        00:00:00 /usr/sbin/apache2 -k start
www-data    2474    1372  0 17:23 ?        00:00:00 /usr/sbin/apache2 -k start
www-data    2475    1372  0 17:23 ?        00:00:00 /usr/sbin/apache2 -k start
www-data    2476    1372  0 17:23 ?        00:00:00 /usr/sbin/apache2 -k start
www-data    2477    1372  0 17:23 ?        00:00:00 /usr/sbin/apache2 -k start
www-data    2505    1372  0 17:34 ?        00:00:00 /usr/sbin/apache2 -k start
ubuntu      4937    4762  0 22:14 pts/0    00:00:00 grep --color=auto apache2
$

ps 명령어로 apache2 프로세스를 확인해보면 맨 앞에 www-data가 가장 많은 것을 확인할 수 있을 것이다. 디테일한 설명은 pass하고, 이 서버에서는 apache2 프로세스를 실행하는 계정은 www-data라는 것을 저것으로 확인할 수 있다.

사실 더 정확한 확인 방법은 아래의 설정파일을 확인하는 것이긴하다.

$ cat /etc/apache2/envvars | grep APACHE_RUN
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
$

/etc/apache2/envvars라는 설정파일에 apache2 프로세스를 실행할 계정과 그룹이 설정으로 저장되어있다.

퍼미션 작업

다시 위에 퍼미션 오류가 발생했던 화면을 보면 /data/pages을 찾을 수 없다고 나와있다.

$ cd /var/www/html/dokuwiki/
$ cd data
$ ll
total 104
drwxr-xr-x 12 root root  4096 Aug 16 08:25 ./
drwxr-xr-x  8 root root  4096 Aug 19 16:55 ../
-rw-r--r--  1 root root   143 Jul 29  2020 .htaccess
-rw-r--r--  1 root root    32 Jul 29  2020 _dummy
drwxr-xr-x  2 root root  4096 Aug 16 08:25 attic/
drwxr-xr-x 10 root root  4096 Aug 19 17:22 cache/
-rw-r--r--  1 root root 24642 Jul 29  2020 deleted.files
-rw-r--r--  1 root root  6516 Jul 29  2020 dont-panic-if-you-see-this-in-your-logs-it-means-your-directory-permissions-are-correct.png
-rw-r--r--  1 root root 12093 Jul 29  2020 dont-panic-if-you-see-this-in-your-logs-it-means-your-directory-permissions-are-correct.xcf
drwxr-xr-x  2 root root  4096 Aug 16 08:37 index/
drwxr-xr-x  2 root root  4096 Aug 19 17:22 locks/
drwxr-xr-x  3 root root  4096 Aug 16 08:25 media/
drwxr-xr-x  2 root root  4096 Aug 16 08:25 media_attic/
drwxr-xr-x  2 root root  4096 Aug 16 08:25 media_meta/
drwxr-xr-x  2 root root  4096 Aug 16 08:25 meta/
drwxr-xr-x  4 root root  4096 Aug 16 08:25 pages/
drwxr-xr-x  2 root root  4096 Aug 16 08:25 tmp/
$

dokuwiki가 설치된 경로 하위에 data 디렉토리 안에 들어가서 ll 명령어로 확인해보면 소유주와 그룹이 root로 되어있음을 확인할 수 있다.

쉽지는 않지만 간략하게 설명하면 apache2 프로세스가 동작 중인 www-data 프로세스는 data/pages 디렉토리에 대해서 소유주도 아니고, 그룹에 속하지도 않으므로 other에 해당한다. other의 권한은 r-x이므로 read(읽기)와 execute(실행)은 가능하나 write(쓰기)가 되질 않는다.(어렵...🥱 퍼미션에 대한 내용은 따로 다루겠지만 그 전에 궁금한 사람은 검색을 해보는 걸로...)

퍼미션 문제를 해결하는 방법은 여러가지가 있으니 선호에 따라서 하면 된다.

  1. 해당 경로의 소유주를 www-data로 변경하는 방법
  2. 해당 경로의 그룹을 www-data로 변경하고, group에 write 권한을 부여하는 방법
  3. 해당 경로의 other 권한에 write 권한을 부여하는 방법

3번 방법의 경우에는 www-data 계정뿐만 아니라 다른 계정도 동일한 권한이 부여되므로 보안상 적절치 않다.(만약 root계정이 아닌 다른 계정이 탈취되면 해당 디렉토리를 삭제하는 것도 가능하니...)

2번 방법은 나쁘지 않으나 손이 많이간다. (소유주변경 & 퍼미션 추가) 그러므로 보통은 1번 방법을 권장한다.

아래의 명령어를 이용해서 소유주를 변경한다.(보통 그룹도 같이 변경하긴 한다.)

$ cd /var/www/html/dokuwiki/data
$ sudo chown -R www-data:www-data pages

그 다음에 다시 웹브라우저에서 오류가 났었던 페이지를 F5(새로고침)해본다.

data/pages에 대한 퍼미션 문제가 해결되니 다른 디렉토리의 퍼미션 문제가 있다고 나온다.(data/attic) 이 과정을 저 에러가 사라질때 까지 반복한다.

$ sudo chown -R www-data:www-data attic
$ sudo chown -R www-data:www-data media
$ sudo chown -R www-data:www-data media_attic
$ sudo chown -R www-data:www-data meta
$ sudo chown -R www-data:www-data media_meta
$ sudo chown -R www-data:www-data cache
$ sudo chown -R www-data:www-data index
$ sudo chown -R www-data:www-data locks
$ sudo chown -R www-data:www-data tmp
$

퍼미션 하나 설정하고 F5, 퍼미션 하나 설정하고 F5 하다보면...

드디어 dokuwiki 화면이 뚜둥!

마치면서..

원래는 한 포스트로 작성하려고 했는데.. 내용이 길어져서 2개로 나눈다.

참고문서

  1. "How to Install DokuWiki on Ubuntu 20.04 LTS", HowtoForge, https://www.howtoforge.com/how-to-install-dokuwiki-on-ubuntu-2004-lts/
profile
go to simple.

0개의 댓글