본문 바로가기
미디어위키

Extension Collection

by 다움위키 2023. 12. 27.

현재 Collection 확장은 동작을 하지 않습니다. 그렇기 때문에 Electron Render Service를 이용할 수 있습니다. 모바일에서는 크롬 브라우저에서 제공하는 SAVE as PDF를 이용할 수 있습니다.

미디어위키의 특정 지문들을 pdf로 만들어서 책으로 만들 수 있다면, 여러 가지 유용한 점이 많을 것입니다. 적어도 미디어위키 1.27이 필요하다고 하니 미디어위키 판올림을 먼저 해야 합니다. 미디어위키 홈페이지의 문서는 외부의 렌더링 서버를 이용하도록 되어 있고, 문서의 판올림이 되지 않아 다른 곳의 문서를 참고해서 설치해 보려 합니다.

Collection 확장 설치

확장 설치

설치

개발 중인 최신의 판을 내려받습니다.

Permissions (important !)

위키 사용자들이 자신의 지면과 다른 사람의 지면을 책으로 만들 수 있도록 설정할 수 있습니다. 또는 자신의 지면만 책으로 만들고 관리자만 다른 사람의 지면을 책으로 만들 수 있도록 설정할 수도 있습니다. 미디어위키 설정 LocalSettings.php 파일에 다음을 추가합니다:

$wgGroupPermissions['*']['collectionsaveasuserpage'] = false;
$wgGroupPermissions['*']['collectionsaveascommunitypage'] = false;
//$wgGroupPermissions['user']['collectionsaveasuserpage'] = true;
//$wgGroupPermissions['user']['collectionsaveascommunitypage'] = true;
$wgGroupPermissions['user']['collectionsaveasuserpage'] = true;
$wgGroupPermissions['sysop']['collectionsaveascommunitypage'] = true;

Templates and categories

이 문서의 작성을 기본이 된 홈페이지의 Template, Category, Help를 참고해서 만들어 줍니다.

Conditional inclusion

간혹은 위키 지면에서는 보이고 출력은 하고 싶지 않거나, 출력물에는 다르게 보이도록 하도록 만들어 줄 수 있습니다. 이에 대한 Template도 만들어 두어야 합니다. 사용 시에는 다음과 같이 합니다.

  • Hide in print or Only in print
There is a {{hide in print|unprintable}} {{only in print|printable}} word.

Tweaking the collection extension

처음 접하시는 분은 반드시 다음 문서를 읽어보시기 바랍니다.

다음 사항들은 미디어위키 설정 파일은 LocalSettings.php에 추가해 줍니다. 여기서는 시스템에 직접 렌더링 서버를 설치할 것이므로 추후에 mw-render --list-writers로 확인하셔서 추가하시기 바랍니다.

require_once "$IP/extensions/Collection/Collection.php";
$wgCollectionFormats = array(
          'rl' => 'PDF',
          'odf' => 'ODT',
          );
$wgCollectionMWServeURL = "http://xxx.yyy:8899";
$wgCollectionMaxArticles = 150;

이 서버에서 기동 중인 mw-serve는 설정 중에 $wgCollectionMWServeURL = "http://dawoum.duckdns.org:8899";로 설정을 해야 합니다. 자신의 서버 이름에 맞게 수정해 줍니다.

  로컬에 렌더링 서버를 설치하시려면 아래의 과정을 진행하십시요. 그러나 지금은 로컬에 설정을 꽤 많은 부분을 수정해야 그나마 볼만한 기록물을 만들 수 있습니다. 만약 이 과정이 힘든 분은 $wgCollectionMWServeURL을 주석처리해 줍니다. 아마도 훨씬 좋은 품질의 pdf파일을 만들어 줄 것입니다.

mwlib and servers installation

Install Python and other dependencies

  • sudo apt install gcc g++ make python python-pip python-dev python-virtualenv libjpeg-dev zlib1g-dev libfreetype6-dev liblcms2-dev libxml2-dev libxslt1-dev ocaml-nox git-core python-imaging python-lxml texlive-latex-recommended ploticus dvipng imagemagick pdftk

Install mwlib & mwlib.rl

먼저 pip을 판올림을 해야 하며, 설치에 필요한 python stuff을 설치합니다.

