CORDEA blog

Android application engineer

Docker で mediawiki 立てて oauth extension 入れるまで

前も似たようなこと書いた気がするけど...
検証用に local で一時的に立ててるものなので色々ご注意ください。

build

docker hub から引っ張ってくると mediawiki が古い (多分) ので公式 repository を clone して build します

$ git clone https://github.com/wikimedia/mediawiki-docker.git
$ docker build --rm -t mediawiki:latest mediawiki-docker/stable/

run

立てます、動けばいいので色々適当です

$ docker run -it -d -e MYSQL_ROOT_PASSWORD="root" --name mysql mysql
$ docker run -it -d -e MEDIAWIKI_DB_PASSWORD="root" -e MEDIAWIKI_DB_TYPE="mysql" -p 8080:80 --link mysql:mysql --name mediawiki mediawiki:latest

ここからは http://localhost:8080 にアクセスしつつ色々進めます。
途中に入れる db への接続先は

$ docker inspect -f '{{ .NetworkSettings.IPAddress }}' mysql

最後まで行くと LocalSettings.php 入れてねって言われます。

local settings

今回は oauth extension をとにかく早く動かしたかったので mail 系を全部無効にしました (しないと認証求められるので)

$wgEnableEmail = false;
$wgEnableUserEmail = false; # UPO

...

$wgEmailAuthentication = false;

入れます

$ docker cp ./LocalSettings.php mediawiki:/var/www/html/

oauth extension

OAuth extension を download してきます
ここら辺です

Download MediaWiki extension - MediaWiki

適当なところに copy して解凍します

$ docker cp ./OAuth-*.tar.gz mediawiki:/tmp/
$ docker exec mediawiki tar xzf /tmp/OAuth-*.tar.gz -C /var/www/html/extensions

LocalSettings.php に設定を追記して update します
とりあえず誰でも consumer を追加できるようにしたいのでそんな感じにします

$ docker exec mediawiki sh -c "echo \"wfLoadExtension( 'OAuth' );\" >> /var/www/html/LocalSettings.php"
$ docker exec mediawiki bash -c "echo $'\$wgGroupPermissions[\'user\'][\'mwoauthproposeconsumer\'] = true;' >> /var/www/html/LocalSettings.php"
$ docker exec mediawiki php /var/www/html/maintenance/update.php

consumer registration は http://localhost:8080/index.php/Special:OAuthConsumerRegistration