「MediaWikiの設定 - その他」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
MediaWikiを運用していく中では、LocalSettings.phpによる基本設定やエクステンションの導入だけでなく、サーバ環境やセキュリティに関連する様々な設定・操作が必要になる場合がある。<br>
<br>
具体的には、以下に示すような設定がある。<br>
* パフォーマンスやコンテンツの表示に問題が発生した場合に有効なキャッシュの管理
* 不要になった削除ページの履歴をデータベースから完全に消去
* .htaccessを使用したBasic認証により特定のディレクトリへのアクセスを制限
<br><br>
<br><br>


62行目: 68行目:


== 削除ページの履歴の完全な削除 ==
== 削除ページの履歴の完全な削除 ==
全ての削除ページの履歴を完全に削除する場合は、まず、通常のページ削除機能を使用してページを削除する。<br>
これは、復元不可能になるため注意が必要である。<br>
<br>
<br>
次に、maintenanceディレクトリにあるdeleteArchivedRevisions.phpメンテナンススクリプトを実行する。<br>
全ての削除ページの履歴を完全に削除する場合は、まず、まず削除される件数を確認する。<br>
  # MediaWiki 1.40以降の場合
  # MediaWiki 1.40以降の場合
# まず削除される件数を確認
  php maintenance/run.php deleteArchivedRevisions または phpcli maintenance/run.php deleteArchivedRevisions
  php maintenance/run.php deleteArchivedRevisions または phpcli maintenance/run.php deleteArchivedRevisions
   
   
  # 削除を実行
  # MediaWiki 1.39以前の場合
php maintenance/deleteArchivedRevisions.php
<br>
削除を実行する。<br>
これにより、削除されたリビジョンが保存されているarchiveテーブルが消去されて、削除されたページのテキストも削除される。<br>
# MediaWiki 1.40以降の場合
  php maintenance/run.php deleteArchivedRevisions --delete または phpcli maintenance/run.php deleteArchivedRevisions --delete
  php maintenance/run.php deleteArchivedRevisions --delete または phpcli maintenance/run.php deleteArchivedRevisions --delete
   
   
76行目: 85行目:
  php maintenance/deleteArchivedRevisions.php --delete または phpcli maintenance/deleteArchivedRevisions.php --delete
  php maintenance/deleteArchivedRevisions.php --delete または phpcli maintenance/deleteArchivedRevisions.php --delete
<br>
<br>
これにより、削除されたリビジョンが保存されているアーカイブテーブルが消去されて、削除されたページのテキストも削除される。<br>
次に、参照されていないテキストデータも削除するため、テキストデータをクリーンアップする。
# MediaWiki 1.40以降の場合
php maintenance/run.php purgeOldText --purge
# MediaWiki 1.39以前の場合
php maintenance/purgeOldText.php --purge または phpcli maintenance/purgeOldText.php --purge
<br>
削除記録を消去する。<br>
# MariaDB または MySQLにログインする。
#: <pre>mysql -u mochiu_wiki -p</pre>
# MediaWikiが使用しているデータベースを選択する。
#: <syntaxhighlight lang="sql">use <データベース名>;</syntaxhighlight>
# 削除記録を消去する。
#: <syntaxhighlight lang="sql">
-- 全ての削除記録を削除する場合
DELETE FROM logging WHERE log_type = 'delete';
-- 特定の期間の削除記録を削除する場合
DELETE FROM logging
    WHERE log_type = 'delete'
    AND log_timestamp BETWEEN '20240101000000' AND '20241231235959';
-- 特定のユーザによる削除記録を削除する場合
DELETE FROM logging
    WHERE log_type = 'delete'
    AND log_user = ユーザーID;
</syntaxhighlight>
<br>
<br>
ただし、アーカイブテーブルからエントリを直接削除する場合は (TRUNCATE TABLE archive;)<br>
データベースの設定によっては、リビジョンを削除した後、SQLコマンド<code>OPTIMIZE TABLE text, archive</code>を実行してアーカイブすることもできる。<br>
リンクされたテキストレコードを削除するため、purgeOldText.phpメンテナンススクリプトを使用する必要がある。<br>
<br><br>
 