Mwlib server daemon(local)

로컬 사용자의 테스트를 위해 시작 스크립트 /etc/init.d/mw-serve를 만듭니다.

#! /bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin

case "$1" in
    start)
		su - mw-serve -c 'nserve >> /data/mwcache/log.txt 2>&1  &'
		su - mw-serve -c 'mw-qserve >> /data/mwcache/log.txt 2>&1 &'
		su - mw-serve -c 'nslave --cachedir /data/mwcache/ >> /data/mwcache/log.txt 2>&1 &'
		su - mw-serve -c 'postman --cachedir /data/mwcache/ >> /data/mwcache/log.txt 2>&1 &'
    ;;
  	stop)
		mv /data/mwcache/log.txt /data/mwcache/log.old
		killall nserve
		killall mw-qserve
    	killall nslave
    	killall postman
    ;;
  	force-reload|restart)
    	$0 stop
    	$0 start
    ;;
  	*)
    echo "Usage: /etc/init.d/mw-serve {start|stop}"
    exit 1
    ;;
esac

exit 0

Create a cache directory(local)

로컬 사용자들이 렌더링에 이용할 사용자와 디렉토리를 만듭니다.

  • sudo adduser mw-serve
  • sudo mkdir -p /data/mwcache
  • sudo chown -R mw-serve:mw-serve /data/mwcache

Start render servers

  • sudo chmod 755 /etc/init.d/mw-serve
  • sudo /etc/init.d/mw-serve start

Test

  • mw-zip -c :en -o test.zip Formula NK-33 Jupiter

... No matching distribution found for cores

오류가 발생했습니다. 다음과 같이 조치해 줍니다.

  • sudo pip install gevent==1.0
  • sudo pip install gevent==1.0.2

다시 테스트를 합니다.

  • mw-zip -c :en -o test.zip Formula NK-33 Jupiter
  • mw-render -c test.zip -o test.pdf -w rl
  • sudo apt install xpdf
  • xpdf test.pdf

오류가 출력되기는 하지만, 정상적으로 pdf 문서가 만들어집니다.

Mwlib server daemon(web)

미디어위키에 접근해서 pdf문서를 만들기 위한 시작 스크립트 /etc/init.d/mw-serve를 만듭니다.

#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin

case "$1" in
	start)
		su - mw-serve -c 'nserve >> /var/log/mediawiki/mw-serve_log.txt 2>&1 &'
		su - mw-serve -c 'mw-qserve >> /var/log/mediawiki/mw-serve_log.txt 2>&1 &'
		su - mw-serve -c 'nslave --cachedir /var/log/mediawiki/ >> /var/log/mediawiki/mw-serve_log.txt 2>&1 &'
		su - mw-serve -c 'postman --cachedir /var/log/mediawiki/ >> /var/log/mediawiki/mw-serve_log.txt 2>&1 &'
	;;
	stop)
		mv /var/log/mediawiki/mw-serve_log.txt /var/log/mediawiki/mw-serve_log.txt.old
		killall nserve
		killall mw-qserve
		killall nslave
   		killall postman
 	;;
 	force-reload|restart)
       	$0 stop
      	$0 start
  	;;
  	*)
    	echo "Usage: /etc/init.d/mw-serve {start|stop}"
     	exit 1
  	;;
esac

exit 0

Create a cache directory(web)

  • sudo mkdir /var/log/mediawiki
  • chown mw-serve:mw-serve -R /var/log/mediawiki

Start render servers

이전 서비스를 중지하고, 새롭게 서비스를 시작합니다.

  • sudo /etc/init.d/mw-serve stop
  • sudo /etc/init.d/wm-serve start

TODO

  • Book creator에서 Download 활성화되도록 설정해야 합니다.
  • 익명사용자도 전부 접근이 가능합니다.
  • 수식이 출력되지 않습니다. texvc를 설치해도 마찬가지입니다. Math extension을 설치해야 하나요? 이건 정보가 더 필요합니다 : 심각
  • 일부 Template과 맞지 않습니다 : 지면 만들 때에 다른 코드로 작성을 해야 합니다. Template를 더 추가해야 합니다 : 심각
  • 출력물의 결과가 좋지 않습니다 : 심각

External Resources