제로원:시각편집기

통진고위키
안중원 (토론 | 기여)님의 2020년 4월 26일 (일) 21:56 판 (syntaxhighlight 오류 해결)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
시각편집기에 관련하여 질문이 있거나 오류가 발생하면 토론 문서에 써놓으십시오. 친절한 편집자가 그에 관한 답을 달아 줄 것입니다. 유용한 답은 본 문서에 기재될 수 있습니다.
ZERO-ONE 포털
제로원.png

시각편집기는 미디어위키 편집을 쉽고 편하게 하기 위해 개발된 편집기이다. 안중원이 설치하느라 애먹었다.

설치 방법

Parsoid 설치

Parsoid(파르소이드?)를 설치한다. Parsoid는 위키텍스트와 HTML을 서로 변환하는 프로그램이다. 비주얼에디터가 이 프로그램을 기반으로 작동한다. 미디어위키 문서에서는 apt 등 패키지 매니저를 통해 Parsoid를 설치하라고 나와있지만 그러면 전혀 작동이 안 된다. 통진고위키는 git에서 클론해서 설치했다.

  1. 의존사항 설치(node, npm, git). 추가로 vim과 같은 텍스트 편집기도 필요하다.
    $ apt install node npm git
    
  2. git으로 Parsoid를 다운로드하고 Parsoid의 의존성 패키지를 설치한다.
    $ mkdir -p /opt/parsoid
    $ git clone https://gerrit.wikimedia.org/r/p/mediawiki/services/parsoid /opt/parsoid
    $ cd /opt/parsoid
    $ npm install
    
  3. 설정 파일을 작성한다.
    $ cp localsettings.example.js localsettings.js
    
    위와 같이 복사한 후, localsettings.js를 열어서 다음과 같이 편집한다.
    exports.setup = function(parsoidConfig) {
             parsoidConfig.setMwApi({
                    // 미디어위키의 api.php 주소
                     uri: 'http://wiki.tjhswiki.com/w/api.php',
              });
     };
    
    사실 미디어위키 문서를 읽어보면 아래의 config.yaml만 있으면 되는 것 같지만 다른 대부분의 도움말에서는 둘 다 설정한다.
    $ cp config.example.yaml config.yaml
    
    위와 같이 복사한 후, config.yaml를 열어서 다음과 같이 편집한다.
     mwApis:
             - # 미디어위키 api.php의 주소
               uri: 'http://wiki.tjhswiki.com/w/api.php'
               # 사이트의 도메인
               domain: 'wiki.tjhswiki.com'
    
  4. 서비스를 생성한다. 시각편집기가 언제든 Parsoid를 이용할 수 있으려면 항상 실행되고 있어야 된다.
    $ cd /etc/systemd/system/
    
    /etc/systemd/system/에서 parsoid.service 파일을 만들고 편집한다. 이 파일이 곧 서비스가 된다. 파일 이름은 사실 자유롭게 해도 되지만 파일 이름이 곧 서비스 이름이 되는 것만 기억하라.
    [Unit]
    Description=Mediawiki Parsoid web service on node.js
    Documentation=http://www.mediawiki.org/wiki/Parsoid
    Wants=local-fs.target network.target
    After=local-fs.target network.target
    
    [Install]
    WantedBy=multi-user.target
    
    [Service]
    Type=simple
    User=root
    Group=root
    WorkingDirectory=/opt/parsoid
    ExecStart=/usr/bin/npm start
    KillMode=process
    Restart=on-success
    PrivateTmp=true
    StandardOutput=syslog
    
    [1]서비스를 시작하고 부팅할 때 시작하도록 등록한다.
    $ systemctl daemon-reload
    $ systemctl start parsoid
    $ systemctl enable parsoid
    
    다음 명령어로 서비스가 잘 돌아가고 있는지 확인할 수 있다. Active: active (running)이라는 문구가 있으면 잘 돌아가고 있는 것이다.
    $ systemctl status parsoid.service
    
    다음 명령어로 인터넷 포트도 확인해봐라. 8000번 포트가 열려있으면 잘 돌아가고 있는 것이다.
    $ netstat -plnt
    

VisualEditor 확장기능 설치

다른 확장기능 설치할 때와 마찬가지로, 확장기능 배포 페이지에서 압축파일을 받아서 /var/www/html/w/extensions/ 경로에 업로드하고 압축을 푼다. 그 뒤 LocalSettings.php에 다음 내용을 추가한다.
wfLoadExtension( 'VisualEditor' );

// 선택 사항
# $wgDefaultUserOptions['visualeditor-enable'] = 1;
# $wgDefaultUserOptions['visualeditor-editor'] = "visualeditor";

// Parsoid  설정
$wgVirtualRestConfig['modules']['parsoid'] = array(
    'url' => 'http://wiki.tjhswiki.com:8000'
);

오류 및 해결법

"systemctl start parsoid" 실행할 때 오류메시지

$ systemctl start parsoid
Job for parsoid.service failed because a configured resource limit was exceeded. See "systemctl status parsoid.service" and "journalctl -xe" for details.
서비스를 시작하려고 할 때 간혹 저런 메시지가 뜨는 경우가 있다. 그럴 땐 /var/tmp 디렉토리를 만들어주면 해결된다.