백업과 복구: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
잔글편집 요약 없음
 
(같은 사용자의 중간 판 9개는 보이지 않습니다)
1번째 줄: 1번째 줄:
위키를 보수와 백업을 위한 참고문서.
위키의 보수와 백업을 위한 참고문서.


기본적으로 우분투에서 이루어진다.
기본적으로 우분투에서 이루어진다.
<br />


=백업=
=백업=
기본적으로 DB와 mediawiki 디렉터리를 백업해 두면 나중에 복원할 수 있다.
기본적으로 DB와 mediawiki 디렉터리를 백업해 두면 나중에 복원할 수 있다.


[나중에 단 한번의 파일 실행으로 자동 백업과 복구가 이루어지게끔 만들어보자.]
[나중에 단 한번의 파일 실행으로 자동 백업과 복구가 이루어지게끔 만들어보자.]  
<br />


=복구=
=복구=
==가장 먼저 설치되어야 할 것==
==가장 먼저 설치되어야 할 것==
상당히 애먹는 아이들이기 때문에 잘못 틀어지면 포멧을 해버리는 게 가장 빠르다. 하여, 가장 먼저 설치하여 기반을 닦자.
상당히 애먹는 아이들이기 때문에 잘못 틀어지면 포멧을 해버리는 게 가장 빠르다. 하여, 가장 먼저 설치하여 기반을 닦자.


일단 LocalSettings.php 안에 있는 서버주소를 제대로 기입해주자. <nowiki>http://id8436.iptime.org:8080</nowiki>
===검색관련 확장기능.(한글 검색을 이용하려면 필수.)===
{| class="wikitable mw-collapsible mw-collapsed"
!분류
!기능명
!역할
!설치방법
|-
|작동기반
|parsoid
|비쥬얼에디터 작동기반.
편집 중 시각편집으로 내용을 유지한 채 넘어갈 수 있게끔 한다.
|우분투에선 아무것도 없이 다음의 코드를 따라가면 된다.
심지어 공식안내에선 node나 npm의 설치 안내조차 없다;;; 파일도 설정파일 하나 뿐;;;
 
다른 사이트들을 참고하느라..한참 잘못간 모양이다.
 
'''설치'''
 
sudo apt install dirmngr
{| class="wikitable"
|+셋 중 하나 선택
|sudo apt-key advanced --keyserver keys.gnupg.net --recv-keys AF380A3036A03444
|-
|sudo apt-key advanced --keyserver pgp.mit.edu --recv-keys AF380A3036A03444
|-
|sudo apt-key advanced --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys AF380A3036A03444
|}
sudo apt-add-repository "deb <nowiki>https://releases.wikimedia.org/debian</nowiki> jessie-mediawiki main"
 
sudo apt-get install software-properties-common
 
sudo apt install apt-transport-https
 
sudo apt update && sudo apt install parsoid
 
'''체크 및 설정파일 변경'''
 
다음 링크가 제대로 나오면 이 링크를 설정파일의 URL에 기입한다.
 
<nowiki>http://id8436.iptime.org:8080/mediawiki/api.php</nowiki>
 
설정파일은 etc/mediawiki/parsoid 안에. 한 파일밖에 없음.
 
sudo nano /etc/mediawiki/parsoid/config.yaml 로 고치자.
 
'''최종체크'''
 
http://localhost:8142/version (외부에선 접속 안됨)
|-
|사용편의
|VisualEditor
|시각편집기를 사용할 수 있게 한다.
|'''설치'''
 
일단 parsoid가 설치되어 있어야 한다.
 
이상하게.. 명령을 이용한 방식에선 설치가 안되는데.. 파일을 받아서 압축 풀고, 올려놓는 방식으로 했더니 됬다;
 
[[mediawikiwiki:Special:ExtensionDistributor/VisualEditor|1.34버전 링크]]
 
'''LocalSetting 설정'''
 
다음 내용을 LocalSetting 안에 넣어준다.
 
//VisualEditor.시각편집(비주얼에디터)에 대하여.
 
wfLoadExtension( 'VisualEditor' );
 
// Enable by default for everybody
 
$wgDefaultUserOptions['visualeditor-enable'] = 1;
 
// Optional: Set VisualEditor as the default for anonymous users
 
// otherwise they will have to switch to VE
 
// $wgDefaultUserOptions['visualeditor-editor'] = "visualeditor";
 
// Don't allow users to disable it
 
$wgHiddenPrefs[] = 'visualeditor-enable';
 
$wgVirtualRestConfig['modules']['parsoid'] = array(
 
    // URL to the Parsoid instance
 
    // Use port 8142 if you use the Debian package
 
    'url' => '<nowiki>http://localhost:8142'</nowiki>,
 
    // Parsoid "domain", see below (optional)
 
    'domain' => 'localhost',
 
    // Parsoid "prefix", see below (optional)
 
    'prefix' => 'localhost'
 
);
 
// OPTIONAL: Enable VisualEditor's experimental code features
 
<nowiki>#</nowiki>$wgDefaultUserOptions['visualeditor-enable-experimental'] = 1;
 
 
'''재시작'''
 
sudo service apache2 restart
 
sudo service parsoid restart
 
'''확인'''
 
위키에 접속해 보면 편집 탭과 원본편집 탭 2개가 나타난다.
 
눌러서 시각편집기로 편집이 되는지 확인하자.
|}
 
