Wikiシステムを探してたけど結局MediaWikiが一番良さそう。最低でもgitとcomposer使ってないと選択肢にも入らない。
DokuWikiやPukiWikiはデータベース不要を売りにしてるけど逆に使いにくい。レンタルサーバーにFTPでアップしてた頃ならならともかくPush to Deployが当たり前な時代には辛い。遥か昔はPukiWiki使ってた記憶がある。アプリのヘルプページにはWikiがちょうどいい。
環境
- AWS。EC2+RDS+S3
- MediaWiki 1.31.1時点
- Forge。https://forge.laravel.com/ LaravelやWordPressと全く同じように管理・運用できるようにするのが目的。
- Ubuntu/PHP7.2/nginx/memcached
ローカルで動かす
参考ページ:https://www.mediawiki.org/wiki/Download_from_Git/ja
git clone https://github.com/wikimedia/mediawiki.git mediawiki
全部クローンするとかなりのサイズなので--branch
や--depth=1
付けて減らしたほうがいいかもしれない。
ここで自分用の別ブランチを作っておく。
cd mediawiki
git submodule update --init
サブモジュールはちょっと分かりにくいので削除して通常通りに扱ってもいいかもしれない。composerのvendorは削除した。普通にcomposer install/update。
ローカルサーバーはいつものHomestead。Homestead.yamlのpublic
を削除。ドキュメントルート直下にindex.phpがある。
sites:
-
map: mediawiki.test
to: /home/vagrant/code
この時点では設定ファイルはないのでまずサーバーを起動してブラウザで表示。基本的な設定を行い最後にLocalSettings.php
がダウンロードされる。LocalSettings.php
はドキュメントルートに置く。このLocalSettings.php
はローカル用。gitには含めない。本番用のLocalSettings.php
は後で再度設定して生成。
https://www.mediawiki.org/wiki/Manual:Configuring_MediaWiki/ja
動作確認できたらローカルでの作業は終わり。カスタマイズする箇所はほとんどないので拡張機能の追加やバージョンアップ時以外はローカルでの作業はたぶんない。
S3対応
アップロードファイルをS3に置くための拡張機能
https://www.mediawiki.org/wiki/Extension:AWS
git cloneするように書いてあるけどサブモジュール使ってる場合はこれではダメなのでサブモジュールで追加。デプロイ時にcomposer install
https://github.com/edwardspec/mediawiki-aws-s3
Tokyoリージョンの場合デフォルトの$1.s3.amazonaws.com
では表示されないのでLocalSettings.php
に設定追加。
$wgAWSRegion = 'ap-northeast-1';
$wgAWSBucketDomain = 's3-ap-northeast-1.amazonaws.com/$1';
GitHubからForge
この辺りはLaravel等と同じなので省略。Forgeに追加時の最初はcomposer installしないほうがいいかも。
ForgeのDeploy Script。今後変更する可能性は高い。
cd /home/forge/wiki
git pull origin wiki
composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
git submodule update --init
cd /home/forge/wiki/extensions/AWS
composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
echo "" | sudo -S service php7.2-fpm reload
本番のLocalSettings.php
再度設定した後サーバー上にLocalSettings.phpを作る。FTPは使ってないので新規ファイル作ってコピペ。
今後も設定変更する時はサーバーで直接。.envの仕組みとかないのでこうするしかなさそう。
細かい設定項目は検索すればいくらでも出てくる。
短いURL
デフォルトではhttps://~/index.php?title=メインページ
で表示される。これをhttps://~/wiki/メインページ
にする。
https://www.mediawiki.org/wiki/Manual:Short_URL/ja
いろいろ書いてあるし検索もしたけどこれ使うのが一番早かった。
https://shorturls.redwerks.org/
Markdown
何年も前で止まってるけど一応使えた。
https://github.com/bharley/mw-markdown
サブモジュールで追加+Parsedown.phpとParsedownExtra.phpはデプロイ時に移動。
LocalSettings.php。古くてwfLoadExtension()
は使えなかった。
require_once("./extensions/Markdown/Markdown.php");
$wgMarkdownExtra = true;
$wgMarkdownHighlight = true;
$wgMarkdownHighlightJs = '//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js';
$wgMarkdownHighlightCss = '//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/default.min.css';
デフォルトでMarkdownが有効になるので最初からあるメインページは{{WIKI}}
を追加して元のWiki記法に。
表示がおかしくなることもあるので設定でデフォルトを逆にしてもいい。この場合はMarkdownを有効化したいページにだけ{{MARKDOWN}}
を記入。
$wgMarkdownDefaultOn = false;
VisualEditor
https://www.mediawiki.org/wiki/VisualEditor/Portal/ja
Markdownよりもこっちに対応のほうがいいかも。ただし導入は結構難しい。拡張機能を追加だけでは動かない。Parsoidも必要。
Ubuntuならaptでインストールできたので多少楽。
https://www.mediawiki.org/wiki/Parsoid/Setup
終わり
まだ試しに稼働させてみただけなので問題なく運用できるかやバージョンアップの手間の確認はこれから。