MediaWikiをMixhostにインストールする

この記事には広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

今回はWikipediaのようなサイトをmixhostのサーバで構築して運営していきたいと思います。

MediaWikiとは、本家Wikipediaのために作られたWikiシステムのフレームワークです。

PHPで実装されており、データベースにはMySQLやPostgreSQL、またはSQLiteを使用しています。

公式サイトだと圧縮ファイルをダウンロードして、FTPでレンタルサーバへアップして~という手順が記載されております。

しかし、mixhostではSoftaculousを利用して簡単にセットアップが可能でした(一時は500エラーで悩んだけども)。

その手順を紹介します。

この記事では執筆時点で最新の「MediaWiki 1.38.2」をインストールしていきます。

Softaculousからインストールする

「Cパネル→カテゴリ→Wikis」

「MediaWikiを選択してインストール押下」

セットアップの詳細情報を入力していきます

インストールディレクトリ名に「wiki」は使わない方がよい

「wiki」というディレクトリにインストールするのはお勧めしません。インストール後にURLのリダイレクト設定で短縮URLを指定するのが一般的ですが、そのときに間違いに気付きます (仮想パスが実際のパスと競合するため)。公式サイトでは「wiki」ではなく、「w」を推奨しています。

後で困るので、wikiではなく他の名前のディレクトリ名にしましょう。

インストールボタン押下

PHPのバージョンに注意

今回のMediaWiki(1.38.2)はPHP8.0系ではインストールエラーになりました。8系に変更している人はCパネルのMultiPHP マネージャーからPHPのバージョンを7系に変更しましょう。互換性確認

500エラーはRewriteEngine Onで解決

インストールの確認のために、URLへアクセスすると500エラー

この解析に8時間くらいかかりました。

公式サイトのインストール手順と同じ状態だし、エラーログも出力されないので原因がわからない状態だった。

何度もアンインストールし設定を変えて再インストール。

Softaculous経由ではなく、zipをダウンロードしてサーバにアップロードして解凍する方法も試すが同じく500エラー。

ダメもとでhtaccessファイルに以下を追記したところ解決しました。

RewriteRuleを何も書いていないのに、この記述を書いてないと500エラーとなります。なぜかは不明です。

.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>

ログインページが表示された

URLリダイレクト設定【短縮URL】

mediawikiのURLは初期状態のままだと「ドメイン/インストールディレクトリ/index.php?title=ページ名」のようになる。

これを本家WikiのURLように

「ドメイン名/wiki/ページ名」としましょう。

URLに拡張子があるのは気持が悪いです。

この時に注意なのが、インストールしたディレクトリ名とリダイレクト先のパスは同じ文言が使えないということです。

wikiディレクトリにインストールしなかったのはこのためです

インストールの章でwikiというディレクトリ名にインストールしないようにっていうのはこれが理由です。一般的には「ドメイン名/wiki/ページ名」としたいですよね。インストールのディレクトリ名にwikiを指定するとそれが実現できなくなるのです。理由は公式ヘルプの「Moving a wiki from /wiki to /w」を見てほしいです。

私は公式通りに「w」ディレクトリにMediaWikiをインストールしているので、違う名前でインストールした方は読み替えてください。

ドメイン直下の「.htaccess」を編集

ドメイン直下の「.htaccess」を編集していきます。

.htaccess
RewriteEngine On
Options -Indexes
# wiki/でアクセスされたらw/index.phpにリダイレクトする(デフォルトはドメイン/w/index.php?title=ページ名となるので変更する)
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]

# ドメインルートにアクセスされたらメインページへリダイレクトする
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]

LocalSettings.phpを編集

ドメイン/インストールディレクトリ/LocalSettings.phpを編集します

LocalSettings.php
$wgScriptPath = "/w"; ★この記述はすでにデフォルトで記載済み。この次行に以下を追記する
$wgArticlePath = "/wiki/$1";

常時SSLとwwwなしのリダイレクトを設定

HTTPSとwwwなしのリダイレクト設定もドメイン直下の「.htaccess」に編集していきます。

.htaccess
RewriteEngine On
Options -Indexes
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-SSL} !on
RewriteCond %{HTTP_HOST} ^ドメイン\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.ドメイン\.com$
RewriteRule ^(.*)$ "https\:\/\/ドメイン\.com\/$1" [R=301,L]

# wiki/でアクセスされたらw/index.phpにリダイレクトする(デフォルトはドメイン/w/index.php?title=ページ名となるので変更する)
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]

# ドメインルートにアクセスされたらメインページへリダイレクトする
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]

セキュリティ対策するまで利用権限を自分だけにする

初期状態だと、URLを知っている人なら誰でも新規ページを作ったり編集できる状態です。

スパム業者にそれが見つかると、新規ページをガンガン作成されてしまう。

そういったセキュリティ対策をするまでは、管理者ユーザしか編集できない状態にしておきましょう。

LocalSettings.php
# セキュリティ対策するまでは誰も読み書き禁止にして自分だけのWiki状態にする
$wgGroupPermissions['*']['read'] = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['createpage'] = false;
$wgGroupPermissions['*']['createtalk'] = false;
$wgGroupPermissions['*']['writeapi'] = false;
$wgGroupPermissions['*']['createaccount'] = false;

拡張機能でレスポンシブ対応にする

MediaWikiは拡張機能をインストールしていくだけで、機能変更が簡単にできます。

インストールした状態だとレスポンシブ対応されていないので、拡張機能を使ってレスポンシブ対応にしていきます。

本家Wikipediaも使っている「MobileFrontend」を利用します。

MediaWikiのバージョンと併せて版数は1.38をインストールしていきます。

資材のダウンロード

このページ(Extension:MobileFrontend)から圧縮されたファイル群をダウンロードします。

「MobileFrontend-REL1_38-68d9ad3.tar.gz」というようなgzで圧縮された形式なので解凍します。

資材をサーバへアップロード

解凍して作成された「MobileFrontend」フォルダをMediaWikiをインストールしたディレクトリにある「extensions」配下にアップロードします。

私と同じインストールパスならば、「ドメイン/w/extensions」配下に格納するということです。

FTPを使ってアップロードしましょう。

LocalSettings.phpの編集

以下のコードを LocalSettings.php の末尾に追加します。

LocalSettings.php
wfLoadExtension( 'MobileFrontend' );

有効化の確認

自分のウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。

私のリダイレクト設定だと「https://ドメイン/wiki/Special:Version」でアクセスして「MobileFrontend」の文言で検索してヒットすれば有効化されています。

実際にスマホからページにアクセスしてみて、レスポンシブ対応を確認してみましょう。

まとめ

途中、500エラーに悩まされましたが1日でmixhostサーバにMediaWikiをインストールして稼働させることができました。

これから他の拡張機能をインストールしていきカスタマイズしていきたいと思います。