===검색관련 확장기능.===
{| class="wikitable"
{| class="wikitable"
!기능명
!기능명
142번째 줄: 20번째 줄:
|java
|java
|아래 이어지는 것들을 위해.
|아래 이어지는 것들을 위해.
|다른 건 모르겠고, 8버전으로 설치하면 되더라;
|보통 자바 설치 안되어있으니 설치 진행.
{| class="wikitable"
{| class="wikitable"
|+작업
|+작업
149번째 줄: 27번째 줄:
|-
|-
|JDK설치 명령어
|JDK설치 명령어
|apt-get install openjdk-8-jdk -y
|Elastica버전에 맞는 Elasticsearch버전을 찾고 이에 맞는 자바를 아래 중 하나로 설치한다.(열받게도... 최신버전이 적절하지 않을 때가 많다.)
apt-get install openjdk-8-jdk -y
apt-get install openjdk-11-jdk
위가 오래되어 안되기도 하는데.. 그럼 apt install default-jdk -y
설치할 수 있는 버전으로 설치한다.
|-
|-
|확인
|확인
155번째 줄: 37번째 줄:
javac -version
javac -version
|}
|}
<br />
|-
|-
|Elasticsearch
|Elasticsearch
|다음 검색기능들을 사용하기 위한 기반
|다음 검색기능들을 사용하기 위한 기반
|독립된 서버이다.(젠장, 위키버전마다 요구하는 버전이 또 다르다;;)
|독립된 서버이다.(젠장, 위키버전마다 요구하는 버전이 또 다르다;;) sql처럼 독립된 것이니, 도커 따위를 사용한다면 외부의 주소를 따로 지정하여 쓰는 편이 좋다.
사전에 Java와 Javac를 설치해야 한다.
외부 Elasticsearch를 사용하려면 다음과 같은 과정이 필요하다.
[https://zetawiki.com/wiki/%EC%9A%B0%EB%B6%84%ED%88%AC16_Elasticsearch_5.4_%EC%84%A4%EC%B9%98 링크]를 따라가며 잘 설치해보자.
{| class="wikitable"
!과정
!설치방법
|-
|설정파일 변경.
|호스트의 설정파일을 변경한다.
 
* sudo nano /etc/elasticsearch/elasticsearch.yml파일 내부의 다음 내용들의 주석을 풀어준다.
cluster.name: my-application
network.host: 0.0.0.0  # 주소를 0.0.0.0으로 해야 외부접속이 가능하다.
discovery.seed_hosts: ["host1", "host2"]
|-
|확인
|curl -X GET '<nowiki>http://192.168.0.*:9200'</nowiki>
등의 명령으로 호스트에서의 작동을 확인한다.
|}실행에 2G 이상의 메모리가 확보되어야 실행이 된다.
사전에 Java와 Javac를 설치해야 한다. [https://zetawiki.com/wiki/%EC%9A%B0%EB%B6%84%ED%88%AC16_Elasticsearch_5.4_%EC%84%A4%EC%B9%98 링크]를 참고하여 구성하였다.


(sudo -i 를 통해 root권한으로 해야 한다.)
(sudo -i 를 통해 root권한으로 해야 한다.)
168번째 줄: 65번째 줄:
!설치방법
!설치방법
|-
|-
|wget설치(일반적으로 설치되어 있다.)
|설치
|apt install wget -y
|apt install elasticsearch
안되면 아래 과정 진행 후 다시.(아마 보통 안될걸?)
https://www.mediawiki.org/wiki/Extension:CirrusSearch<nowiki/>에 위키와 elasticsearch의 버전정보에 대하여 나와 있다.
{| class="wikitable"
|
* wget설치(일반적으로 설치되어 있다.)
* gnupg설치(일반적으로 설치되어 있다.)
* PGP키 추가
* apt-transport-https설치
|<nowiki>apt install wget -y && apt install gnupg -y && wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add - && apt install apt-transport-https</nowiki>
|-
|-
|gnupg설치(일반적으로 설치되어 있다.)
|
|apt install gnupg -y
* APT저장소 추가
|<nowiki>echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list</nowiki>
위 숫자는 버전에 맞춰 변경해줘가며 기입.(7.x 2개 바꿔주어야 함.)
|-
|-
|PGP키 추가
|
|<nowiki>wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -</nowiki>
* 업데이트
* 다시 설치 도전
|apt update && apt install elasticsearch
|}
|-
|-
|apt-transport-https설치
|
|apt install apt-transport-https
* systemctl설치
|-
* 데몬 리로드
|APT저장소 추가
*
|<nowiki>echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-6.x.list</nowiki>
|서버가 종료되고 시작할 때 자동실행되도록 데몬 등록 후 실행.
|-
apt install systemctl -y && systemctl daemon-reload
|업데이트
|apt update
|-
|설치(6.5.4 recommended)
|apt install elasticsearch=6.5.4
|-
|systemctl설치
systemd설치
|apt install systemctl -y
|-
|데몬 리로드
|systemctl daemon-reload
|-
|-
|시작
|시작
|systemctl start elasticsearch.service
|service elasticsearch start 안되면 systemctl start elasticsearch.service
재부팅 시 자동 실행되게끔.
sudo service elasticsearch enable
|-
|-
|확인
|확인
9200과 9300포트가 찍히면 정상.
9200과 9300포트가 찍히면 정상.
|<nowiki>ps -ef | grep -i elasticsearch</nowiki>
|curl "localhost:9200"
 
위의 명령으로만 확인해도 실행확인은 되지. curl 안되면 apt install curl
<nowiki>ps -ef | grep -i elasticsearch</nowiki>
netstat -tnlp | grep java
netstat -tnlp | grep java


(netstat 명령이 안되면 아래 설치.)
(netstat 명령이 안되면 아래 설치.)
|-
|-
|netstat설치
|netstat설치
|apt install net-tools
|apt install net-tools
위 명령으로 여러 툴을 동시에 설치한다.(netstat만 설치하기엔 까다롭다)
위 명령으로 여러 툴을 동시에 설치한다.(netstat만 설치하기엔 까다롭다)
|}
시도해보고 있는 것(의미가 있는지는 의문이다;)
{| class="wikitable"
!과정
!설치방법
|-
|우분투의 언어 설정
|
* <code>apt-get update && apt-get install -y locales</code>
* <code>locale-gen ko_KR.UTF-8</code>
* <code>update-locale LANG=ko_KR.UTF-8</code>
변경사항이 적용되려면... 시스템이 재시작되어야 한다.
|-
|mysql 문자셋 설정
|mysql에 접속하여 실행한다.
* use smwiki240501
* ALTER DATABASE smwiki240501 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
bash에서 실행.
* sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
아래 내용을 설정파일 섹션에 추가하거나 변형한다.
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4
|}
nori 플러그인 설치.(그닥 효과는 없는 듯하다....) 아무래도 한글검색에서 한계가 느껴져 설치해본다.
{| class="wikitable"
!과정
!설치방법
|-
|-
|버전확인
|Elasticsearch 디렉토리로 이동.
|curl "localhost:9200"
|cd /usr/share/elasticsearch
|-
|설치
|sudo ./bin/elasticsearch-plugin install analysis-nori
|}
|}
|-
|-
223번째 줄: 169번째 줄:
!방법
!방법
|-
|-
|[[mediawikiwiki:Special:ExtensionDistributor/Elastica|링크]]에서 다운 후, extension 폴더에 옮긴 긴다.
|미디어위키 디렉토리에서 진행.
|git clone -b REL1_35 "<nowiki>https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Elastica.git</nowiki>" extensions/Elastica
|버전은 다시 수정해서 기입하기.
git clone -b REL1_41 "<nowiki>https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Elastica.git</nowiki>" extensions/Elastica
|-
|-
|컴포저 설치
|컴포저 설치
|apt install composer -y
|apt install composer -y
공식 도커로 설치하는 경우, 아무것도 없어서 아래의 과정을 진행해주어야 한다.
[아래 과정은 끝까지 성공하진 못했음;;;]
* apt-get install software-properties-common
* add-apt-repository ppa:ondrej/php(이게 안되면 apt-get install python3-launchpadlib 후에 다시 하면 되긴 함.)add-apt-repository ppa:ondrej/apache2
|-
|-
|Elastica 디렉터리에서 명령 실행.
|Elastica 디렉터리에서 명령 실행.
(composer관련 필요한 건 알아서 설치한다.)
(composer관련 필요한 건 알아서 설치한다.)
|composer install --no-dev
|composer install --no-dev
238번째 줄: 189번째 줄:
(기본 디렉토리에서)
(기본 디렉토리에서)
|echo "wfLoadExtension( 'Elastica' );" >> LocalSettings.php
|echo "wfLoadExtension( 'Elastica' );" >> LocalSettings.php
|}이후 아래 설치링크를 따라가되, 이전 작업은 생략하자.
|}
 
이후 아래 설치링크를 따라가되, 이전 작업은 생략하자.
[[특수:버전]] 문서에서 설치 되었는지 확인.
[[특수:버전]] 문서에서 설치 되었는지 확인.
|-
|-
|CirrusSearch
|CirrusSearch
|ElasticSearch를 위키에서 제어하기 위한 확장기능.
|ElasticSearch를 위키에서 제어하기 위한 확장기능.
검색창에서 실제로 작동.
검색창에서 실제로 작동.
|[https://zetawiki.com/wiki/%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_Elastica,_CirrusSearch_%EC%84%A4%EC%B9%98 링크를 참조하여 진행해보자.]
|[https://zetawiki.com/wiki/%EB%AF%B8%EB%94%94%EC%96%B4%EC%9C%84%ED%82%A4_Elastica,_CirrusSearch_%EC%84%A4%EC%B9%98 링크]를 참고하여 구성하였다.
https://www.mediawiki.org/wiki/Extension:CirrusSearch
https://www.mediawiki.org/wiki/Extension:CirrusSearch 복잡하니.. 명령 후에 떠오르는 메시지를 찬찬히 보며 잘 따라가길.
복잡하니.. 명령 후에 떠오르는 메시지를 찬찬히 보며 잘 따라가길.


일반 검색규약을 따르는듯. Help페이지가 따로 있다.
일반 검색규약을 따르는듯. Help페이지가 따로 있다.
256번째 줄: 205번째 줄:
|-
|-
|[[mediawikiwiki:Special:ExtensionDistributor/Elastica|링크]]에서 다운 후, extension 폴더에 옮긴 긴다.
|[[mediawikiwiki:Special:ExtensionDistributor/Elastica|링크]]에서 다운 후, extension 폴더에 옮긴 긴다.
|git clone -b REL1_35 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch</nowiki>" extensions/CirrusSearch
|버전은 수정해서 기입.
git clone -b REL1_41 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch</nowiki>" extensions/CirrusSearch
|-
|-
|LocalSettings에 반영.
|LocalSettings에 반영.
266번째 줄: 216번째 줄:
|-
|-
|php 실행
|php 실행
|버전에 따라  실수할 수 있으니, /extensions/CirrusSearch/maintenance 안에서 하자.
/extensions/CirrusSearch/maintenance 안에서.
 
|php UpdateSearchIndexConfig.php
php UpdateSearchIndexConfig.php  
|-
|-
|LocalSettings 변경
|LocalSettings 변경
274번째 줄: 223번째 줄:
|-
|-
|php 실행(인덱스 만들기)
|php 실행(인덱스 만들기)
/extensions/CirrusSearch/maintenance 안에서.
mysql처럼 특정 데이터를 서버에 저장하는듯.
|이번엔 시간이 상당히 오래걸린다.
|이번엔 시간이 상당히 오래걸린다.
php ForceSearchIndex.php --skipLinks --indexOnSkip
php ForceSearchIndex.php --skipLinks --indexOnSkip


php ForceSearchIndex.php --skipParse
php ForceSearchIndex.php --skipParse
빨리 끝나는 경우도 있는데.. 이땐 한글검색이 가능하게 되기까지 반영시간이 있다.(최신기능인듯.)
|-
|-
|LocalSettings 변경
|LocalSettings 변경
|직접 입력한다.
|직접 입력한다.
$wgSearchType = 'CirrusSearch';
$wgSearchType = 'CirrusSearch';
|}
|}
나중에 DB를 바꾼다든가 할 땐 $wgDisableSearchUpdate = true; 를 넣어주는 것부터 하면 될듯.
나중에 DB를 바꾼다든가, Elasticsearch를 업데이트 할 땐 $wgDisableSearchUpdate = true; 를 넣어주는 것부터 하면 될듯.
|-
|-
|AdvancedSearch
|AdvancedSearch
|특수:검색 기능 제공. Special:Search기능 강화.
|특수:검색 기능 제공. Special:Search기능 강화.
CirrusSearch를 토대로 작동한다.
CirrusSearch를 토대로 작동한다.


