コンテンツにスキップ

「MediaWiki」の版間の差分

提供: Turgenev's Wiki
Notion-MW
 
Notion-MW
 
(同じ利用者による、間の14版が非表示)
2行目: 2行目:


== 初期設定 ==
== 初期設定 ==
==== 動作要件 ====
データベース(MySQL)と(CGI版の)phpが使えることを確認しておく。スターサーバーフリー(php+mysql)では動いた。
SSHが使えないような低価格帯のレンタルサーバーのプランの中でも、PHPでexecなどの機能を使えば事実上任意コマンドが実行できるものと、それらの機能が制限されているサーバーがある。後者でもMediaWikiは一通り動くが、一部機能が動作しない場合もあるのであまりお勧めしない(特に他サーバー移行で手こずるのは困る)。
==== インストール ====
詳しくは[https://wikipedia.memo.wiki/d/%CC%B5%CE%C1%A5%EC%A5%F3%A5%BF%A5%EB%A5%B5%A1%BC%A5%D0%A1%BC%A4%CBMediaWiki%A4%F2%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%A4%B9%A4%EB ここ]を参照。
MySQLの設定をしたら、Mediawikiのファイル一式を設置し、/mw-configにアクセスして指示に従うとインストールが完了する。/mw-configは誰でも見られるファイルなので少し不安だが、MySQLのパスワードがわからないとインストールは完了しないため、別に公開でも問題なさそう。(不安ならBasic認証をかけておく?)
初期の管理ユーザーのパスワードを忘れるとやや面倒なことになる。Chromeがちゃんと覚えてくれない場合があるので注意すること。
<div style="overflow:auto;width: 100%; max-width: 1200px; white-space:nowrap; border:1px solid; padding-left: 10px; padding-right: 10px;" class="mw-collapsible">
<div>忘れた場合の初期化方法(CGI版phpの場合?)</div>
<div class="mw-collapsible-content">
データベース(phpMyAdmin)から、
<syntaxhighlight lang="vb.net">UPDATE `user` SET user_password = CONCAT(':B:somesalt:', MD5(CONCAT('somesalt-', MD5('somepass')))) WHERE user_name = 'someuser'</syntaxhighlight>
とする。[https://www.mediawiki.org/wiki/Topic:Rnq7yc02mg1o4j34 https&#58;//www.mediawiki.org/wiki/Topic&#58;Rnq7yc02mg1o4j34]より。<strong>2か所あるsomesaltのところにはLocalSettings.phpの$wgDBpasswordの値を入れること。</strong>
MediaWiki1.12以前はちょっと違うらしい。自分が成功したのは1.39.1(2023年1月)。
* CGI版じゃなくてphpコマンドが直接打てるなら、[https://plaza.rakuten.co.jp/zuka2007/diary/201705010000/ こちらの方法]でもいけそうである。
</div></div>
* ファイル一式は、zipを解凍してからFTPでアップロードするとかなり時間がかかるので(1時間くらい)、zipでアップロードしてサーバー上で解凍したほうがいい。レンタルサーバー提供のファイルマネージャーでできない場合は、[https://nicoiworks.com/ftp/ ZIPファイルをサーバーにアップしてから解凍する方法] のようにPHPでファイル名を指定して解凍するか、[https://github.com/dulldusk/phpfm https://github.com/dulldusk/phpfm] のようなPHPで動くファイルマネージャー(フォルダ削除なども高速にできる)から解凍するとよい。<strong>ただし、これらのphpファイルはBasic認証で保護するなどアクセス権限には十分気を付けること</strong>。exec系(任意コマンド実行)が許可されていないstarserver freeでもこれらは動作した。
MediaWikiの拡張はたくさん(全部)onにするとよいらしい。
設定が終わると<strong>LocalSettings.php</strong>が出力され、以後これで色々な設定ができるようになる。インストール後にフォルダ名を変えるときはリネームの上、LocalSettings.phpで<code>$wgScriptPath &#61; &quot;/mw&quot;&#59;</code>などと変えればよい。新規ユーザー作成を許可するかどうかなどの設定もここでできるので、禁止したい場合などはこのタイミングでやっておくとよいだろう。
<span id="gitからのインストール"></span>
==== Gitからのインストール ====
[https://www.mediawiki.org/wiki/Download_from_Git/ja Git からのダウンロード - MediaWiki]などに書いてあるが、安定版リリースにバンドルされている拡張やスキン([https://www.mediawiki.org/wiki/Bundled_extensions_and_skins Bundled extensions and skins - MediaWiki])やvendorフォルダ(?)が無かったりして動かすのに一手間かかる。
==== その他初期設定 ====
<ul>
<li><p>管理画面</p>
<p>ブラウザ上から$wgScriptPath以下の/mw&#45;configというパスにアクセスすればよい。ここは誰でも見れてしまうが、その先に進むには(初期インストール後に生成されてLocalSettings.phpに書き込まれる)$wgUpgradeKeyが必要なので管理者以外は操作できない。</p></li>
<li><p>ロゴ<br />
参考サイトにもあるが、resource/assets/にデフォルトのchange&#45;your&#45;logo.svgがある。それを上書きするか、名前を変えるなら$wgLogosで設定。サイズは135x135で表示される(それより大きいサイズにすると切り取られる)模様。</p></li>
<li><p>faviconも$wgFaviconで設定。自分はsvgを256x256のpngで保存してからImageMagickでicoに変換した。</p></li>
<li><p>[https://www.mediawiki.org/wiki/Manual:RevisionDelete/ja ここ]から設定すると版指定削除ができる。</p></li>
<li><p>スキン<br />
$wgDefaultSkin &#61; &quot;vector&quot;&#59;となっているが、&quot;vector&#45;2022&quot;のほうが良さそうだったのでそちらに変えた。あわせて$wgVectorResponsiveをtrueにしてモバイルでの視認性を上げた。</p></li>
<li><p>カテゴリページの自動作成<br />
[https://www.mediawiki.org/wiki/Extension:Auto_Create_Category_Pages <strong>Auto Create Category Pages</strong>]をダウンロードし、<code>wfLoadExtension( &#39;AutoCreateCategoryPages&#39; )&#59;</code>とする。これは便利。</p></li>
<li><p>アクセス数解析</p>
<p>精度のほどはわからないが、[https://www.mediawiki.org/wiki/Extension:HitCounters HitCounters]でできる。同じようにダウンロードした後、リンク先に記載のとおり、管理画面に行ってupdate.phpを実行する必要がある。その後で<code>wfLoadExtension</code>をすればよい。アクセス数は誰からでも見えるようであるが、特に問題はないので放置。</p></li>
<li><p>SyntaxHightlight</p>
<p>Linuxのサーバーでは、<code>extensions/SyntaxHighlight_GeSHi/pygments/pygmentize</code>のパーミッションを変更して所有者に実行権限を付加(先頭の桁を7にする)。参考&#58; [https://www.mediawiki.org/wiki/Extension:SyntaxHighlight/ja Extension&#58;SyntaxHighlight &#45; MediaWiki]</p></li></ul>
== アップグレード ==
基本的には、
# 新しいバージョンのMediaWikiファイル一式を新しいフォルダに設置して、そこに
#* LocalSettings.phpとimagesをコピー
#** LocalSettings.phpは場合によって手直しが必要かも
#* 自分で追加した拡張(extensions)(このサイトでいえばAutoCreateCategoryPagesとWikiSEO)やスキンなどを改めてダウンロードして追加(コピーしてきてもいいが、バージョンを更新したほうが良さそう)
#* ロゴなど、その他リソースをコピー
# シェル(推奨)またはmw&#45;config(当サイトの環境ではシェルのPHPが古すぎるのでこっち)からDBの更新(ただ、バージョンの差が小さければ、既に更新前の段階で基本的に問題なくページが閲覧できる場合も多そう)
という流れ。
1.のところでは、既存のMediaWikiインストールに上書きコピーするというのも一応可能で、実際これでやっている人も結構いそうだが、古いバージョンの(不要な)ファイルが残ってしまうので推奨はされていない。
<span id="スキンデザイン"></span>
== スキン・デザイン ==


<span id="cssjs"></span>
<span id="cssjs"></span>
== CSS/JS ==
=== CSS/JS ===


[https://meta.m.wikimedia.org/wiki/Help:User_style/ja Help&#58;User style/ja &#45; Meta] とかにある通り、デフォルトではcssを直接ページ内に書いても有効にならない。<code>wgAllowUserCss</code>をtrueにして有効にするか、MediaWiki&#58;Common.cssを直接編集するとよい。管理がしやすいので当サイトでは後者の方法を採用した。
[https://meta.m.wikimedia.org/wiki/Help:User_style/ja Help&#58;User style/ja &#45; Meta] とかにある通り、デフォルトではcssを直接ページ内に書いても有効にならない。<code>wgAllowUserCss</code>をtrueにして有効にするか、MediaWiki&#58;Common.cssを直接編集するとよい。管理がしやすいので当サイトでは後者の方法を採用した。
15行目: 91行目:
当サイトではVectorテーマを使用しているので、MediaWiki&#58;Vector.cssの内容も適用される。さらにVector 2022を使っているのでMediaWiki&#58;Vector&#45;2022.cssの内容も適用される。
当サイトではVectorテーマを使用しているので、MediaWiki&#58;Vector.cssの内容も適用される。さらにVector 2022を使っているのでMediaWiki&#58;Vector&#45;2022.cssの内容も適用される。


設定内容としては、ja.wikipedia.orgに合わせて文字サイズを0.875emから0.944emに変更している。
<s>設定内容としては、ja.wikipedia.orgに合わせて文字サイズを0.875emから0.944emに変更している。</s>現在は0.944→0.974に変更している。さらに、<code>vector&#45;font&#45;size</code>([[MediaWiki#文字サイズ|文字サイズ]]参照)関連の設定が優先される状態になっている。
 
=== 文字サイズ ===
 
MediaWikiの文字サイズは結構小さくて、Google検索コンソールでも評価を下げられたりすることがあり、[[MediaWiki#スキン・デザイン|CSS/JS]]の通りにサイズを手動で大きくするなどしていた。しかし、最近(2025/04)Wikipediaなどを見たら文字サイズが改善していて、さらによく見ると右側に表示(Appearance)というサイドバーがあり、非ログインユーザーでも文字サイズを3段階で変更できる(Cookieに保存される)ようになっている。
 
これは[https://www.mediawiki.org/wiki/Topic:Ybg9afru94numvhu The Appearance menu and new default standard font size will be available for logged-out users on Project:Village Pump/Flow]などに詳しく書いてあるが、どうやらver1.43前後からこの機能が追加されたようである。
 
ただし、デフォルトでは非ログインユーザーの文字サイズは3段階の一番小さいものに設定されており見づらい。このデフォルト値をLocalSettings.phpで変更する方法は多分なさそうだが、ソースコードを読むと、<code>skins/Vector/skin.json</code>の<code>&quot;vector&#45;font&#45;size&quot;&#58; 0</code>を例えば<code>1</code>に変更するとデフォルトが真ん中のサイズになることがわかる。
 
上記リンクには、いずれデフォルトがStandardサイズ(つまり<code>1</code>)に変更されるだろうと書いてある。そして、日本語版Wikipediaでは既にデフォルトが<code>1</code>になっている。しかし、現時点の日本語版WikipediaのMediaWIkiのバージョン([https://ja.m.wikipedia.org/wiki/Special:Version バージョン情報])である1.44.0&#45;wmf.27 (fbabd90)(かなり新しい)では、依然として上記の設定値に<code>0</code>になっていた([https://gerrit.wikimedia.org/r/plugins/gitiles/mediawiki/skins/Vector/+/refs/heads/wmf/1.44.0-wmf.27/skin.json skin.json - mediawiki/skins/Vector - Gitiles])。日本語版Wikipediaでもソースコードにカスタマイズが入っているのか、それとも他の方法があるのかは不明。
 
<span id="モバイルminerva"></span>
=== モバイル・minerva ===
 
[https://www.mediawiki.org/wiki/Extension:MobileFrontend/ja Extension:MobileFrontend - MediaWiki]を使うと、モバイルデバイスでアクセスした際に(デフォルトでは)minerva(<code>MinervaNeue</code>)スキンが使われるようになる。
 
minervaスキンだとカテゴリが表示されないが、LocalSettings.phpに<code>$wgMinervaShowCategories &#61; &#91; &#39;base&#39; &#61;&gt; true &#93;&#59;</code>と書くことで表示されるようになる。<code>$wgMinervaShowCategoriesButton &#61; &#91; &#39;base&#39; &#61;&gt; true &#93;&#59;</code>という情報も出てくるが、現在の最新版ではこれは効果がなかった。


== シェルアクセス ==
== シェルアクセス ==
31行目: 124行目:


== 画像 ==
== 画像 ==
[https://www.mediawiki.org/wiki/Help:Images/ja Help&#58;画像 &#45; MediaWiki]に詳しく書いてある。
MediaWikiにアップロードするのが原則だが、[https://www.mediawiki.org/wiki/Manual:$wgAllowExternalImages $wgAllowExternalImages]という変数を設定することで外部サイトの画像を直接掲載できる。このサイトは個人サイトであり、管理しやすい(普通のアップロードだとランダムなフォルダに入れられたりするし、移行が煩雑そう)のでこちらを使っている。


==== サイズ ====
==== サイズ ====


<code>style&#61;&quot;max&#45;width&#58;100%&#59; height&#58;auto&#59;&quot;</code>みたいなCSSを使えば、外部サイトの画像でもサイズを変えられる。
<code>style&#61;&quot;max&#45;width&#58;100%&#59; height&#58;auto&#59;&quot;</code>みたいなCSS(当サイトでは前述のCommon.cssに入れた)を使えば、外部サイトの画像でもサイズを変えられる。


<span id="500-internal-server-error"></span>
<span id="500-internal-server-error"></span>
46行目: 143行目:
== URLを短くする ==
== URLを短くする ==


最初の設定だとURLに<code>index.php?title&#61;</code>のような見栄えのよくない文字列が入ってしまうが、Wikipediaのように<code>example.com/wiki/タイトル</code>のような形式にできる。[https://www.mediawiki.org/wiki/Manual:Short_URL/ja Manual&#58;短縮URL &#45; MediaWiki]に案内がある。そこに書いてある通り、URLに<code>?</code>が入っているのは見栄えだけでなくSEO上もあまりよくないとのこと。
最初の設定だとURLに<code>index.php?title&#61;</code>のような見栄えのよくない文字列が入ってしまうが、Wikipediaのように<code>example.com/wiki/タイトル</code>のような形式が使えるように設定することもできる。[https://www.mediawiki.org/wiki/Manual:Short_URL/ja Manual&#58;短縮URL &#45; MediaWiki]に案内がある。そこに書いてある通り、URLに<code>?</code>が入っているのは見栄えだけでなくSEO上もあまりよくないとのこと。


ただし、<code>index.php?title&#61;</code>形式を短い形式に強制的にリダイレクトさせるわけではない(index.phpは単なる記事の閲覧以外にも使われるので、そのように設定するのは面倒そう)。この状態でも、記事間リンクは短いURLを使ってくれるようになる。あとはSEOで正規URLとして短い方を書いてやればいい。
注意点として、<code>index.php?title&#61;</code>形式を短い形式に強制的にリダイレクトさせるわけではない(index.phpは単なる記事の閲覧以外にも使われるので、そのように設定するのは面倒そう)。ただ、この状態でも、記事間リンクは短いURLを使ってくれるようになる。あとはWikiSEO拡張(後述)を使うと検索エンジンにも短いURLが通知される。


このサイトはサーバーがApacheなので、[https://www.mediawiki.org/wiki/Manual:Short_URL/Apache Manual&#58;Short URL/Apache &#45; MediaWiki]の通りにする。長々と説明が書いてあるが、普通に設定するなら<strong>Simple instructions</strong>のところだけ読めばよい。URLに設定したい場所(たとえば<code>wiki</code>)が既にMediaWikiのフォルダとして使われているとうまくいかない(このサイトの場合は<code>mw</code>なので大丈夫)ので、この記事の最初の方にある通りにMediaWikiのフォルダのほうを動かす。
このサイトはサーバーがApacheなので、[https://www.mediawiki.org/wiki/Manual:Short_URL/Apache Manual&#58;Short URL/Apache &#45; MediaWiki]の通りにする。長々と説明が書いてあるが、普通に設定するなら<strong>Simple instructions</strong>のところだけ読めばよい。URLに設定したい場所(たとえば<code>wiki</code>)が既にMediaWikiのフォルダとして使われているとうまくいかない(このサイトの場合は<code>mw</code>なので大丈夫)ので、この記事の最初の方にある通りにMediaWikiのフォルダのほうを動かす。
58行目: 155行目:
例えば、まず以下のような汎用の<code>Mbox</code>というテンプレートを作り(色も引数で指定できるのがポイント)、
例えば、まず以下のような汎用の<code>Mbox</code>というテンプレートを作り(色も引数で指定できるのがポイント)、


<pre style="margin-bottom:0.2em;" class="dummy_str_visual_basic">&lt;div style=&quot;border-left: 0.4rem solid #119922&quot; &gt;&lt;div style=&quot;padding-left: 10px; padding-right: 10px;  border: 1px solid #222222; background-color:#FBFBFB; border-left: 0.4rem solid {{{1}}}&quot; &gt;{{{2}}}&lt;/div&gt;
<syntaxhighlight style="margin-bottom:0.2em;" lang="html"><div style="border-left: 0.4rem solid #119922" ><div style="padding-left: 10px; padding-right: 10px;  border: 1px solid #222222; background-color:#FBFBFB; border-left: 0.4rem solid {{{1}}}" >{{{2}}}</div>
&lt;/div&gt;</pre>
</div></syntaxhighlight>
<div style='text-align: center;'>Template:Mbox</div>
<div style='text-align: center;'>Template:Mbox</div>


これを利用して下書きのテンプレートを作っている。
これを利用して下書きのテンプレートを作っている。


<pre style="margin-bottom:0.2em;" class="dummy_str_visual_basic">{{Mbox|#000022|このセクションの内容は未完成であり、今後の加筆が予定されています。}}</pre>
<syntaxhighlight style="margin-bottom:0.2em;" lang="vb.net">{{Mbox|#000022|このセクションの内容は未完成であり、今後の加筆が予定されています。}}</syntaxhighlight>
<div style='text-align: center;'>Template:Stub</div>
<div style='text-align: center;'>Template:Stub</div>


71行目: 168行目:


まずは[https://www.mediawiki.org/wiki/Extension:WikiSEO/ja WikiSEO]というextensionを同じように入れる。
まずは[https://www.mediawiki.org/wiki/Extension:WikiSEO/ja WikiSEO]というextensionを同じように入れる。
あとSEOの一環として「URLを短くする」も参照。


<span id="ogp"></span>
<span id="ogp"></span>
==== OGP ====
==== OGP ====


このサイトではとりあえず大した設定はしておらず、<code>$wgWikiSeoDefaultImage &#61; &quot;http&#58;//turgenev0.starfree.jp/mw/logo0.png&quot;&#59;</code>でロゴを設定し(相対パスでも表示はされるようだが、[https://webma.xscore.co.jp/study/ogp-seo/ SNSで重要なOGPとは?SEOとの関係性や設定方法を解説 &#45;webma&#45;]とかを見ると多分絶対パスのほうがよさそう)、各ページに<code>&#123;&#123;&#35;seo&#58;|title&#61;&#123;&#123;FULLPAGENAME&#125;&#125; &#45; Turgenev&#39;s Wiki&#125;&#125;</code>と書いただけで、あとは何もしていない。
このサイトではとりあえず大した設定はしておらず、<code>$wgWikiSeoDefaultImage &#61; &quot;http&#58;//turgenev0.starfree.jp/mw/logo0.png&quot;&#59;</code>でロゴを設定し(相対パスでも表示はされるようだが、[https://webma.xscore.co.jp/study/ogp-seo/ SNSで重要なOGPとは?SEOとの関係性や設定方法を解説 &#45;webma&#45;]とかを見ると多分絶対パスのほうがよさそう)、各ページに<code>&#123;&#123;&#35;seo&#58;|title&#61;&#123;&#123;FULLPAGENAME&#125;&#125; &#45; Turgenev&#39;s Wiki&#125;&#125;</code>と書いただけで、あとは何もしていない。先ほどの「URLを短くする」をやっておくと、そちらのURLが正規URL(カノニカルURL)として扱われるっぽい。


表示を確かめたいときは[https://developers.facebook.com/tools/debug/?locale=ja_JP シェアデバッガー &#45; Meta for Developers]を使うとよい。
表示を確かめたいときは[https://developers.facebook.com/tools/debug/?locale=ja_JP シェアデバッガー &#45; Meta for Developers]を使うとよい。


<code>&#123;&#123;&#35;seo&#58;...&#125;&#125;</code>でimageなどを一度設定してしまうと、後でimageを消してもその設定がそのまま残ってしまった(WikiSEOの<code>wfLoadExtension</code>を外すと消えるが、付けるとまた復活する)。おそらくページなどを格納しているMySQLデータベースのどこかに前回の設定が残っているのであろう。ページを削除するとリセットできるがそれ以外の治し方は不明。
<code>&#123;&#123;&#35;seo&#58;...&#125;&#125;</code>でimageなどを一度設定してしまうと、後でimageを消してもその設定がそのまま残ってしまった(WikiSEOの<code>wfLoadExtension</code>を外すと消えるが、付けるとまた復活する)。おそらくページなどを格納しているMySQLデータベースのどこかに前回の設定が残っているのであろう。ページを削除するとリセットできるがそれ以外の治し方は不明。
==== サイトマップ ====
generateSitemap.phpを使えばよい。しかし以前使っていたスターサーバーフリーではシェルアクセスがなくて使えなかったので自前で生成できるようにした(参考&#58; [[フィルターされたNotionページによるMediaWiki|フィルターされたNotionページによるMediaWiki]])


<span id="その他seo"></span>
<span id="その他seo"></span>
89行目: 188行目:


{{Stub}}
{{Stub}}
==== サイトマップ ====
generateSitemap.phpを使う。当サイトではシェルアクセスがなくて使えなかったので自前で生成している(参考&#58; [[フィルターされたNotionページによるMediaWiki|フィルターされたNotionページによるMediaWiki]])
[[Category:IT]]{{#seo:|title={{FULLPAGENAME}} - Turgenev's Wiki}}
[[Category:IT]]{{#seo:|title={{FULLPAGENAME}} - Turgenev's Wiki}}

2025年5月6日 (火) 13:36時点における最新版

Wikipediaやこのサイトで使用されている代表的なWikiシステムであるMediaWikiについて解説する。

初期設定

動作要件

データベース(MySQL)と(CGI版の)phpが使えることを確認しておく。スターサーバーフリー(php+mysql)では動いた。

SSHが使えないような低価格帯のレンタルサーバーのプランの中でも、PHPでexecなどの機能を使えば事実上任意コマンドが実行できるものと、それらの機能が制限されているサーバーがある。後者でもMediaWikiは一通り動くが、一部機能が動作しない場合もあるのであまりお勧めしない(特に他サーバー移行で手こずるのは困る)。

インストール

詳しくはここを参照。

MySQLの設定をしたら、Mediawikiのファイル一式を設置し、/mw-configにアクセスして指示に従うとインストールが完了する。/mw-configは誰でも見られるファイルなので少し不安だが、MySQLのパスワードがわからないとインストールは完了しないため、別に公開でも問題なさそう。(不安ならBasic認証をかけておく?)

初期の管理ユーザーのパスワードを忘れるとやや面倒なことになる。Chromeがちゃんと覚えてくれない場合があるので注意すること。

忘れた場合の初期化方法(CGI版phpの場合?)

データベース(phpMyAdmin)から、

UPDATE `user` SET user_password = CONCAT(':B:somesalt:', MD5(CONCAT('somesalt-', MD5('somepass')))) WHERE user_name = 'someuser'

とする。https://www.mediawiki.org/wiki/Topic:Rnq7yc02mg1o4j34より。2か所あるsomesaltのところにはLocalSettings.phpの$wgDBpasswordの値を入れること。

MediaWiki1.12以前はちょっと違うらしい。自分が成功したのは1.39.1(2023年1月)。

  • CGI版じゃなくてphpコマンドが直接打てるなら、こちらの方法でもいけそうである。
  • ファイル一式は、zipを解凍してからFTPでアップロードするとかなり時間がかかるので(1時間くらい)、zipでアップロードしてサーバー上で解凍したほうがいい。レンタルサーバー提供のファイルマネージャーでできない場合は、ZIPファイルをサーバーにアップしてから解凍する方法 のようにPHPでファイル名を指定して解凍するか、https://github.com/dulldusk/phpfm のようなPHPで動くファイルマネージャー(フォルダ削除なども高速にできる)から解凍するとよい。ただし、これらのphpファイルはBasic認証で保護するなどアクセス権限には十分気を付けること。exec系(任意コマンド実行)が許可されていないstarserver freeでもこれらは動作した。

MediaWikiの拡張はたくさん(全部)onにするとよいらしい。

設定が終わるとLocalSettings.phpが出力され、以後これで色々な設定ができるようになる。インストール後にフォルダ名を変えるときはリネームの上、LocalSettings.phpで$wgScriptPath = "/mw";などと変えればよい。新規ユーザー作成を許可するかどうかなどの設定もここでできるので、禁止したい場合などはこのタイミングでやっておくとよいだろう。

Gitからのインストール

Git からのダウンロード - MediaWikiなどに書いてあるが、安定版リリースにバンドルされている拡張やスキン(Bundled extensions and skins - MediaWiki)やvendorフォルダ(?)が無かったりして動かすのに一手間かかる。

その他初期設定

  • 管理画面

    ブラウザ上から$wgScriptPath以下の/mw-configというパスにアクセスすればよい。ここは誰でも見れてしまうが、その先に進むには(初期インストール後に生成されてLocalSettings.phpに書き込まれる)$wgUpgradeKeyが必要なので管理者以外は操作できない。

  • ロゴ
    参考サイトにもあるが、resource/assets/にデフォルトのchange-your-logo.svgがある。それを上書きするか、名前を変えるなら$wgLogosで設定。サイズは135x135で表示される(それより大きいサイズにすると切り取られる)模様。

  • faviconも$wgFaviconで設定。自分はsvgを256x256のpngで保存してからImageMagickでicoに変換した。

  • ここから設定すると版指定削除ができる。

  • スキン
    $wgDefaultSkin = "vector";となっているが、"vector-2022"のほうが良さそうだったのでそちらに変えた。あわせて$wgVectorResponsiveをtrueにしてモバイルでの視認性を上げた。

  • カテゴリページの自動作成
    Auto Create Category Pagesをダウンロードし、wfLoadExtension( 'AutoCreateCategoryPages' );とする。これは便利。

  • アクセス数解析

    精度のほどはわからないが、HitCountersでできる。同じようにダウンロードした後、リンク先に記載のとおり、管理画面に行ってupdate.phpを実行する必要がある。その後でwfLoadExtensionをすればよい。アクセス数は誰からでも見えるようであるが、特に問題はないので放置。

  • SyntaxHightlight

    Linuxのサーバーでは、extensions/SyntaxHighlight_GeSHi/pygments/pygmentizeのパーミッションを変更して所有者に実行権限を付加(先頭の桁を7にする)。参考: Extension:SyntaxHighlight - MediaWiki

アップグレード

基本的には、

  1. 新しいバージョンのMediaWikiファイル一式を新しいフォルダに設置して、そこに
    • LocalSettings.phpとimagesをコピー
      • LocalSettings.phpは場合によって手直しが必要かも
    • 自分で追加した拡張(extensions)(このサイトでいえばAutoCreateCategoryPagesとWikiSEO)やスキンなどを改めてダウンロードして追加(コピーしてきてもいいが、バージョンを更新したほうが良さそう)
    • ロゴなど、その他リソースをコピー
  2. シェル(推奨)またはmw-config(当サイトの環境ではシェルのPHPが古すぎるのでこっち)からDBの更新(ただ、バージョンの差が小さければ、既に更新前の段階で基本的に問題なくページが閲覧できる場合も多そう)

という流れ。

1.のところでは、既存のMediaWikiインストールに上書きコピーするというのも一応可能で、実際これでやっている人も結構いそうだが、古いバージョンの(不要な)ファイルが残ってしまうので推奨はされていない。

スキン・デザイン

CSS/JS

Help:User style/ja - Meta とかにある通り、デフォルトではcssを直接ページ内に書いても有効にならない。wgAllowUserCssをtrueにして有効にするか、MediaWiki:Common.cssを直接編集するとよい。管理がしやすいので当サイトでは後者の方法を採用した。

当サイトでは使っていないがJSについても同じ(wgAllowUserJsとMediaWiki:Common.js)。

スキンに関するCSS

当サイトではVectorテーマを使用しているので、MediaWiki:Vector.cssの内容も適用される。さらにVector 2022を使っているのでMediaWiki:Vector-2022.cssの内容も適用される。

設定内容としては、ja.wikipedia.orgに合わせて文字サイズを0.875emから0.944emに変更している。現在は0.944→0.974に変更している。さらに、vector-font-size文字サイズ参照)関連の設定が優先される状態になっている。

文字サイズ

MediaWikiの文字サイズは結構小さくて、Google検索コンソールでも評価を下げられたりすることがあり、CSS/JSの通りにサイズを手動で大きくするなどしていた。しかし、最近(2025/04)Wikipediaなどを見たら文字サイズが改善していて、さらによく見ると右側に表示(Appearance)というサイドバーがあり、非ログインユーザーでも文字サイズを3段階で変更できる(Cookieに保存される)ようになっている。

これはThe Appearance menu and new default standard font size will be available for logged-out users on Project:Village Pump/Flowなどに詳しく書いてあるが、どうやらver1.43前後からこの機能が追加されたようである。

ただし、デフォルトでは非ログインユーザーの文字サイズは3段階の一番小さいものに設定されており見づらい。このデフォルト値をLocalSettings.phpで変更する方法は多分なさそうだが、ソースコードを読むと、skins/Vector/skin.json"vector-font-size": 0を例えば1に変更するとデフォルトが真ん中のサイズになることがわかる。

上記リンクには、いずれデフォルトがStandardサイズ(つまり1)に変更されるだろうと書いてある。そして、日本語版Wikipediaでは既にデフォルトが1になっている。しかし、現時点の日本語版WikipediaのMediaWIkiのバージョン(バージョン情報)である1.44.0-wmf.27 (fbabd90)(かなり新しい)では、依然として上記の設定値に0になっていた(skin.json - mediawiki/skins/Vector - Gitiles)。日本語版Wikipediaでもソースコードにカスタマイズが入っているのか、それとも他の方法があるのかは不明。

モバイル・minerva

Extension:MobileFrontend - MediaWikiを使うと、モバイルデバイスでアクセスした際に(デフォルトでは)minerva(MinervaNeue)スキンが使われるようになる。

minervaスキンだとカテゴリが表示されないが、LocalSettings.phpに$wgMinervaShowCategories = [ 'base' => true ];と書くことで表示されるようになる。$wgMinervaShowCategoriesButton = [ 'base' => true ];という情報も出てくるが、現在の最新版ではこれは効果がなかった。

シェルアクセス

Manual:Maintenance scripts/Running the scripts - MediaWikiにあるように、シェルアクセスがないところで使っている場合は拡張機能でどうにかする。2つ書いてあるがMaintenanceShellのほうがいろいろと良さそう。MaintenanceShellは、有効にしたあと、Special:MaintenanceShellにアクセスする。

しかし、generateSitemapとかはまともに動かなかった。まあやはりというか、普通はシェルアクセスのあるところで使ったほうがいいっぽい。

API

nodeでやる。requestはdeprecatedになったのでaxiosを使う。

cookieを使うってことがどこにも書いてなくて難しかった。ここでようやく見つけた。

画像

Help:画像 - MediaWikiに詳しく書いてある。

MediaWikiにアップロードするのが原則だが、$wgAllowExternalImagesという変数を設定することで外部サイトの画像を直接掲載できる。このサイトは個人サイトであり、管理しやすい(普通のアップロードだとランダムなフォルダに入れられたりするし、移行が煩雑そう)のでこちらを使っている。

サイズ

style="max-width:100%; height:auto;"みたいなCSS(当サイトでは前述のCommon.cssに入れた)を使えば、外部サイトの画像でもサイズを変えられる。

500 internal server error

アップロードまではできたが、画像ファイルが(ftpで見てもちゃんとアップロードされているのに)500 internal server errorで見れない。

これはstarserverの性質かもしれないが、どうやらimages直下の.htaccessが悪いようで、これを消したら見れた。実際に悪さをしているのはOptions +FollowSymLinksだったっぽい。これをコメントアウトすると見れた。

URLを短くする

最初の設定だとURLにindex.php?title=のような見栄えのよくない文字列が入ってしまうが、Wikipediaのようにexample.com/wiki/タイトルのような形式が使えるように設定することもできる。Manual:短縮URL - MediaWikiに案内がある。そこに書いてある通り、URLに?が入っているのは見栄えだけでなくSEO上もあまりよくないとのこと。

注意点として、index.php?title=形式を短い形式に強制的にリダイレクトさせるわけではない(index.phpは単なる記事の閲覧以外にも使われるので、そのように設定するのは面倒そう)。ただ、この状態でも、記事間リンクは短いURLを使ってくれるようになる。あとはWikiSEO拡張(後述)を使うと検索エンジンにも短いURLが通知される。

このサイトはサーバーがApacheなので、Manual:Short URL/Apache - MediaWikiの通りにする。長々と説明が書いてあるが、普通に設定するならSimple instructionsのところだけ読めばよい。URLに設定したい場所(たとえばwiki)が既にMediaWikiのフォルダとして使われているとうまくいかない(このサイトの場合はmwなので大丈夫)ので、この記事の最初の方にある通りにMediaWikiのフォルダのほうを動かす。

テンプレート

MediaWikiにはテンプレートというものがあり、記事のパーツを引用して使いまわすことができる。このWikiでもWikipediaの「独自研究」などに倣ったメッセージボックスをいくつかテンプレートとして利用している。

例えば、まず以下のような汎用のMboxというテンプレートを作り(色も引数で指定できるのがポイント)、

<div style="border-left: 0.4rem solid #119922" ><div style="padding-left: 10px; padding-right: 10px;  border: 1px solid #222222; background-color:#FBFBFB; border-left: 0.4rem solid {{{1}}}" >{{{2}}}</div>
</div>
Template:Mbox

これを利用して下書きのテンプレートを作っている。

{{Mbox|#000022|このセクションの内容は未完成であり、今後の加筆が予定されています。}}
Template:Stub

SEO・OGP

まずはWikiSEOというextensionを同じように入れる。

OGP

このサイトではとりあえず大した設定はしておらず、$wgWikiSeoDefaultImage = "http://turgenev0.starfree.jp/mw/logo0.png";でロゴを設定し(相対パスでも表示はされるようだが、SNSで重要なOGPとは?SEOとの関係性や設定方法を解説 -webma-とかを見ると多分絶対パスのほうがよさそう)、各ページに{{#seo:|title={{FULLPAGENAME}} - Turgenev's Wiki}}と書いただけで、あとは何もしていない。先ほどの「URLを短くする」をやっておくと、そちらのURLが正規URL(カノニカルURL)として扱われるっぽい。

表示を確かめたいときはシェアデバッガー - Meta for Developersを使うとよい。

{{#seo:...}}でimageなどを一度設定してしまうと、後でimageを消してもその設定がそのまま残ってしまった(WikiSEOのwfLoadExtensionを外すと消えるが、付けるとまた復活する)。おそらくページなどを格納しているMySQLデータベースのどこかに前回の設定が残っているのであろう。ページを削除するとリセットできるがそれ以外の治し方は不明。

サイトマップ

generateSitemap.phpを使えばよい。しかし以前使っていたスターサーバーフリーではシェルアクセスがなくて使えなかったので自前で生成できるようにした(参考: フィルターされたNotionページによるMediaWiki

その他SEO

そこまでの必要性を感じないが、気が向いたらやるかも。

このセクションの内容は未完成であり、今後の加筆が予定されています。催促は管理者までお気軽にどうぞ。