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

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
편집 요약 없음
359번째 줄: 359번째 줄:
|MinervaNeue
|MinervaNeue
|모바일 환경에서 사용할 반응형 스킨.
|모바일 환경에서 사용할 반응형 스킨.
MobileFrontend가 설치되어야 작동한다.
비주얼에디터 사용이 안되서.. 굳이 사용하지 않게 되네..
|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



2021년 5월 7일 (금) 13:23 판

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

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


백업

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

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

복구

가장 먼저 설치되어야 할 것

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

일단 LocalSettings.php 안에 있는 서버주소를 제대로 기입해주자. http://id8436.iptime.org:8080

분류 기능명 역할 설치방법
작동기반 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개가 나타난다.

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

검색관련 확장기능.

기능명 역할 설치방법
java 아래 이어지는 것들을 위해. 다른 건 모르겠고, 8버전으로 설치하면 되더라;
작업
과정 설치방법
JDK설치 명령어 apt-get install openjdk-8-jdk -y
확인 java -version

javac -version


Elasticsearch 다음 검색기능들을 사용하기 위한 기반 독립된 서버이다.(젠장, 위키버전마다 요구하는 버전이 또 다르다;;)

사전에 Java와 Javac를 설치해야 한다. 링크를 따라가며 잘 설치해보자.

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

과정 설치방법
wget설치(일반적으로 설치되어 있다.) apt install wget -y
gnupg설치(일반적으로 설치되어 있다.) apt install gnupg -y
PGP키 추가 wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
apt-transport-https설치 apt install apt-transport-https
APT저장소 추가 echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-6.x.list
업데이트 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
확인

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

ps -ef | grep -i elasticsearch

netstat -tnlp | grep java

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

netstat설치 apt install net-tools

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

버전확인 curl "localhost:9200"
Elastica 탄성검색을 제공.(단어일부 검색이라든가..) 다른 기능들을 사용하기 위한 기초.

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

CirrusSearch의 링크를 참조해 진행하되, 아래 작업을 먼저 하자.
과정 방법
링크에서 다운 후, extension 폴더에 옮긴 긴다. git clone -b REL1_35 "https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Elastica.git" extensions/Elastica
컴포저 설치 apt install composer -y
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_35 "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 실행(인덱스 만들기) 이번엔 시간이 상당히 오래걸린다.

php ForceSearchIndex.php --skipLinks --indexOnSkip

php ForceSearchIndex.php --skipParse

LocalSettings 변경 직접 입력한다.

$wgSearchType = 'CirrusSearch';

나중에 DB를 바꾼다든가 할 땐 $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' );추가

먼저 설치하면 좋을 편의기능

분류 기능명 역할 설치방법
사용편의 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)

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

모바일 관련 편의기능

분류 기능명 역할 설치방법
사용편의 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' ); 기입

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

기타 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;
};
광고코드는 구글 애드센스에서 광고->개요->광고단위기준 에서 코드를 긁어오면 된다.
광고 테스트 위젯을 쓰는 것도 좋은 방법일듯;