306번째 줄: 256번째 줄:
|echo "wfLoadExtension( 'AdvancedSearch' );" >> LocalSettings.php
|echo "wfLoadExtension( 'AdvancedSearch' );" >> LocalSettings.php
|}
|}
https://www.mediawiki.org/wiki/Special:ExtensionDistributor?extdistname=AdvancedSearch&extdistversion=REL1_34
https://www.mediawiki.org/wiki/Special:ExtensionDistributor?extdistname=AdvancedSearch&extdistversion=REL1_34 굉장히 간단. 폴더에 옮겨둔 후, LocalSettings에 <code>wfLoadExtension( 'AdvancedSearch' );</code>추가
굉장히 간단. 폴더에 옮겨둔 후, LocalSettings에 <code>wfLoadExtension( 'AdvancedSearch' );</code>추가
|}
 
===먼저 설치하면 좋을 편의기능===
{| class="wikitable"
!분류
!기능명
!역할
!설치방법
|-
|사용편의
|Echo
|각종 알림들을 이메일이 아닌, 위키 내에서 알릴 수 있도록 한다.
|미디어위키 디렉토리에서..
git clone -b REL1_35 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo</nowiki>" extensions/Echo
 
echo "wfLoadExtension( 'Echo' );" >> LocalSettings.php
 
<code>php maintenance/update.php</code> 를 실행.
 
(도커를 이용한다면 docker-compose exec mediawiki php maintenance/update.php)
 
그럼 데이터베이스가 업데이트 되면서 위키 우측 상단에 종모양의 알림기능이 활성화된다.
|}
|}


364번째 줄: 291번째 줄:
비주얼에디터 사용이 안되서.. 굳이 사용하지 않게 되네..
비주얼에디터 사용이 안되서.. 굳이 사용하지 않게 되네..
|git clone -b REL1_35 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue</nowiki>" skins/MinervaNeue
|git clone -b REL1_35 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue</nowiki>" skins/MinervaNeue
다음에 내용을 LocalSettings.php에 입력한다.
다음에 내용을 LocalSettings.php에 입력한다.


378번째 줄: 304번째 줄:


===이외 작업===
===이외 작업===
====DB백업====
====DB백업====
크론을 통해 하루에 한 번 자동으로 백업되게 만들자. 혹시나 중간에 망가져도 살릴 수 있게끔.(백업파일 용량이 100MB를 넘길 때까진 매일 해보자.)
크론을 통해 하루에 한 번 자동으로 백업되게 만들자. 혹시나 중간에 망가져도 살릴 수 있게끔.(백업파일 용량이 100MB를 넘길 때까진 매일 해보자.)
391번째 줄: 316번째 줄:
|내용등록
|내용등록
|#!/bin/bash
|#!/bin/bash
        mysql_path='/usr/bin/mysql/' 
        mysql_path='/usr/bin/mysql/'  


        month=$(date +%y'y'%m'm'%d'd'%H%M%S)
        month=$(date +%y'y'%m'm'%d'd'%H%M%S)
401번째 줄: 326번째 줄:
        savePath="/home/id8436/Downloads/"
        savePath="/home/id8436/Downloads/"


/usr/bin/mysqldump -u root my_wiki > ${savePath}${fileName} 
/usr/bin/mysqldump -u root my_wiki > ${savePath}${fileName}  
 




440번째 줄: 364번째 줄:
|교사들이 수업을 하고 오면 다시 로그인을 해야 하는 상황이 발생한다.
|교사들이 수업을 하고 오면 다시 로그인을 해야 하는 상황이 발생한다.
때문에 로그인 유지시간을 4시간으로 늘린다.
때문에 로그인 유지시간을 4시간으로 늘린다.
|php.ini 파일을 찾아  
|php.ini 파일을 찾아
After this number of seconds, stored data will be seen as 'garbage' and
After this number of seconds, stored data will be seen as 'garbage' and


452번째 줄: 376번째 줄:
|위키의 겉모양을 꾸며준다.
|위키의 겉모양을 꾸며준다.
|다운받아 skin폴더 안에 둔 후, <code>wfLoadSkin( '폴더명' );</code> 형식으로 설치한다.
|다운받아 skin폴더 안에 둔 후, <code>wfLoadSkin( '폴더명' );</code> 형식으로 설치한다.
미디어위키 기반의 위키지만, 공식적으로 관리되는 스킨이 아닌 경우,  
미디어위키 기반의 위키지만, 공식적으로 관리되는 스킨이 아닌 경우,


해당 위키의 '특수:버전'문서에서 스킨 이름을 클릭하면 스킨을 다운받을 수 있는 페이지로 이동한다.
해당 위키의 '특수:버전'문서에서 스킨 이름을 클릭하면 스킨을 다운받을 수 있는 페이지로 이동한다.
502번째 줄: 426번째 줄:
|유튜브 영상을 삽입하기 위한 확장기능.
|유튜브 영상을 삽입하기 위한 확장기능.
|git clone <nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/</nowiki><code>YouTube</code> --branch REL1_35 extensions/<code>YouTube</code>echo "<code>wfLoadExtension( 'YouTube' );</code>" >> LocalSettings.php
|git clone <nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/</nowiki><code>YouTube</code> --branch REL1_35 extensions/<code>YouTube</code>echo "<code>wfLoadExtension( 'YouTube' );</code>" >> LocalSettings.php
<br />
|-
|-
|외부이미지 사용
|외부이미지 사용
|외부 이미지를 사용하려면 설정을 변경해야 한다.
|외부 이미지를 사용하려면 설정을 변경해야 한다.
이 옵션을 해두면 본문에 이미지 링크만 둬도 자동으로 이미지를 띄워준다.
|$wgAllowExternalImages = true;
|$wgAllowExternalImages = true;
|-
|-
603번째 줄: 527번째 줄:
===둘러보기 소도구===
===둘러보기 소도구===


*searchFocus[ResourceLoader]|searchFocus.js
* searchFocus[ResourceLoader]|searchFocus.js


*modrollback[ResourceLoader|rights=rollback]|modrollback.js
* modrollback[ResourceLoader|rights=rollback]|modrollback.js


*ReferenceTooltips[ResourceLoader|default]|ReferenceTooltips-ko.js|ReferenceTooltips.css
* ReferenceTooltips[ResourceLoader|default]|ReferenceTooltips-ko.js|ReferenceTooltips.css


*Navigation_popups[ResourceLoader|dependencies=mediawiki.user,mediawiki.util]|popups.js|popups-strings-ko.js|navpop.css
* Navigation_popups[ResourceLoader|dependencies=mediawiki.user,mediawiki.util]|popups.js|popups-strings-ko.js|navpop.css


===편집 소도구===
===편집 소도구===


*HotCat[ResourceLoader|rights=edit,purge]|HotCat.js
* HotCat[ResourceLoader|rights=edit,purge]|HotCat.js


*noSignAlert[ResourceLoader]|noSignAlert.js
* noSignAlert[ResourceLoader]|noSignAlert.js


*purgetab[ResourceLoader|dependencies=mediawiki.util,mediawiki.api,mediawiki.notify]|purgetab.js
* purgetab[ResourceLoader|dependencies=mediawiki.util,mediawiki.api,mediawiki.notify]|purgetab.js


*charinsert[ResourceLoader|peers=charinsert-styles]|charinsert.js
* charinsert[ResourceLoader|peers=charinsert-styles]|charinsert.js


*charinsert-core[ResourceLoader|hidden|dependencies=mediawiki.toolbar,jquery.textSelection,user]|charinsert-core.js
* charinsert-core[ResourceLoader|hidden|dependencies=mediawiki.toolbar,jquery.textSelection,user]|charinsert-core.js


*charinsert-styles[ResourceLoader|hidden|type=styles]|charinsert-styles.css
* charinsert-styles[ResourceLoader|hidden|type=styles]|charinsert-styles.css


===인터페이스 소도구===
===인터페이스 소도구===