== .htaccessを使用したBasic認証 ==
バリューサーバにおいて、.htaccessを使用したBasic認証により、特定のディレクトリへのアクセスを制限することができる。<br>
<br>
Basic認証では、<u>.htaccess</u> ファイル (アクセス制御ルール) と <u>.htpasswd</u> ファイル (ユーザ名と暗号化されたパスワード) の2つのファイルが必要となる。<br>
<u>.htpasswd</u> ファイルは、セキュリティ上、Webからアクセスできない場所に配置する。<br>
<br>
<u>※注意</u><br>
* <u>LiteSpeedはApache互換の.htaccessをサポートしているため、以下の設定がそのまま動作する。</u>
* <u>ただし、.htaccessを変更した直後はキャッシュの関係で反映が遅れる場合がある。<br>うまく動作しない場合は、数分待ってから再度アクセスすること。</u>
<br>
<br>
古いリビジョンを削除するだけでは、アクティブなWikiのデータの多くがテキストテーブルで占められているため、通常はあまり役に立たない。<br>
==== サーバ上の絶対パスの確認 ====
<code>AuthUserFile</code> ディレクティブに指定するパスが不明な場合は、public_htmlディレクトリ内に一時的に以下のPHPファイルを配置して確認する。<br>
<br>
<br>
データベースの設定によっては、リビジョンを削除した後、SQLコマンド<code>OPTIMIZE TABLE text, archive</code>を実行してアーカイブすることもできる。<br>
<syntaxhighlight lang="php">
<?php
// このファイル自身の絶対パスを表示する
echo __FILE__;
?>
</syntaxhighlight>
<br>
例えば、"/virtual/<アカウント名>/public_html/test.php" と表示された場合、ドキュメントルートの親ディレクトリは "/virtual/<アカウント名>/" となる。<br>
<br>
<u>※注意</u><br>
<u>確認後は、このPHPファイルを必ず削除すること。</u><br>
<br>
==== .htpasswdファイルの作成 ====
パスワードファイルを公開ディレクトリより上の階層に配置する。<br>
<br>
バリューサーバのドキュメントルートは <u>/virtual/アカウント名/public_html/</u> であるため、<br>
<u>.htpasswd</u> ファイルは、<u>/virtual/アカウント名/ (バリューサーバの場合)</u> の直下に配置する。<br>
<br>
パスワードのハッシュを生成する。(Winodws環境の場合はWSL、Linux環境等で実行する)<br>
htpasswd -cb .htpasswd <ユーザ名> <パスワード>
<br>
生成される <u>.htpasswd</u> ファイルの内容は以下のようになる。<br>
myuser:$apr1$xxxxx$xxxxxxxxxxxxxxxxxxxxxxxx
<br>
このファイルをFTPまたはファイルマネージャを使用して、<u>/virtual/<アカウント名>/.htpasswd</u>としてアップロードする。<br>
<br>
==== .htaccessファイルの作成 ====
保護したいディレクトリ (例: <u>/virtual/<アカウント名>/public_html/a/</u>) に、以下の内容で <u>.htaccess</u> ファイルを作成・配置する。<br>
<br>
<syntaxhighlight lang="apache">
# Basic認証の設定
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /virtual/<アカウント名>/.htpasswd
Require valid-user
</syntaxhighlight>
<br>
各ディレクティブの説明を以下に示す。<br>
* <code>AuthType Basic</code>
*: 認証方式としてBasic認証を使用することを宣言する。
* <code>AuthName</code>
*: ブラウザにログインダイアログが表示される時の領域名 (メッセージ) を指定する。任意の文字列でよい。
* <code>AuthUserFile</code>
*: <u>.htpasswd</u> ファイルのサーバ上の絶対パスを指定する。
*: "アカウント名"の部分は自身のバリューサーバのアカウント名に置き換える。
* <code>Require valid-user</code>
*: <u>.htpasswd</u> ファイルに登録されている全ユーザにアクセスを許可する。
<br>
==== 動作確認 ====
Webブラウザで対象のURLにアクセスする。<br>
ユーザ名とパスワードの入力を求めるダイアログが表示されることを確認する。<br>
<br>
* 正しい認証情報を入力した場合は、ページが表示される。
* キャンセルまたは誤った入力の場合は、<u>401 Unauthorized</u> エラーが表示される。
<br><br>
<br><br>



