작은숲:위키노트/미디어위키 업로드 설정

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
Utolee90 (토론 | 기여)님의 2016년 11월 10일 (목) 02:28 판 (판 1개를 가져왔습니다: 위키노트(http://wiki.mooo.org/)에서 가져옴)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

미디어위키를 설치하면 기본값으로 파일 업로드가 되지 않도록 되어 있다. 하지만 몇 가지 확인과 설정을 해서 파일을 업로드 할 수 있도록 만들 수 있다.

파일을 저장할 디렉토리의 소유자 변경

파일을 업로드 하기 위해서는 서버 콘솔에 접근할 수 있어야 한다. 파일을 저장할 디렉토리에 웹 서버가 구동되는 계정으로 쓰기 권한이 있어야 하기 때문이다. 서버 콘솔에 접근할 수 없다면 안타깝지만 미디어위키에서 파일을 업로드 할 방법이 없다. FTP나 SFTP로 접근이 가능하다면 아래에 설명할 디렉토리의 퍼미션을 수정하는 방법을 쓸 수 있지만 그리 좋은 방법은 아니다. 만약 웹 호스팅 서비스를 사용 중이라면 호스팅 업체에 문의하도록 하자. 업로드한 파일을 저장하는 디렉토리는 미디어위키가 설치된 디렉토리 아래의 images 디렉토리이다. 이 디렉토리가 웹 서버가 구동되는 계정으로 쓸 수 있도록 만들어야 한다. root 계정을 사용할 수 있다면 images 디렉토리의 소유자를 웹 서버가 구동되는 계정으로 만들어준다.

# chown nobody images

웹 서버가 구동되는 계정은 서버마다 다르니 ps -ef | grep httpd | grep -v grep 명령으로 미리 확인하도록 한다. 만약 root 계정을 쓸 수 없다면 위험한 방법이지만 images 디렉토리의 퍼미션을 다른 사용자가 쓸 수 있도록 해야 한다. 하지만 이건 그리 추천할 만한 방법은 아니다. root 계정을 사용할 수 없지만 꼭 파일을 올려야 한다면 모르겠지만, 그렇지 않다면 root 계정으로 위 방법대로 하는 것이 좋다.

# chmod o+w images

디렉토리의 퍼미션은 757이나 777로 해도 된다.

미디어위키 설정 추가

이제 LocalSettings.php 파일에 아래 내용을 추가하거나 수정한다.

## To enable image uploads, make sure the 'images' directory
## is writable, then set this to true:
$wgEnableUploads = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "/usr/bin/convert";

$wgEnableUploads 변수의 값을 true로 변경하거나 추가하면 이제부터 파일 업로드가 가능해진다. 설치한 위키에 접속하면 화면 왼쪽 메뉴에 '파일 올리기' 기능이 새로 나타난 것을 볼 수 있을 것이다. $wgUseImageMagick 변수와 $wgImageMagickConvertCommand 변수는 그림 파일을 올렸을 때 적절한 크기의 섬네일을 만들기 위한 설정이다. 이 설정을 쓰기 위해서는 서버에 ImageMagick 패키지가 설치되어 있어야 한다.

업로드를 허용할 파일 확장자 설정

미디어위키에서는 기본값으로 png, gif, jpg, jpeg 파일만 업로드할 수 있다. 이 외의 다른 파일 종류를 업로드 하려면 LocalSettings.php 파일에 설정을 추가해야 한다.

$wgFileExtensions[] = 'zip';
$wgFileExtensions[] = 'gz';
$wgFileExtensions[] = 'doc';
$wgFileExtensions[] = 'xls';
$wgFileExtensions[] = 'pdf';

$wgFileExtensions 변수는 업로드를 허용할 확장자를 저장하고 있는 배열이다. 이 배열에 위와 같이 파일 확장자를 추가하면 된다.

파일을 저장할 디렉토리를 다른 디렉토리로 변경

업로드 한 파일을 저장할 디렉토리를 기본 디렉토리인 images 디렉토리가 아닌 다른 디렉토리로 바꿀 수도 있다.

## The URL path to static resources (images, scripts, etc.)
$wgResourceBasePath = $wgScriptPath;
...
// upload directory
$wgUploadDirectory = "/var/www/mediawiki/files";
$wgUploadPath = "$wgResourceBasePath/files";

$wgUploadDirectory 변수에는 파일을 저장할 실제 디렉토리의 경로를, $wgUploadPath 변수에는 웹에서 접근할 때의 경로를 지정한다. 물론 이렇게 하더라도 위에서 한 것처럼 파일을 저장할 디렉토리에 웹 서버가 구동되는 계정으로 쓸 수 있어야 한다. 이 변수들을 써서 미디어위키가 설치된 디렉토리가 아닌 다른 경로에 있는 디렉토리를 지정할 수도 있다. 다만 이 경우에는 웹에서 접근할 수 있도록 파일 디렉토리의 심볼릭 링크를 만들거나 웹 서버 설정에서 별칭(Alias)을 지정해줘야 한다.

참고