*exlinks[ResourceLoader|dependencies=mediawiki.util]|exlinks.js
* exlinks[ResourceLoader|dependencies=mediawiki.util]|exlinks.js


*RollbackComment[ResourceLoader|rights=rollback]|RollbackComment.js
* RollbackComment[ResourceLoader|rights=rollback]|RollbackComment.js


- 소도구 항목에 붉은색으로 뜬다는 건 아직 설치가 되지 않았다는 것. 붉은 글씨의 .js 문서를 눌러주면 만들기화면이 나온다.
- 소도구 항목에 붉은색으로 뜬다는 건 아직 설치가 되지 않았다는 것. 붉은 글씨의 .js 문서를 눌러주면 만들기화면이 나온다.
644번째 줄: 568번째 줄:
- 각주 말풍선 - 각주 번호 위로 마우스 커서를 가리키면 각주 내용을 볼 수 있습니다.
- 각주 말풍선 - 각주 번호 위로 마우스 커서를 가리키면 각주 내용을 볼 수 있습니다.
|git clone <nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets</nowiki> --branch REL1_35 extensions/Gadgets
|git clone <nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets</nowiki> --branch REL1_35 extensions/Gadgets
echo "wfLoadExtension( 'Gadgets' );" >> LocalSettings.php
echo "wfLoadExtension( 'Gadgets' );" >> LocalSettings.php
|-
|-
660번째 줄: 583번째 줄:


- 소도구 옮기기에 사용하려면... 소도구 내보내기로 파일을 다운받은 후에 특수:가져오기 에서 인터위키접두어(보통 출처위키명)를 입력한 후 미디어위키 이름공간으로 가져와야 한다.
- 소도구 옮기기에 사용하려면... 소도구 내보내기로 파일을 다운받은 후에 특수:가져오기 에서 인터위키접두어(보통 출처위키명)를 입력한 후 미디어위키 이름공간으로 가져와야 한다.
|
|}
=== 광고(애드센스) ===
{| class="wikitable"
!과정
!역할
!설치방법
|-
|사이트 등록
|구글 애드센스에서 사이트 등록.
이곳에서 메타 태그를 얻는다.
사이트에 게재할 수 있는 권한을 획득해야 한다.
광고 게재 권한은 오래걸리면 4주도 간다고..
|https://www.google.com/adsense/
|-
|ads.txt 만들고 적용.
|
* 사이트를 클릭하고 Ads.txt 스니펫을 클릭하면 내용물을 볼 수 있다.
* 루트 디렉토리에서 Ads.txt 파일을 만든다.
|루트 디렉토리는 우분투라면 cd /etc/apache2/sites-available 의 설정을 살펴보면 찾아볼 수 있다.
sudo nano Ads.txt
위 명령 따위로 txt 생성 후 내용을 복붙.
도메인/Ads.txt 로 접근했을 때 내용이 나온다면 OK.
|-
|LocalSettings.php 수정
|
* 메타 태그 부분을 대체한 후 LocalSettings.php에 넣는다.
* 이후 애드센스에서 사이트 소유권 확인이 마쳐진다.
|$wgHooks['BeforePageDisplay'][] = function ( $out, $skin ) {
    $out->addHeadItem('adsense-meta', ''''<meta name="google-site-verification" content="YOUR_VERIFICATION_CODE" />'''<nowiki/>');
};
|-
|광고 설정
|편한 방식으로 지정.
* 여기에선 '사이트 기준' 광고를 이용한다.
* 이 페이지의 '코드 가져오기'를 통해 <script를 얻을 수 있다.
|광고 탭에서 옵션을 적절히 설정.
|-
|LocalSettings.php 수정
|위에서 얻은 것을 우측 방식으로 기입한다.
여기까지가 사이트 기준 광고 완료.
반영까지는 1시간까지 걸리기도 한다고 한다.
|$wgHooks['BeforePageDisplay'][] = function ( $out, $skin ) {    $out->addHeadItem('adsense', ''''<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2242961523167199" crossorigin="anonymous"></script>'''<nowiki/>'); };
|-
| colspan="3" |광고 단위를 사용하는 경우.
|-
|관련 확장기능 설치.
|버전에 따라 설정이 달라지기도 해서, 확장기능으로 하는 편이 좋을듯.
|버전명 맞춰서 설치. extention 디렉토리에서.
git clone -b REL1_41 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/AdManager</nowiki>"
LocalSettings.php에 아래 코드를 더한다.
<code>wfLoadExtension( 'AdManager' );</code>
|-
|
|
|
|
|}
|}
671번째 줄: 652번째 줄:
|로고 바꾸기
|로고 바꾸기
|위키의 로고에 들어갈 이미지
|위키의 로고에 들어갈 이미지
|$wgLogo = '경로' 를 해주면 되지만,  
|$wgLogo = '경로' 를 해주면 되지만,
 
서버컴퓨터 안에서 /var/lib/mediawiki/resources/assets 안의 wiki.png 를 바꿔주면 될듯.
서버컴퓨터 안에서 /var/lib/mediawiki/resources/assets 안의 wiki.png 를 바꿔주면 될듯.


682번째 줄: 662번째 줄:
|
|
|(없어서 만들어야 해.)$wgLogo 아래 $wgFavicon = "경로"; 를 해주면 넣을 수 있다.
|(없어서 만들어야 해.)$wgLogo 아래 $wgFavicon = "경로"; 를 해주면 넣을 수 있다.
$wgFavicon = "$wgResourceBasePath/resources/assets/favicon.png";
$wgFavicon = "$wgResourceBasePath/resources/assets/favicon.png"; 현재는 Logo와 같은 경로의 favicon.png로 되어있다.
현재는 Logo와 같은 경로의 favicon.png로 되어있다.


16*16 픽셀이 적당할듯.
16*16 픽셀이 적당할듯.
732번째 줄: 711번째 줄:
위 형태로 교사들만 편집할 수 있는 권한을 만들 수 있다.
위 형태로 교사들만 편집할 수 있는 권한을 만들 수 있다.
|-
|-
|광고달기
|<s>광고달기</s>
|
|
|위젯이나 확장기능을 쓸 수도 있지만, 간단하게 Localsetting에 기입하는 게 가장 편한듯.
|<s>위젯이나 확장기능을 쓸 수도 있지만, 간단하게 Localsetting에 기입하는 게 가장 편한듯. 머리글</s><syntaxhighlight lang="php">
머리글<syntaxhighlight lang="php">
$wgHooks['SiteNoticeAfter'][] = function(&$siteNotice, $skin) {
$wgHooks['SiteNoticeAfter'][] = function(&$siteNotice, $skin) {
         $siteNotice .= <<< EOT
         $siteNotice .= <<< EOT
752번째 줄: 730번째 줄:
         return true;
         return true;
};
};
</syntaxhighlight>바닥글<syntaxhighlight lang="php">
</syntaxhighlight><s>바닥글</s><syntaxhighlight lang="php">
$wgHooks['SkinAfterContent'][] = function(&$data, $skin) {
$wgHooks['SkinAfterContent'][] = function(&$data, $skin) {
         global $myAdCode;
         global $myAdCode;
773번째 줄: 751번째 줄:
         return true;
         return true;
};
};
</syntaxhighlight>광고코드는 구글 애드센스에서 광고->개요->광고단위기준 에서 코드를 긁어오면 된다.
</syntaxhighlight><s>광고코드는 구글 애드센스에서 광고->개요->광고단위기준 에서 코드를 긁어오면 된다.</s>
|-
|<s>광고 테스트</s>
|<s>위젯을 쓰는 것도 좋은 방법일듯;</s>
|
|
|
|}
 
=== 기타 확장기능 ===
{| class="wikitable mw-collapsible mw-collapsed"
!분류
!기능명
!역할
!설치방법
|-
|조회수 카운팅
|<code>HitCounters</code>
|각 문서가 몇 번 읽혔는지 카운팅한다.
페이지 가장 하단에 표시해준다.
|'''설치'''
git clone <nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/HitCounters</nowiki>
 
'''체크 및 설정파일 변경'''
 
LocalSettings.php 수정
 
wfLoadExtension( 'HitCounters' );
 
'''스키마 업데이트'''
 
mediawiki 디렉토리에서 php maintenance/update.php
|}
= 이젠 필요없어진 것들. =
정식 extensions에 포함되면서 설치가 필요없어진 것들은... 여기에 옮겨둔다.
{| class="wikitable mw-collapsible mw-collapsed"
|+비주얼에디터
!분류
!기능명
!역할
!설치방법
|-
|작동기반
|parsoid
|비쥬얼에디터 작동기반.
편집 중 시각편집으로 내용을 유지한 채 넘어갈 수 있게끔 한다.
|우분투에선 아무것도 없이 다음의 코드를 따라가면 된다.
심지어 공식안내에선 node나 npm의 설치 안내조차 없다;;; 파일도 설정파일 하나 뿐;;;
 
다른 사이트들을 참고하느라..한참 잘못간 모양이다.
 
'''설치'''
 
sudo apt install dirmngr
{| class="wikitable"
|+셋 중 하나 선택
|sudo apt-key advanced --keyserver keys.gnupg.net --recv-keys AF380A3036A03444
|-
|sudo apt-key advanced --keyserver pgp.mit.edu --recv-keys AF380A3036A03444
|-
|sudo apt-key advanced --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys AF380A3036A03444
|}
sudo apt-add-repository "deb <nowiki>https://releases.wikimedia.org/debian</nowiki> jessie-mediawiki main"
 
sudo apt-get install software-properties-common
 
sudo apt install apt-transport-https
 
sudo apt update && sudo apt install parsoid
 
'''체크 및 설정파일 변경'''
 
다음 링크가 제대로 나오면 이 링크를 설정파일의 URL에 기입한다.
 
<nowiki>http://id8436.iptime.org:8080/mediawiki/api.php</nowiki>
 
설정파일은 etc/mediawiki/parsoid 안에. 한 파일밖에 없음.
 
sudo nano /etc/mediawiki/parsoid/config.yaml 로 고치자.
 
'''최종체크'''
 
http://localhost:8142/version (외부에선 접속 안됨)
|-
|사용편의
|VisualEditor
|시각편집기를 사용할 수 있게 한다.
|'''설치'''
일단 parsoid가 설치되어 있어야 한다.
 
이상하게.. 명령을 이용한 방식에선 설치가 안되는데.. 파일을 받아서 압축 풀고, 올려놓는 방식으로 했더니 됬다;
 
[[mediawikiwiki:Special:ExtensionDistributor/VisualEditor|1.34버전 링크]]
 
'''LocalSetting 설정'''
 
다음 내용을 LocalSetting 안에 넣어준다.
 
//VisualEditor.시각편집(비주얼에디터)에 대하여.
 
wfLoadExtension( 'VisualEditor' );
 
// Enable by default for everybody
 
$wgDefaultUserOptions['visualeditor-enable'] = 1;
 
// Optional: Set VisualEditor as the default for anonymous users
 
// otherwise they will have to switch to VE
 
// $wgDefaultUserOptions['visualeditor-editor'] = "visualeditor";
 
// Don't allow users to disable it
 
$wgHiddenPrefs[] = 'visualeditor-enable';
 
$wgVirtualRestConfig['modules']['parsoid'] = array(
 
    // URL to the Parsoid instance
 
    // Use port 8142 if you use the Debian package
 
    'url' => '<nowiki>http://localhost:8142'</nowiki>,
 
    // Parsoid "domain", see below (optional)
 
    'domain' => 'localhost',
 
    // Parsoid "prefix", see below (optional)
 
    'prefix' => 'localhost'
 
);
 
// OPTIONAL: Enable VisualEditor's experimental code features
 
<nowiki>#</nowiki>$wgDefaultUserOptions['visualeditor-enable-experimental'] = 1;
 
 
'''재시작'''
 
sudo service apache2 restart
 
sudo service parsoid restart
 
'''확인'''
 
위키에 접속해 보면 편집 탭과 원본편집 탭 2개가 나타난다.
 
눌러서 시각편집기로 편집이 되는지 확인하자.
|}
{| class="wikitable"
!분류
!기능명
!역할
!설치방법
|-
|-
|광고 테스트
|사용편의
|위젯을 쓰는 것도 좋은 방법일듯;
|Echo
| || ||
|각종 알림들을 이메일이 아닌, 위키 내에서 알릴 수 있도록 한다.
|미디어위키 디렉토리에서..
git clone -b REL1_35 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo</nowiki>" extensions/Echo
 
echo "wfLoadExtension( 'Echo' );" >> LocalSettings.php
 
<code>php maintenance/update.php</code> 를 실행.
 
(도커를 이용한다면 docker-compose exec mediawiki php maintenance/update.php)
 
그럼 데이터베이스가 업데이트 되면서 위키 우측 상단에 종모양의 알림기능이 활성화된다.
|}
|}
[[분류:관리용 문서]]
[[분류:관리용 문서]]