2026年2月8日 (日) 04:09時点における最新版

概要

MediaWikiを運用していく中では、LocalSettings.phpによる基本設定やエクステンションの導入だけでなく、サーバ環境やセキュリティに関連する様々な設定・操作が必要になる場合がある。

具体的には、以下に示すような設定がある。

  • パフォーマンスやコンテンツの表示に問題が発生した場合に有効なキャッシュの管理
  • 不要になった削除ページの履歴をデータベースから完全に消去
  • .htaccessを使用したBasic認証により特定のディレクトリへのアクセスを制限



キャッシュの削除

MediaWikiのキャッシュを削除するには、いくつかの方法がある。

推奨される手順を以下に示す。

  • まず、Webインターフェースからの方法を試す。
  • 解決しない場合は、メンテナンススクリプトを使用する。
  • より徹底的な削除が必要な場合は、複数の方法を組み合わせる。


※注意

  • キャッシュクリアは一時的にサイトのパフォーマンスに影響を与える可能性がある。
  • 大規模なコンテンツの場合、キャッシュの再構築に時間が掛かることがある。
  • 本番環境での作業の場合は、メンテナンス時間中に実行することを推奨する。


Webインターフェースから削除 (管理者のみ)

  1. Special:サイト管理 (Special:Version) ページに移動する。
  2. ページ下部にある[キャッシュ]セクションにおいて、[キャッシュを空にする]を選択する。


maintenance scriptの使用

MediaWikiのインストールディレクトリに移動する。

cd <MediaWikiのインストールディレクトリ>


キャッシュ全体を削除する。

# MediaWiki 1.40以降の場合
php maintenance/run.php rebuildall または phpcli maintenance/run.php rebuildall
php maintenance/run.php update     または phpcli maintenance/run.php update

# MediaWiki 1.39以前の場合
php maintenance/rebuildall.php または phpcli maintenance/rebuildall.php
php maintenance/update.php     または phpcli maintenance/update.php


個別のキャッシュを削除する場合

MediaWikiのインストールディレクトリに移動する。

cd <MediaWikiのインストールディレクトリ>


# ローカライゼーションキャッシュの再構築
php maintenance/rebuildLocalisationCache.php または phpcli maintenance/rebuildLocalisationCache.php

# リソースローダーキャッシュの削除
php maintenance/refreshLinks.php または phpcli maintenance/refreshLinks.php


ファイルシステムから直接削除

MediaWikiのインストールディレクトリに移動する。

cd <MediaWikiのインストールディレクトリ>


キャッシュディレクトリの内容を削除する。

