※ 이 글은 Oracle Cloud의 Ubuntu 20.04 Minimal을 기준으로 작성되었습니다. 하지만 일반 Ubuntu 20.04 혹은 이후 버전에서도 적용이 가능합니다.
이 글에서는 Ubuntu에 MediaWiki를 설치하는 방법에 대해 안내합니다.
이전 글처럼 이 글에서도 Apache2 대신 NGINX를 이용하는 방법에 대해 안내합니다.
또한 이 글 역시 OS 등의 방화벽 설정을 모두 완료하였다는 전제 하에 진행합니다. 열려야 할 포트는 80
(HTTP), 443
(HTTPS)입니다. Oracle Cloud의 경우 이 글을 참조하세요.
MediaWiki 다운로드 하기
DokuWiki는 전체 크기가 작아 SSH로 업로드하기 그나마 용이했지만, MediaWiki는 덩치가 꽤나 큽니다. 따라서 서버 컴퓨터에서 직접 MediaWiki를 다운로드 받도록 할 것입니다.
아직 필요한 패키지들을 설치하기 전이므로, 필요한 경로를 미리 생성하고 파일을 다운로드 합니다.
현재 MediaWiki의 Stable Version은 1.36.2입니다. 이 링크에서 현재 MediaWiki의 최신 버전과 그 다운로드 링크를 확인한 후, 아래 명령어에서 해당 부분에 적용하세요.
sudo mkdir -p /var/www/
sudo wget https://releases.wikimedia.org/mediawiki/1.36/mediawiki-1.36.2.tar.gz -P /var/www/
tar xf mediawiki-1.36.2.tar.gz -C /var/www/
mv /var/www/mediawiki-1.36.2 /var/www/mediawiki
tar
명령어를 실행할 때 일시적으로 SSH 쉘이 무응답인 것처럼 보일 수 있습니다. 현재 상황을 보고 싶다면 tar xf
대신 tar xvf
를 사용하세요.
필요한 패키지 설치하기
먼저 시스템 업데이트를 진행합니다. Oracle Cloud의 경우 이 과정을 진행하지 않으면 그 어떤 패키지도 설치할 수 없습니다.
sudo apt update
sudo apt upgrade -y
이후 있으면 편한 패키지들을 설치합니다. Oracle Cloud의 Minimal 이미지에는 해당 패키지들이 존재하지 않아 수동으로 설치해야 합니다.
sudo apt install net-tools lsof wget nano
다음으로 웹서버 구동에 필요한 패키지들을 설치합니다.
sudo apt install nginx certbot python3-certbot-nginx
sudo apt install mariadb-server mariadb-client
sudo mysql_secure_installation
만약 HTTPS를 사용할 생각이 없다면 certbot python3-certbot-nginx
패키지를 설치하지 않아도 좋습니다.
만약 MariaDB 대신 SQLite3를 사용할 생각이라면 mariadb-server mariadb-client
패키지를 설치하지 않아도 좋습니다. 이 경우 세번째 명령어 역시 실행할 필요가 없습니다.
mysql_secure_installation
은 보안을 위해 서버 컴퓨터 이외에서 DB 접속을 차단하는 목적입니다. root 계정의 패스워드를 설정하고 기타 설정들을 계속 진행하시면 됩니다. 대부분은 그냥 ENTER만 눌러도 충분합니다.
이제 MediaWiki 관련 패키지를 설치합니다. 이때 PHP 패키지 관리자인 Composer도 같이 설치합니다. 일부 스킨의 경우 Composer 설치를 요구하거든요.
apt install php7.4-mbstring php7.4-xml php7.4-fpm php7.4-mysql php7.4-sqlite3 php7.4-curl php7.4-intl php7.4-gd php7.4-apcu texlive imagemagick unzip php7.4-zip git
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
MariaDB 설정하기
이 부분은 이전에 SQLite3를 사용하기로 결정하고 MariaDB 관련 패키지를 설치하지 않았다면 넘어가면 됩니다.
root 계정으로 DB에 접속합니다.
sudo mysql -u root
이후 다음 SQL 명령어를 입력합니다.
CREATE DATABASE mediawiki;
GRANT ALL PRIVILEGES ON mediawiki.* TO 'wikiuser'@'localhost' IDENTIFIED BY 'password';
flush privileges;
exit;
여기서 적당히 여러분들의 취향에 맞추어 명령어를 변경할 수 있습니다.
mediawiki
: MediaWiki에서 사용할 DB 이름
wikiuser
: MediaWiki에서 사용할 사용자 이름
password
: MediaWiki에서 사용할 사용자의 비밀번호
양 옆에 ''
는 빠트리지 마세요.
만약 위 값들을 변경해서 적용했다면 나중에 다시 사용해야 하므로 잘 기억해두셔야 합니다.
NGINX 설정하기
이제 NGINX가 사이트를 표시할 수 있도록 설정해야 합니다.
/etc/nginx/conf.d/
에 여러분의 사이트 이름으로 된 .conf
파일을 생성합니다. 가령, example.com.conf
이렇게요.
server {
server_name example.com;
root /var/www/mediawiki;
index index.php;
client_max_body_size 5m;
client_body_timeout 60;
error_log /var/log/nginx/mediawiki.error.log;
access_log /var/log/nginx/mediawiki.access.log;
location / { try_files $uri $uri/ @rewrite; }
location @rewrite { rewrite ^/(.*)$ /index.php?title=$1&$args; }
location ^~ /maintenance/ { return 403; }
location /rest.php { try_files $uri $uri/ /rest.php?$args; }
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
location ^~ /uploads/ {}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
try_files $uri /index.php;
expires max;
log_not_found off;
}
location = /_.gif {
expires max;
empty_gif;
}
location ^~ /cache/ {
deny all;
}
location /dumps {
root /var/www/mediawiki/local;
autoindex on;
}
}
파일을 저장한 후, NGINX를 재시작합니다.
systemctl restart nginx
본인의 사이트에 이상없이 접속할 수 있음을 확인했다면 HTTPS를 적용할 수 있습니다.
sudo certbot --nginx
소유권 이전
대부분의 사용자가 이 모든 과정을 root 계정으로 진행했을겁니다. 하지만 NGINX는 root 계정이 작성한 파일에 대한 접근 권한이 없으므로, /var/www/
아래의 모든 파일과 디렉토리들을 NGINX에게 소유권을 이전해야 합니다.
sudo chown -R www-data:www-data /var/www/
이제 자신의 사이트에 접속해서 무사히 설정 페이지로 접속이 가능한지 확인해보세요. 만약 되었다면 설치는 완료되었습니다.
MariaDB 관련 패키지를 설치하고 설정했다면 위에서 설정한 mediawiki
, wikiuser
, password
등을 MediaWiki 설정 때 잘 입력하면 됩니다.
설정이 완료된 후 다운로드되는 LocalSettings.php
파일을 index.php
파일과 같은 경로에 두면 됩니다.