2024년 7월 11일 (목) 15:01 기준 최신판

위키의 보수와 백업을 위한 참고문서.

기본적으로 우분투에서 이루어진다.

백업

기본적으로 DB와 mediawiki 디렉터리를 백업해 두면 나중에 복원할 수 있다.

[나중에 단 한번의 파일 실행으로 자동 백업과 복구가 이루어지게끔 만들어보자.]

복구

가장 먼저 설치되어야 할 것

상당히 애먹는 아이들이기 때문에 잘못 틀어지면 포멧을 해버리는 게 가장 빠르다. 하여, 가장 먼저 설치하여 기반을 닦자.

검색관련 확장기능.(한글 검색을 이용하려면 필수.)

기능명 역할 설치방법
java 아래 이어지는 것들을 위해. 보통 자바 설치 안되어있으니 설치 진행.
작업
과정 설치방법
JDK설치 명령어 Elastica버전에 맞는 Elasticsearch버전을 찾고 이에 맞는 자바를 아래 중 하나로 설치한다.(열받게도... 최신버전이 적절하지 않을 때가 많다.)

apt-get install openjdk-8-jdk -y apt-get install openjdk-11-jdk 위가 오래되어 안되기도 하는데.. 그럼 apt install default-jdk -y 설치할 수 있는 버전으로 설치한다.

확인 java -version

javac -version

Elasticsearch 다음 검색기능들을 사용하기 위한 기반 독립된 서버이다.(젠장, 위키버전마다 요구하는 버전이 또 다르다;;) sql처럼 독립된 것이니, 도커 따위를 사용한다면 외부의 주소를 따로 지정하여 쓰는 편이 좋다.

외부 Elasticsearch를 사용하려면 다음과 같은 과정이 필요하다.

과정 설치방법
설정파일 변경. 호스트의 설정파일을 변경한다.
  • sudo nano /etc/elasticsearch/elasticsearch.yml파일 내부의 다음 내용들의 주석을 풀어준다.

cluster.name: my-application network.host: 0.0.0.0 # 주소를 0.0.0.0으로 해야 외부접속이 가능하다. discovery.seed_hosts: ["host1", "host2"]

확인 curl -X GET 'http://192.168.0.*:9200'

등의 명령으로 호스트에서의 작동을 확인한다.

실행에 2G 이상의 메모리가 확보되어야 실행이 된다.

사전에 Java와 Javac를 설치해야 한다. 링크를 참고하여 구성하였다.

(sudo -i 를 통해 root권한으로 해야 한다.)

과정 설치방법
설치 apt install elasticsearch

안되면 아래 과정 진행 후 다시.(아마 보통 안될걸?) https://www.mediawiki.org/wiki/Extension:CirrusSearch에 위키와 elasticsearch의 버전정보에 대하여 나와 있다.

  • wget설치(일반적으로 설치되어 있다.)
  • gnupg설치(일반적으로 설치되어 있다.)
  • PGP키 추가
  • apt-transport-https설치
apt install wget -y && apt install gnupg -y && wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add - && apt install apt-transport-https
  • APT저장소 추가
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list

위 숫자는 버전에 맞춰 변경해줘가며 기입.(7.x 2개 바꿔주어야 함.)

  • 업데이트
  • 다시 설치 도전
apt update && apt install elasticsearch
  • systemctl설치
  • 데몬 리로드
서버가 종료되고 시작할 때 자동실행되도록 데몬 등록 후 실행.

apt install systemctl -y && systemctl daemon-reload

시작 service elasticsearch start 안되면 systemctl start elasticsearch.service

재부팅 시 자동 실행되게끔. sudo service elasticsearch enable

확인

9200과 9300포트가 찍히면 정상.

curl "localhost:9200"

위의 명령으로만 확인해도 실행확인은 되지. curl 안되면 apt install curl ps -ef | grep -i elasticsearch netstat -tnlp | grep java

(netstat 명령이 안되면 아래 설치.)

netstat설치 apt install net-tools

위 명령으로 여러 툴을 동시에 설치한다.(netstat만 설치하기엔 까다롭다)

시도해보고 있는 것(의미가 있는지는 의문이다;)

과정 설치방법
우분투의 언어 설정
  • apt-get update && apt-get install -y locales
  • locale-gen ko_KR.UTF-8
  • update-locale LANG=ko_KR.UTF-8

변경사항이 적용되려면... 시스템이 재시작되어야 한다.

mysql 문자셋 설정 mysql에 접속하여 실행한다.
  • use smwiki240501
  • ALTER DATABASE smwiki240501 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

