백업과 복구: 두 판 사이의 차이
잔글편집 요약 없음 |
|||
(같은 사용자의 중간 판 33개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
위키의 보수와 백업을 위한 참고문서. | |||
기본적으로 우분투에서 이루어진다. | 기본적으로 우분투에서 이루어진다. | ||
=백업= | =백업= | ||
기본적으로 DB와 mediawiki 디렉터리를 백업해 두면 나중에 복원할 수 있다. | 기본적으로 DB와 mediawiki 디렉터리를 백업해 두면 나중에 복원할 수 있다. | ||
[나중에 단 한번의 파일 실행으로 자동 백업과 복구가 이루어지게끔 만들어보자.] | [나중에 단 한번의 파일 실행으로 자동 백업과 복구가 이루어지게끔 만들어보자.] | ||
=복구= | =복구= | ||
==가장 먼저 설치되어야 할 것== | ==가장 먼저 설치되어야 할 것== | ||
상당히 애먹는 아이들이기 때문에 잘못 틀어지면 포멧을 해버리는 게 가장 빠르다. 하여, 가장 먼저 설치하여 기반을 닦자. | 상당히 애먹는 아이들이기 때문에 잘못 틀어지면 포멧을 해버리는 게 가장 빠르다. 하여, 가장 먼저 설치하여 기반을 닦자. | ||
===검색관련 확장기능.(한글 검색을 이용하려면 필수.)=== | |||
{| class="wikitable" | {| class="wikitable" | ||
!기능명 | !기능명 | ||
!역할 | !역할 | ||
!설치방법 | !설치방법 | ||
|- | |- | ||
| | |java | ||
| | |아래 이어지는 것들을 위해. | ||
| | |보통 자바 설치 안되어있으니 설치 진행. | ||
{| class="wikitable" | |||
| | |+작업 | ||
!과정 | |||
!설치방법 | |||
|- | |||
|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를 사용하려면 다음과 같은 과정이 필요하다. | |||
{| 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권한으로 해야 한다.) | |||
{| class="wikitable" | |||
!과정 | |||
!설치방법 | |||
|- | |||
|설치 | |||
|apt install elasticsearch | |||
안되면 아래 과정 진행 후 다시.(아마 보통 안될걸?) | |||
https://www.mediawiki.org/wiki/Extension:CirrusSearch<nowiki/>에 위키와 elasticsearch의 버전정보에 대하여 나와 있다. | |||
{| class="wikitable" | {| 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> | |||
|- | |- | ||
| | | | ||
* 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개 바꿔주어야 함.) | |||
|- | |- | ||
| | | | ||
* 업데이트 | |||
* 다시 설치 도전 | |||
|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 | |||
<nowiki>ps -ef | grep -i elasticsearch</nowiki> | |||
netstat -tnlp | grep java | |||
(netstat 명령이 안되면 아래 설치.) | |||
|- | |||
|netstat설치 | |||
|apt install net-tools | |||
위 명령으로 여러 툴을 동시에 설치한다.(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" | {| class="wikitable" | ||
! | !과정 | ||
!설치방법 | !설치방법 | ||
|- | |- | ||
| | |Elasticsearch 디렉토리로 이동. | ||
|cd /usr/share/elasticsearch | |||
| | |||
|- | |- | ||
| | |설치 | ||
| | |sudo ./bin/elasticsearch-plugin install analysis-nori | ||
|} | |||
|- | |- | ||
|Elastica | |Elastica | ||
|탄성검색을 제공. 다른 기능들을 사용하기 위한 기초. | |탄성검색을 제공.(단어일부 검색이라든가..) 다른 기능들을 사용하기 위한 기초. | ||
Elasticsearch를 사용하기 위한 PHP라이브러리이다. | Elasticsearch를 사용하기 위한 PHP라이브러리이다. | ||
|CirrusSearch의 링크를 참조해 진행하되, 아래 작업을 먼저 하자. | |CirrusSearch의 링크를 참조해 진행하되, 아래 작업을 먼저 하자. | ||
{| class="wikitable" | |||
!과정 | |||
!방법 | |||
|- | |||
|미디어위키 디렉토리에서 진행. | |||
|버전은 다시 수정해서 기입하기. | |||
git clone -b REL1_41 "<nowiki>https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Elastica.git</nowiki>" 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 | |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페이지가 따로 있다. | ||
{| class="wikitable" | |||
!과정 | |||
!방법 | |||
|- | |||
|[[mediawikiwiki:Special:ExtensionDistributor/Elastica|링크]]에서 다운 후, extension 폴더에 옮긴 긴다. | |||
|버전은 수정해서 기입. | |||
git clone -b REL1_41 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch</nowiki>" 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 | |AdvancedSearch | ||
|특수:검색 기능 제공. Special:Search기능 강화. | |특수:검색 기능 제공. Special:Search기능 강화. | ||
CirrusSearch를 토대로 작동한다. | CirrusSearch를 토대로 작동한다. | ||
192번째 줄: | 246번째 줄: | ||
커스텀 검색필드 제작 가능. | 커스텀 검색필드 제작 가능. | ||
|Extension:CirrusSearch 가 설치되어 있어야 한다. | |Extension:CirrusSearch 가 설치되어 있어야 한다. | ||
https://www.mediawiki.org/wiki/Special:ExtensionDistributor?extdistname=AdvancedSearch&extdistversion=REL1_34 | {| class="wikitable" | ||
굉장히 간단. 폴더에 옮겨둔 후, LocalSettings에 <code>wfLoadExtension( 'AdvancedSearch' );</code>추가 | !과정 | ||
!방법 | |||
|- | |||
|[[mediawikiwiki:Special:ExtensionDistributor/Elastica|링크]]에서 다운 후, extension 폴더에 옮긴 긴다. | |||
|git clone <nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/AdvancedSearch</nowiki> --branch REL1_35 extensions/AdvancedSearch | |||
|- | |||
|LocalSettings 변경 | |||
|echo "wfLoadExtension( 'AdvancedSearch' );" >> LocalSettings.php | |||
|} | |||
https://www.mediawiki.org/wiki/Special:ExtensionDistributor?extdistname=AdvancedSearch&extdistversion=REL1_34 굉장히 간단. 폴더에 옮겨둔 후, LocalSettings에 <code>wfLoadExtension( 'AdvancedSearch' );</code>추가 | |||
|} | |} | ||
=== | ===모바일 관련 편의기능=== | ||
{| class="wikitable" | {| class="wikitable" | ||
!분류 | !분류 | ||
204번째 줄: | 267번째 줄: | ||
|- | |- | ||
|사용편의 | |사용편의 | ||
| | |MobileFrontend | ||
| | |모바일 접속환경을 구축한다. | ||
(기본으로 제공되는 스킨인 벡터 등은 사용이 불편) | |||
이 확장기능 하나만으론 의미가 없다. | |||
다음의 스킨을 설치해주어야 한다. | |||
|미디어위키 디렉토리에서.. | |미디어위키 디렉토리에서.. | ||
git clone -b REL1_35 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/ | git clone -b REL1_35 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/MobileFrontend</nowiki>" extensions/MobileFrontend | ||
다음에 내용을 LocalSettings.php에 입력한다. | |||
wfLoadExtension( 'MobileFrontend' ); | |||
$wgMFAutodetectMobileView = true; | |||
|- | |||
| | |||
|MinervaNeue | |||
|모바일 환경에서 사용할 반응형 스킨. | |||
MobileFrontend가 설치되어야 작동한다. | |||
< | 비주얼에디터 사용이 안되서.. 굳이 사용하지 않게 되네.. | ||
|git clone -b REL1_35 "<nowiki>https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue</nowiki>" skins/MinervaNeue | |||
다음에 내용을 LocalSettings.php에 입력한다. | |||
( | wfLoadSkin( 'MinervaNeue' ); | ||
$wgMFDefaultSkinClass = 'SkinMinerva'; // 모바일 접속 환경 시 기본 스킨 설정 | |||
|- | |||
| | |||
| | |||
|이후 특수:문서를 통해 설치를 확인한다. | |||
| | |||
|} | |} | ||
===이외 작업=== | ===이외 작업=== | ||
====DB백업==== | ====DB백업==== | ||
크론을 통해 하루에 한 번 자동으로 백업되게 만들자. 혹시나 중간에 망가져도 살릴 수 있게끔.(백업파일 용량이 100MB를 넘길 때까진 매일 해보자.) | 크론을 통해 하루에 한 번 자동으로 백업되게 만들자. 혹시나 중간에 망가져도 살릴 수 있게끔.(백업파일 용량이 100MB를 넘길 때까진 매일 해보자.) | ||
232번째 줄: | 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) | ||
242번째 줄: | 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} | ||
281번째 줄: | 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 | ||
293번째 줄: | 376번째 줄: | ||
|위키의 겉모양을 꾸며준다. | |위키의 겉모양을 꾸며준다. | ||
|다운받아 skin폴더 안에 둔 후, <code>wfLoadSkin( '폴더명' );</code> 형식으로 설치한다. | |다운받아 skin폴더 안에 둔 후, <code>wfLoadSkin( '폴더명' );</code> 형식으로 설치한다. | ||
미디어위키 기반의 위키지만, 공식적으로 관리되는 스킨이 아닌 경우, | 미디어위키 기반의 위키지만, 공식적으로 관리되는 스킨이 아닌 경우, | ||
해당 위키의 '특수:버전'문서에서 스킨 이름을 클릭하면 스킨을 다운받을 수 있는 페이지로 이동한다. | 해당 위키의 '특수:버전'문서에서 스킨 이름을 클릭하면 스킨을 다운받을 수 있는 페이지로 이동한다. | ||
335번째 줄: | 418번째 줄: | ||
|화학식과 수식입력이 가능해진다. | |화학식과 수식입력이 가능해진다. | ||
레이텍과 동일한 문법을 사용한다. | 레이텍과 동일한 문법을 사용한다. | ||
| | |git clone <nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/Math</nowiki> --branch REL1_35 extensions/Math | ||
echo "wfLoadExtension( 'Math' );" >> LocalSettings.php | |||
wfLoadExtension( 'Math' ); | |||
<code>php maintenance/update.php</code> | |||
|- | |- | ||
|YouTube | |YouTube | ||
|유튜브 영상을 삽입하기 위한 확장기능. | |유튜브 영상을 삽입하기 위한 확장기능. | ||
| | |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 | ||
<code>wfLoadExtension( 'YouTube' );</code> | |||
|- | |- | ||
|외부이미지 사용 | |외부이미지 사용 | ||
|외부 이미지를 사용하려면 설정을 변경해야 한다. | |외부 이미지를 사용하려면 설정을 변경해야 한다. | ||
이 옵션을 해두면 본문에 이미지 링크만 둬도 자동으로 이미지를 띄워준다. | |||
|$wgAllowExternalImages = true; | |$wgAllowExternalImages = true; | ||
|- | |- | ||
402번째 줄: | 484번째 줄: | ||
ex) 20M 이라고 써주면 20메가까지 업로드 가능. | ex) 20M 이라고 써주면 20메가까지 업로드 가능. | ||
- localSettings.php 도 수정 | - localSettings.php 도 수정(일반적으로 추가해주어야 한다.) | ||
$wgUploadSizeWarning = 20971520; | $wgUploadSizeWarning = 20971520; | ||
429번째 줄: | 511번째 줄: | ||
===관리를 위한 기능=== | ===관리를 위한 기능=== | ||
{| class="wikitable" | |||
!기능명 | |||
!역할 | |||
!설치방법 | |||
|- | |||
|소도구 | |||
|위키 사용자가 로그인시 자신의 환경설정에서 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 <nowiki>https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets</nowiki> --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' ); 기입 | |||
- 소도구 옮기기에 사용하려면... 소도구 내보내기로 파일을 다운받은 후에 특수:가져오기 에서 인터위키접두어(보통 출처위키명)를 입력한 후 미디어위키 이름공간으로 가져와야 한다. | |||
| | |||
|} | |||
=== 광고(애드센스) === | |||
{| 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> | |||
|- | |||
| | |||
| | |||
| | |||
|} | |||
===기타 LocalSettings.php 설정=== | |||
{| class="wikitable" | {| class="wikitable" | ||
!기능명 | !기능명 | ||
436번째 줄: | 652번째 줄: | ||
|로고 바꾸기 | |로고 바꾸기 | ||
|위키의 로고에 들어갈 이미지 | |위키의 로고에 들어갈 이미지 | ||
|$wgLogo = '경로' 를 해주면 되지만, | |$wgLogo = '경로' 를 해주면 되지만, | ||
서버컴퓨터 안에서 /var/lib/mediawiki/resources/assets 안의 wiki.png 를 바꿔주면 될듯. | 서버컴퓨터 안에서 /var/lib/mediawiki/resources/assets 안의 wiki.png 를 바꿔주면 될듯. | ||
446번째 줄: | 661번째 줄: | ||
|파비콘 바꾸기 | |파비콘 바꾸기 | ||
| | | | ||
|(없어서 만들어야 해.)$wgLogo 아래 $wgFavicon = | |(없어서 만들어야 해.)$wgLogo 아래 $wgFavicon = "경로"; 를 해주면 넣을 수 있다. | ||
현재는 Logo와 같은 경로의 favicon.png로 되어있다. | $wgFavicon = "$wgResourceBasePath/resources/assets/favicon.png"; 현재는 Logo와 같은 경로의 favicon.png로 되어있다. | ||
16*16 픽셀이 적당할듯. | 16*16 픽셀이 적당할듯. | ||
456번째 줄: | 671번째 줄: | ||
아래 형식으로 작성하면 없는 그룹이라면 새로 생성되고, 권환관리가 이루어진다. | 아래 형식으로 작성하면 없는 그룹이라면 새로 생성되고, 권환관리가 이루어진다. | ||
//일반 편집 불가 | <nowiki>######################################################################</nowiki> 권한관리 | ||
<nowiki>#</nowiki>일반 편집 불가# *는 모든 유저, user는 로그인한 유저. | |||
$wgGroupPermissions['*']['edit'] = | <nowiki>#</nowiki>$wgGroupPermissions['*']['edit'] = True; | ||
$wgGroupPermissions['*']['createpage'] = false; | $wgGroupPermissions['*']['createpage'] = false; | ||
$wgGroupPermissions['user']['edit'] = | $wgGroupPermissions['*']['move'] = false; | ||
<nowiki>#</nowiki>$wgGroupPermissions['user']['edit'] = True; | |||
$wgGroupPermissions['user']['createpage'] = false; | $wgGroupPermissions['user']['createpage'] = false; | ||
/ | <nowiki>#</nowiki>교사그룹권한 | ||
$wgGroupPermissions['교사']['edit'] = true; | $wgGroupPermissions['교사']['edit'] = true; | ||
$wgGroupPermissions['교사']['createpage'] = true; | $wgGroupPermissions['교사']['createpage'] = true; | ||
<nowiki>#</nowiki>보호레벨 추가 | |||
$wgRestrictionLevels[] = '교사문서'; | |||
$wgGroupPermissions['교사']['교사문서'] = true; | |||
<nowiki>##################</nowiki>기타 개인 세팅 | |||
$wgDefaultUserOptions['numberheadings'] = 1; | |||
|- | |- | ||
|보호레벨 추가 | |보호레벨 추가 | ||
483번째 줄: | 711번째 줄: | ||
위 형태로 교사들만 편집할 수 있는 권한을 만들 수 있다. | 위 형태로 교사들만 편집할 수 있는 권한을 만들 수 있다. | ||
|- | |- | ||
|광고달기 | |<s>광고달기</s> | ||
| | |||
|<s>위젯이나 확장기능을 쓸 수도 있지만, 간단하게 Localsetting에 기입하는 게 가장 편한듯. 머리글</s><syntaxhighlight lang="php"> | |||
$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; | |||
}; | |||
</syntaxhighlight><s>바닥글</s><syntaxhighlight lang="php"> | |||
$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; | |||
}; | |||
</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 | 아래 이어지는 것들을 위해. | 보통 자바 설치 안되어있으니 설치 진행.
| ||||||||||||||||||||||||||||||||||||
Elasticsearch | 다음 검색기능들을 사용하기 위한 기반 | 독립된 서버이다.(젠장, 위키버전마다 요구하는 버전이 또 다르다;;) sql처럼 독립된 것이니, 도커 따위를 사용한다면 외부의 주소를 따로 지정하여 쓰는 편이 좋다.
외부 Elasticsearch를 사용하려면 다음과 같은 과정이 필요하다.
사전에 Java와 Javac를 설치해야 한다. 링크를 참고하여 구성하였다. (sudo -i 를 통해 root권한으로 해야 한다.)
시도해보고 있는 것(의미가 있는지는 의문이다;)
nori 플러그인 설치.(그닥 효과는 없는 듯하다....) 아무래도 한글검색에서 한계가 느껴져 설치해본다.
| ||||||||||||||||||||||||||||||||||||
Elastica | 탄성검색을 제공.(단어일부 검색이라든가..) 다른 기능들을 사용하기 위한 기초.
Elasticsearch를 사용하기 위한 PHP라이브러리이다. |
CirrusSearch의 링크를 참조해 진행하되, 아래 작업을 먼저 하자.
이후 아래 설치링크를 따라가되, 이전 작업은 생략하자. 특수:버전 문서에서 설치 되었는지 확인. | ||||||||||||||||||||||||||||||||||||
CirrusSearch | ElasticSearch를 위키에서 제어하기 위한 확장기능.
검색창에서 실제로 작동. |
링크를 참고하여 구성하였다.
https://www.mediawiki.org/wiki/Extension:CirrusSearch 복잡하니.. 명령 후에 떠오르는 메시지를 찬찬히 보며 잘 따라가길. 일반 검색규약을 따르는듯. Help페이지가 따로 있다.
나중에 DB를 바꾼다든가, Elasticsearch를 업데이트 할 땐 $wgDisableSearchUpdate = true; 를 넣어주는 것부터 하면 될듯. | ||||||||||||||||||||||||||||||||||||
AdvancedSearch | 특수:검색 기능 제공. Special:Search기능 강화.
CirrusSearch를 토대로 작동한다. 검색할 때 고급검색이 가능해진다. 커스텀 검색필드 제작 가능. |
Extension:CirrusSearch 가 설치되어 있어야 한다.
https://www.mediawiki.org/wiki/Special:ExtensionDistributor?extdistname=AdvancedSearch&extdistversion=REL1_34 굉장히 간단. 폴더에 옮겨둔 후, LocalSettings에 |
모바일 관련 편의기능
분류 | 기능명 | 역할 | 설치방법 |
---|---|---|---|
사용편의 | 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}
|
권한부여 | ls -l 명령으로 다른 파일들의 권한설정을 보고 통일. 일반적으로 755이다.
|
확인 | 프롬프트에 파일경로(/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 | 카테고리를 보기 쉽게 정리해준다.
- 문서 안에 - 문서 안에 이외 카테고리를 기입하는 다양한 방법이 제공된다. |
보통 처음에 설치된다. |
Cite | 각주, 인용을 넣기 위함. | 보통 처음에 설치된다. |
Math | 화학식과 수식입력이 가능해진다.
레이텍과 동일한 문법을 사용한다. |
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Math --branch REL1_35 extensions/Math
echo "wfLoadExtension( 'Math' );" >> LocalSettings.php
|
YouTube | 유튜브 영상을 삽입하기 위한 확장기능. | git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/YouTube --branch REL1_35 extensions/YouTube echo "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부턴 설치되어 있음.
다음은 씨실과 날실 블로그에서 추천한 소도구들. 이것들을 그냥 복붙하면 끝. 둘러보기 소도구
편집 소도구
인터페이스 소도구
- 소도구 항목에 붉은색으로 뜬다는 건 아직 설치가 되지 않았다는 것. 붉은 글씨의 .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 만들고 적용. |
|
루트 디렉토리는 우분투라면 cd /etc/apache2/sites-available 의 설정을 살펴보면 찾아볼 수 있다.
sudo nano Ads.txt 위 명령 따위로 txt 생성 후 내용을 복붙. 도메인/Ads.txt 로 접근했을 때 내용이 나온다면 OK. |
LocalSettings.php 수정 |
|
$wgHooks['BeforePageDisplay'][] = function ( $out, $skin ) {
$out->addHeadItem('adsense-meta', '<meta name="google-site-verification" content="YOUR_VERIFICATION_CODE" />'); }; |
광고 설정 | 편한 방식으로 지정.
|
광고 탭에서 옵션을 적절히 설정. |
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에 아래 코드를 더한다.
|
기타 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; 위 형태로 교사들만 편집할 수 있는 권한을 만들 수 있다. | |||
$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-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가 설치되어 있어야 한다. 이상하게.. 명령을 이용한 방식에선 설치가 안되는데.. 파일을 받아서 압축 풀고, 올려놓는 방식으로 했더니 됬다; 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
(도커를 이용한다면 docker-compose exec mediawiki php maintenance/update.php) 그럼 데이터베이스가 업데이트 되면서 위키 우측 상단에 종모양의 알림기능이 활성화된다. |