백업과 복구: 두 판 사이의 차이
잔글 (→문서작성을 위한 기능) |
잔글편집 요약 없음 |
||
760번째 줄: | 760번째 줄: | ||
|} | |} | ||
=== 기타 확장기능 === | |||
{| 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에 포함되면서 설치가 필요없어진 것들은... 여기에 옮겨둔다. | 정식 extensions에 포함되면서 설치가 필요없어진 것들은... 여기에 옮겨둔다. |
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) 그럼 데이터베이스가 업데이트 되면서 위키 우측 상단에 종모양의 알림기능이 활성화된다. |