bash에서 실행.

  • sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

아래 내용을 설정파일 섹션에 추가하거나 변형한다.

[mysqld]

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

[client]

default-character-set=utf8mb4

nori 플러그인 설치.(그닥 효과는 없는 듯하다....) 아무래도 한글검색에서 한계가 느껴져 설치해본다.

과정 설치방법
Elasticsearch 디렉토리로 이동. cd /usr/share/elasticsearch
설치 sudo ./bin/elasticsearch-plugin install analysis-nori
Elastica 탄성검색을 제공.(단어일부 검색이라든가..) 다른 기능들을 사용하기 위한 기초.

Elasticsearch를 사용하기 위한 PHP라이브러리이다.

CirrusSearch의 링크를 참조해 진행하되, 아래 작업을 먼저 하자.
과정 방법
미디어위키 디렉토리에서 진행. 버전은 다시 수정해서 기입하기.

git clone -b REL1_41 "https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Elastica.git" extensions/Elastica

컴포저 설치 apt install composer -y

공식 도커로 설치하는 경우, 아무것도 없어서 아래의 과정을 진행해주어야 한다. [아래 과정은 끝까지 성공하진 못했음;;;]

  • apt-get install software-properties-common
  • add-apt-repository ppa:ondrej/php(이게 안되면 apt-get install python3-launchpadlib 후에 다시 하면 되긴 함.)add-apt-repository ppa:ondrej/apache2
Elastica 디렉터리에서 명령 실행.

(composer관련 필요한 건 알아서 설치한다.)

composer install --no-dev

2줄 정도의 패키지 관련한 에러가 생긴다... 넘어가도 됨.

LocalSettings에 반영.

(기본 디렉토리에서)

echo "wfLoadExtension( 'Elastica' );" >> LocalSettings.php

이후 아래 설치링크를 따라가되, 이전 작업은 생략하자. 특수:버전 문서에서 설치 되었는지 확인.

CirrusSearch ElasticSearch를 위키에서 제어하기 위한 확장기능.

검색창에서 실제로 작동.

링크를 참고하여 구성하였다.

https://www.mediawiki.org/wiki/Extension:CirrusSearch 복잡하니.. 명령 후에 떠오르는 메시지를 찬찬히 보며 잘 따라가길.

일반 검색규약을 따르는듯. Help페이지가 따로 있다.

과정 방법
링크에서 다운 후, extension 폴더에 옮긴 긴다. 버전은 수정해서 기입.

git clone -b REL1_41 "https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch" extensions/CirrusSearch

LocalSettings에 반영.

(기본 디렉토리에서)

echo "wfLoadExtension( 'CirrusSearch' );" >> LocalSettings.php

이상하게 아래 건.. 제대로 기입이 안된다. 직접 입력해주어야 할듯;;

echo "$wgDisableSearchUpdate = true;" >> LocalSettings.php

php 실행

/extensions/CirrusSearch/maintenance 안에서.

php UpdateSearchIndexConfig.php
LocalSettings 변경 위에서 입력했던 $wgDisableSearchUpdate = true;를 지우거나 주석처리한다.
php 실행(인덱스 만들기)

/extensions/CirrusSearch/maintenance 안에서. mysql처럼 특정 데이터를 서버에 저장하는듯.

이번엔 시간이 상당히 오래걸린다.

php ForceSearchIndex.php --skipLinks --indexOnSkip

php ForceSearchIndex.php --skipParse

빨리 끝나는 경우도 있는데.. 이땐 한글검색이 가능하게 되기까지 반영시간이 있다.(최신기능인듯.)

LocalSettings 변경 직접 입력한다.

$wgSearchType = 'CirrusSearch';

나중에 DB를 바꾼다든가, Elasticsearch를 업데이트 할 땐 $wgDisableSearchUpdate = true; 를 넣어주는 것부터 하면 될듯.

AdvancedSearch 특수:검색 기능 제공. Special:Search기능 강화.

CirrusSearch를 토대로 작동한다.

검색할 때 고급검색이 가능해진다.

커스텀 검색필드 제작 가능.

Extension:CirrusSearch 가 설치되어 있어야 한다.
과정 방법
링크에서 다운 후, extension 폴더에 옮긴 긴다. git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/AdvancedSearch --branch REL1_35 extensions/AdvancedSearch
LocalSettings 변경 echo "wfLoadExtension( 'AdvancedSearch' );" >> LocalSettings.php

https://www.mediawiki.org/wiki/Special:ExtensionDistributor?extdistname=AdvancedSearch&extdistversion=REL1_34 굉장히 간단. 폴더에 옮겨둔 후, LocalSettings에 wfLoadExtension( 'AdvancedSearch' );추가

모바일 관련 편의기능

분류 기능명 역할 설치방법
사용편의 MobileFrontend 모바일 접속환경을 구축한다.

(기본으로 제공되는 스킨인 벡터 등은 사용이 불편)

이 확장기능 하나만으론 의미가 없다.

다음의 스킨을 설치해주어야 한다.

미디어위키 디렉토리에서..

git clone -b REL1_35 "https://gerrit.wikimedia.org/r/mediawiki/extensions/MobileFrontend" extensions/MobileFrontend

다음에 내용을 LocalSettings.php에 입력한다.

wfLoadExtension( 'MobileFrontend' );

$wgMFAutodetectMobileView = true;

MinervaNeue 모바일 환경에서 사용할 반응형 스킨.

MobileFrontend가 설치되어야 작동한다.


비주얼에디터 사용이 안되서.. 굳이 사용하지 않게 되네..

git clone -b REL1_35 "https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue" skins/MinervaNeue

다음에 내용을 LocalSettings.php에 입력한다.

wfLoadSkin( 'MinervaNeue' );

$wgMFDefaultSkinClass = 'SkinMinerva'; // 모바일 접속 환경 시 기본 스킨 설정

이후 특수:문서를 통해 설치를 확인한다.

이외 작업

DB백업

크론을 통해 하루에 한 번 자동으로 백업되게 만들자. 혹시나 중간에 망가져도 살릴 수 있게끔.(백업파일 용량이 100MB를 넘길 때까진 매일 해보자.)

과정 방법
파일만들기 /etc/cron.daily 안에 sudo nano mysql 따위의 명령으로 파일을 만든다.

sudo nano /etc/cron.daily/mysql

내용등록 #!/bin/bash

        mysql_path='/usr/bin/mysql/'

        month=$(date +%y'y'%m'm'%d'd'%H%M%S)

        fileName="backup_wikisql_${month}.sql"     

        #파일 저장 경로 지정 대부분 홈디랙토리에 생성

        savePath="/home/id8436/Downloads/"

/usr/bin/mysqldump -u root my_wiki > ${savePath}${fileName}


파일 저장경로를 usb로 정해주어도 좋겠다.

권한부여 ls -l 명령으로 다른 파일들의 권한설정을 보고 통일. 일반적으로 755이다.

sudo chmod 755 mysql

확인 프롬프트에 파일경로(/etc/cron.daily/mysql)

를 올렸을 때 아무 것도 안뜨면 이상이 없는 것.

이상이 있는 경우엔 에러가 뜬다.

log파일 다루기

리눅스:로그관리를 참고하여 넘치는 로그파일을 다른 저장장치로 넘겨주자. 그 양을 본 저장장치에서 관리하기엔 리스크가 크다.

그리고 logrotate를 사용해 로그가 지나치게 넘치지 않게, 주기적으로 처리되게끔 조정해두자.

필요에 따라 설치하거나 변경할 것

단순하게 extention 안에 설치한 후 LocalSetting만 조작하면 되는 것들 혹은 LocalSettings만 조절 하면되는 것들.

사용편의를 위한 기능

기능명 역할 설치방법
새창띄우기 외부링크를 현재 창이 아닌, 새 창에 띄우기 위한 문구. 추가하기. LocalSetting 안에 넣는다.

$wgExternalLinkTarget = '_blank';

로그인시간 교사들이 수업을 하고 오면 다시 로그인을 해야 하는 상황이 발생한다.

때문에 로그인 유지시간을 4시간으로 늘린다.

php.ini 파일을 찾아

After this number of seconds, stored data will be seen as 'garbage' and

; cleaned up by the garbage collection process.

session.gc_maxlifetime =

뒤의 원하는 초를 적어준다. 4시간은 14400초.

스킨설치 위키의 겉모양을 꾸며준다. 다운받아 skin폴더 안에 둔 후, wfLoadSkin( '폴더명' ); 형식으로 설치한다.

미디어위키 기반의 위키지만, 공식적으로 관리되는 스킨이 아닌 경우,

해당 위키의 '특수:버전'문서에서 스킨 이름을 클릭하면 스킨을 다운받을 수 있는 페이지로 이동한다.