rm -rf ./cache/*


LocalSettings.phpで一時的にキャッシュを無効化

vi LocalSettings.php


 // LocalSettings.phpファイル
 
 $wgCacheDirectory    = false;
 $wgEnableParserCache = false;



削除ページの履歴の完全な削除

これは、復元不可能になるため注意が必要である。

全ての削除ページの履歴を完全に削除する場合は、まず、まず削除される件数を確認する。

# MediaWiki 1.40以降の場合
php maintenance/run.php deleteArchivedRevisions または phpcli maintenance/run.php deleteArchivedRevisions

# MediaWiki 1.39以前の場合
php maintenance/deleteArchivedRevisions.php


削除を実行する。
これにより、削除されたリビジョンが保存されているarchiveテーブルが消去されて、削除されたページのテキストも削除される。

# MediaWiki 1.40以降の場合
php maintenance/run.php deleteArchivedRevisions --delete または phpcli maintenance/run.php deleteArchivedRevisions --delete

# MediaWiki 1.39以前の場合
php maintenance/deleteArchivedRevisions.php --delete または phpcli maintenance/deleteArchivedRevisions.php --delete


次に、参照されていないテキストデータも削除するため、テキストデータをクリーンアップする。

# MediaWiki 1.40以降の場合
php maintenance/run.php purgeOldText --purge

# MediaWiki 1.39以前の場合
php maintenance/purgeOldText.php --purge または phpcli maintenance/purgeOldText.php --purge


削除記録を消去する。

  1. MariaDB または MySQLにログインする。
    mysql -u mochiu_wiki -p
  2. MediaWikiが使用しているデータベースを選択する。
    use <データベース名>;
    
  3. 削除記録を消去する。
     -- 全ての削除記録を削除する場合
     DELETE FROM logging WHERE log_type = 'delete';
     
     -- 特定の期間の削除記録を削除する場合
     DELETE FROM logging 
        WHERE log_type = 'delete' 
        AND log_timestamp BETWEEN '20240101000000' AND '20241231235959';
     
     -- 特定のユーザによる削除記録を削除する場合
     DELETE FROM logging 
        WHERE log_type = 'delete' 
        AND log_user = ユーザーID;
    


データベースの設定によっては、リビジョンを削除した後、SQLコマンドOPTIMIZE TABLE text, archiveを実行してアーカイブすることもできる。


.htaccessを使用したBasic認証

バリューサーバにおいて、.htaccessを使用したBasic認証により、特定のディレクトリへのアクセスを制限することができる。

Basic認証では、.htaccess ファイル (アクセス制御ルール) と .htpasswd ファイル (ユーザ名と暗号化されたパスワード) の2つのファイルが必要となる。
.htpasswd ファイルは、セキュリティ上、Webからアクセスできない場所に配置する。

※注意

  • LiteSpeedはApache互換の.htaccessをサポートしているため、以下の設定がそのまま動作する。
  • ただし、.htaccessを変更した直後はキャッシュの関係で反映が遅れる場合がある。
    うまく動作しない場合は、数分待ってから再度アクセスすること。


サーバ上の絶対パスの確認

AuthUserFile ディレクティブに指定するパスが不明な場合は、public_htmlディレクトリ内に一時的に以下のPHPファイルを配置して確認する。

 <?php
 // このファイル自身の絶対パスを表示する
 echo __FILE__;
 ?>


例えば、"/virtual/<アカウント名>/public_html/test.php" と表示された場合、ドキュメントルートの親ディレクトリは "/virtual/<アカウント名>/" となる。

※注意
確認後は、このPHPファイルを必ず削除すること。

.htpasswdファイルの作成

パスワードファイルを公開ディレクトリより上の階層に配置する。

バリューサーバのドキュメントルートは /virtual/アカウント名/public_html/ であるため、
.htpasswd ファイルは、/virtual/アカウント名/ (バリューサーバの場合) の直下に配置する。

パスワードのハッシュを生成する。(Winodws環境の場合はWSL、Linux環境等で実行する)

htpasswd -cb .htpasswd <ユーザ名> <パスワード>


生成される .htpasswd ファイルの内容は以下のようになる。

myuser:$apr1$xxxxx$xxxxxxxxxxxxxxxxxxxxxxxx


このファイルをFTPまたはファイルマネージャを使用して、/virtual/<アカウント名>/.htpasswdとしてアップロードする。

.htaccessファイルの作成

保護したいディレクトリ (例: /virtual/<アカウント名>/public_html/a/) に、以下の内容で .htaccess ファイルを作成・配置する。

 # Basic認証の設定
 AuthType Basic
 AuthName "Restricted Area"
 AuthUserFile /virtual/<アカウント名>/.htpasswd
 Require valid-user


各ディレクティブの説明を以下に示す。

  • AuthType Basic
    認証方式としてBasic認証を使用することを宣言する。
  • AuthName
    ブラウザにログインダイアログが表示される時の領域名 (メッセージ) を指定する。任意の文字列でよい。
  • AuthUserFile
    .htpasswd ファイルのサーバ上の絶対パスを指定する。
    "アカウント名"の部分は自身のバリューサーバのアカウント名に置き換える。
  • Require valid-user
    .htpasswd ファイルに登録されている全ユーザにアクセスを許可する。


動作確認

Webブラウザで対象のURLにアクセスする。
ユーザ名とパスワードの入力を求めるダイアログが表示されることを確認する。

  • 正しい認証情報を入力した場合は、ページが表示される。
  • キャンセルまたは誤った入力の場合は、401 Unauthorized エラーが表示される。