리브레스킨 리브레스킨의 각종 세부기능에 대해선 아래 링크에서 설명하고 있다.

https://gitlab.com/librewiki/Liberty-MW-Skin/-/tree/master

로고 바꾸는 건 mediawiki/skins/Libery/img/logo.png를 바꾸면 된다.

설치에 관해선 https://wnw1005.tistory.com/229 참고. 맞는 버전이 없을 땐 master를 설치하면 되더라;

문서작성을 위한 기능

기능명 역할 설치방법
자동 넘버링 목차엔 자동으로 넘버링이 되지만, 본문엔 이 넘버링이 적용되지 않곤 한다. LocalSetting에 $wgDefaultUserOptions['numberheadings'] = 1; 추가.
CategoryTree 카테고리를 보기 쉽게 정리해준다.

- 문서 안에 <categorytree>카테고리명</categorytree>을 넣으면 시각화 된 카테고리를 보여준다.

- 문서 안에 <categorytree mode="pages" hideroot="on" style="float:right; clear:right; margin-left:1ex; border:1px solid gray; padding:0.7ex; background-color:white;">카테고리명</categorytree> 을 넣으면 오른쪽 구석에 카테고리를 보여준다.

이외 카테고리를 기입하는 다양한 방법이 제공된다.

보통 처음에 설치된다.
Cite 각주, 인용을 넣기 위함. 보통 처음에 설치된다.
Math 화학식과 수식입력이 가능해진다.

레이텍과 동일한 문법을 사용한다.

git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Math --branch REL1_35 extensions/Math

echo "wfLoadExtension( 'Math' );" >> LocalSettings.php

php maintenance/update.php

YouTube 유튜브 영상을 삽입하기 위한 확장기능. git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/YouTube --branch REL1_35 extensions/YouTubeecho "wfLoadExtension( 'YouTube' );" >> LocalSettings.php
외부이미지 사용 외부 이미지를 사용하려면 설정을 변경해야 한다.

이 옵션을 해두면 본문에 이미지 링크만 둬도 자동으로 이미지를 띄워준다.

$wgAllowExternalImages = true;
이미지 업로드 1. LocalSetting에서 업로드 설정 허용.

$wgEnableUploads = true; 가 되게끔 고쳐준다.

1-1 chown. 권한을 웹 이용자들에게 준다.

cd 해당 디랙토리(mediawiki 내의 image나 upload에.)에서 아래 명령을 실행한다.

sudo chown -R www-data:www-data images/

1-2. 파일 업로드 확장자 세팅.

LocalSetting에 추가한다.

//​파일 업로드 확장자 세팅용.

$wgFileExtensions = array(

    // 이미지 파일

    'png','gif','jpg','jpeg','svg','tif','tiff', 'bmp',

    // 문서파일

    'doc', 'docx', 'txt','hwp', 'pdf',

    // 스프레드시트 파일

    'xls', 'xlsx', 'cell',

    // 슬라이드 파일

    'ppt', 'pptx',

    // 압축 파일

    'zip', 'gz'

    );

2. upload size 조절.

php --ini 명령을 통해 경로찾기가 가능하다. 그 하위폴더의 alpache2/php.ini를 찾는다.

일반적으로.. /etc/php/7.2/apache2/php.ini 의 다음 항목을 수정한다.

change upload_max_filesize= 'number'

post_max_size = 'number'

ex) 20M 이라고 써주면 20메가까지 업로드 가능.

- localSettings.php 도 수정(일반적으로 추가해주어야 한다.)

$wgUploadSizeWarning = 20971520;

$wgMaxUploadSize = 20971520;

2-2. 업로드 권한 설정.

LocalSetting 안에서

$wgGroupPermissions['user']['upload'] = false;

"uploadaccess"라는 특별한 그룹을 생성하고 그들에게만 권한을 준다면,

$wgGroupPermissions['uploadaccess']['upload'] = true;

Scribunto 코드상자를 기입하기 위함.
SyntaxHighlight 기입된 코드를 색으로 구분하여 가독성을 높여준다.

관리를 위한 기능

기능명 역할 설치방법
소도구 위키 사용자가 로그인시 자신의 환경설정에서 JavaScript 또는 CSS 로 마련된 기능(gadgets, 소도구)을 골라쓸 수 있도록 한다. 다른 미디어위키에서 사용되는 JavaScript 또는 CSS를 옮겨와 사용할 수 있다.

1.35부턴 설치되어 있음.


- 보통 다른 위키의 미디어위키:Gadgets-definition에서 가져온다.

다음은 씨실과 날실 블로그에서 추천한 소도구들. 이것들을 그냥 복붙하면 끝.

둘러보기 소도구

  • searchFocus[ResourceLoader]|searchFocus.js
  • modrollback[ResourceLoader|rights=rollback]|modrollback.js
  • ReferenceTooltips[ResourceLoader|default]|ReferenceTooltips-ko.js|ReferenceTooltips.css
  • Navigation_popups[ResourceLoader|dependencies=mediawiki.user,mediawiki.util]|popups.js|popups-strings-ko.js|navpop.css

편집 소도구

  • HotCat[ResourceLoader|rights=edit,purge]|HotCat.js
  • noSignAlert[ResourceLoader]|noSignAlert.js
  • purgetab[ResourceLoader|dependencies=mediawiki.util,mediawiki.api,mediawiki.notify]|purgetab.js
  • charinsert[ResourceLoader|peers=charinsert-styles]|charinsert.js
  • charinsert-core[ResourceLoader|hidden|dependencies=mediawiki.toolbar,jquery.textSelection,user]|charinsert-core.js
  • charinsert-styles[ResourceLoader|hidden|type=styles]|charinsert-styles.css

인터페이스 소도구

  • exlinks[ResourceLoader|dependencies=mediawiki.util]|exlinks.js
  • RollbackComment[ResourceLoader|rights=rollback]|RollbackComment.js

- 소도구 항목에 붉은색으로 뜬다는 건 아직 설치가 되지 않았다는 것. 붉은 글씨의 .js 문서를 눌러주면 만들기화면이 나온다.

- 다른 위키의 특수:소도구 에서 코드를 볼 수 있다. 이 코드만 복붙하여 해당 소도구에 만들면 된다.(능력자라면 직접 만들수도;;)

- 편집을 작성하면 소도구에 대한 설명이 생긴다.

- 특정 소도구를 기본적으로 활성화 시키려면.. 미디어위키:Gadgets-definition 문서에서.. 이미 활성화 되어있는 소도구 코드 보면.. 대충 감이 올 듯. 쉬워. 좀만 읽어봐.


쓸만한 소도구

- 각주 말풍선 - 각주 번호 위로 마우스 커서를 가리키면 각주 내용을 볼 수 있습니다.

git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets --branch REL1_35 extensions/Gadgets

echo "wfLoadExtension( 'Gadgets' );" >> LocalSettings.php

인터위키 인터위키. interwiki.

- 소도구에 들어가는 코드가 여러개인 경우가 있다. 이땐 인터위키의 문서 내보내기나 가져오기로 한 번에 수행하면 편해.

미디어위키 엔진을 사용하는 위키들을 이어주는 기능을 활성화한다. 소도구를 쉽게 활용하기 위한 사전작업.

- Extension:Interwiki 파일 다운로드 후 다음과 같은 명령어로 압축풀기

tar -xzf Interwiki-REL1_34-9a18f46.tar.gz -C /var/www/html/mediawiki/extensions

- LocalSetting에 wfLoadExtension( 'Interwiki' ); 기입

- 소도구 옮기기에 사용하려면... 소도구 내보내기로 파일을 다운받은 후에 특수:가져오기 에서 인터위키접두어(보통 출처위키명)를 입력한 후 미디어위키 이름공간으로 가져와야 한다.

광고(애드센스)

과정 역할 설치방법
사이트 등록 구글 애드센스에서 사이트 등록.

이곳에서 메타 태그를 얻는다. 사이트에 게재할 수 있는 권한을 획득해야 한다. 광고 게재 권한은 오래걸리면 4주도 간다고..

https://www.google.com/adsense/
ads.txt 만들고 적용.
  • 사이트를 클릭하고 Ads.txt 스니펫을 클릭하면 내용물을 볼 수 있다.
  • 루트 디렉토리에서 Ads.txt 파일을 만든다.
루트 디렉토리는 우분투라면 cd /etc/apache2/sites-available 의 설정을 살펴보면 찾아볼 수 있다.

sudo nano Ads.txt 위 명령 따위로 txt 생성 후 내용을 복붙. 도메인/Ads.txt 로 접근했을 때 내용이 나온다면 OK.

LocalSettings.php 수정
  • 메타 태그 부분을 대체한 후 LocalSettings.php에 넣는다.
  • 이후 애드센스에서 사이트 소유권 확인이 마쳐진다.
$wgHooks['BeforePageDisplay'][] = function ( $out, $skin ) {

    $out->addHeadItem('adsense-meta', '<meta name="google-site-verification" content="YOUR_VERIFICATION_CODE" />');

};

광고 설정 편한 방식으로 지정.
  • 여기에선 '사이트 기준' 광고를 이용한다.
  • 이 페이지의 '코드 가져오기'를 통해 <script를 얻을 수 있다.
광고 탭에서 옵션을 적절히 설정.
LocalSettings.php 수정 위에서 얻은 것을 우측 방식으로 기입한다.

여기까지가 사이트 기준 광고 완료. 반영까지는 1시간까지 걸리기도 한다고 한다.

$wgHooks['BeforePageDisplay'][] = function ( $out, $skin ) { $out->addHeadItem('adsense', '<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2242961523167199" crossorigin="anonymous"></script>'); };
광고 단위를 사용하는 경우.
관련 확장기능 설치. 버전에 따라 설정이 달라지기도 해서, 확장기능으로 하는 편이 좋을듯. 버전명 맞춰서 설치. extention 디렉토리에서.

git clone -b REL1_41 "https://gerrit.wikimedia.org/r/mediawiki/extensions/AdManager" LocalSettings.php에 아래 코드를 더한다. wfLoadExtension( 'AdManager' );

기타 LocalSettings.php 설정

기능명 역할 설치방법
로고 바꾸기 위키의 로고에 들어갈 이미지 $wgLogo = '경로' 를 해주면 되지만,

서버컴퓨터 안에서 /var/lib/mediawiki/resources/assets 안의 wiki.png 를 바꿔주면 될듯.

135*135 픽셀이 적당할듯.

$wgServer 는 위키가 설치된 경로 한단계 위를 의미하는듯.

파비콘 바꾸기 (없어서 만들어야 해.)$wgLogo 아래 $wgFavicon = "경로"; 를 해주면 넣을 수 있다.

$wgFavicon = "$wgResourceBasePath/resources/assets/favicon.png"; 현재는 Logo와 같은 경로의 favicon.png로 되어있다.

16*16 픽셀이 적당할듯.

유저권한관리 유저 생성과 권한 관리는 LocalSetting 안에서 이루어진다.

아래 형식으로 작성하면 없는 그룹이라면 새로 생성되고, 권환관리가 이루어진다.


###################################################################### 권한관리

#일반 편집 불가# *는 모든 유저, user는 로그인한 유저.

#$wgGroupPermissions['*']['edit'] = True;

$wgGroupPermissions['*']['createpage'] = false;

$wgGroupPermissions['*']['move'] = false;

#$wgGroupPermissions['user']['edit'] = True;

$wgGroupPermissions['user']['createpage'] = false;

#교사그룹권한

$wgGroupPermissions['교사']['edit'] = true;

$wgGroupPermissions['교사']['createpage'] = true;

#보호레벨 추가

$wgRestrictionLevels[] = '교사문서';

$wgGroupPermissions['교사']['교사문서'] = true;

##################기타 개인 세팅

$wgDefaultUserOptions['numberheadings'] = 1;

보호레벨 추가 특수한 그룹만 편집할 수 있는 문서를 만들기 위해. 보호될 필요가 있는 문서를 위하여.

$wgRestrictionLevels[] = '교사문서';

$wgGroupPermissions['교사']['교사문서'] = true;

위 형태로 교사들만 편집할 수 있는 권한을 만들 수 있다.

광고달기 위젯이나 확장기능을 쓸 수도 있지만, 간단하게 Localsetting에 기입하는 게 가장 편한듯. 머리글
$wgHooks['SiteNoticeAfter'][] = function(&$siteNotice, $skin) {
        $siteNotice .= <<< EOT
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Mediawiki header -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-9484107006498284"
     data-ad-slot="7071651831"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
EOT;
        return true;
};
바닥글
$wgHooks['SkinAfterContent'][] = function(&$data, $skin) {
        global $myAdCode;
        $data .= '<div style="text-align:center;">';
        $data .= <<< EOT
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- mediawiki footer -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-9484107006498284"
     data-ad-slot="5130113921"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
EOT;
 
        $data .= '</div>';
        return true;
};
광고코드는 구글 애드센스에서 광고->개요->광고단위기준 에서 코드를 긁어오면 된다.
광고 테스트 위젯을 쓰는 것도 좋은 방법일듯;

기타 확장기능

분류 기능명 역할 설치방법
조회수 카운팅 HitCounters 각 문서가 몇 번 읽혔는지 카운팅한다.

페이지 가장 하단에 표시해준다.

설치

git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/HitCounters

체크 및 설정파일 변경

LocalSettings.php 수정

wfLoadExtension( 'HitCounters' );

스키마 업데이트

mediawiki 디렉토리에서 php maintenance/update.php

이젠 필요없어진 것들.

정식 extensions에 포함되면서 설치가 필요없어진 것들은... 여기에 옮겨둔다.

비주얼에디터
분류 기능명 역할 설치방법
작동기반 parsoid 비쥬얼에디터 작동기반.

편집 중 시각편집으로 내용을 유지한 채 넘어갈 수 있게끔 한다.

우분투에선 아무것도 없이 다음의 코드를 따라가면 된다.

심지어 공식안내에선 node나 npm의 설치 안내조차 없다;;; 파일도 설정파일 하나 뿐;;;

다른 사이트들을 참고하느라..한참 잘못간 모양이다.

설치

sudo apt install dirmngr

셋 중 하나 선택
sudo apt-key advanced --keyserver keys.gnupg.net --recv-keys AF380A3036A03444
sudo apt-key advanced --keyserver pgp.mit.edu --recv-keys AF380A3036A03444
sudo apt-key advanced --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys AF380A3036A03444

sudo apt-add-repository "deb https://releases.wikimedia.org/debian jessie-mediawiki main"

sudo apt-get install software-properties-common

sudo apt install apt-transport-https

sudo apt update && sudo apt install parsoid

체크 및 설정파일 변경

다음 링크가 제대로 나오면 이 링크를 설정파일의 URL에 기입한다.

http://id8436.iptime.org:8080/mediawiki/api.php

설정파일은 etc/mediawiki/parsoid 안에. 한 파일밖에 없음.

sudo nano /etc/mediawiki/parsoid/config.yaml 로 고치자.

최종체크

http://localhost:8142/version (외부에선 접속 안됨)

사용편의 VisualEditor 시각편집기를 사용할 수 있게 한다. 설치

일단 parsoid가 설치되어 있어야 한다.

이상하게.. 명령을 이용한 방식에선 설치가 안되는데.. 파일을 받아서 압축 풀고, 올려놓는 방식으로 했더니 됬다;

1.34버전 링크

LocalSetting 설정

다음 내용을 LocalSetting 안에 넣어준다.

//VisualEditor.시각편집(비주얼에디터)에 대하여.

wfLoadExtension( 'VisualEditor' );

// Enable by default for everybody

$wgDefaultUserOptions['visualeditor-enable'] = 1;

// Optional: Set VisualEditor as the default for anonymous users

// otherwise they will have to switch to VE

// $wgDefaultUserOptions['visualeditor-editor'] = "visualeditor";

// Don't allow users to disable it

$wgHiddenPrefs[] = 'visualeditor-enable';

$wgVirtualRestConfig['modules']['parsoid'] = array(

    // URL to the Parsoid instance

    // Use port 8142 if you use the Debian package

    'url' => 'http://localhost:8142',

    // Parsoid "domain", see below (optional)

    'domain' => 'localhost',

    // Parsoid "prefix", see below (optional)

    'prefix' => 'localhost'

);

// OPTIONAL: Enable VisualEditor's experimental code features

#$wgDefaultUserOptions['visualeditor-enable-experimental'] = 1;


재시작

sudo service apache2 restart

sudo service parsoid restart

확인

위키에 접속해 보면 편집 탭과 원본편집 탭 2개가 나타난다.

눌러서 시각편집기로 편집이 되는지 확인하자.

분류 기능명 역할 설치방법
사용편의 Echo 각종 알림들을 이메일이 아닌, 위키 내에서 알릴 수 있도록 한다. 미디어위키 디렉토리에서..

git clone -b REL1_35 "https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo" extensions/Echo

echo "wfLoadExtension( 'Echo' );" >> LocalSettings.php

php maintenance/update.php 를 실행.

(도커를 이용한다면 docker-compose exec mediawiki php maintenance/update.php)

그럼 데이터베이스가 업데이트 되면서 위키 우측 상단에 종모양의 알림기능이 활성화된다.