「インストール - MediaWiki(Raspberry Pi)」の版間の差分

 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
[[インストール - PHP|PHP]]と[[インストール - Apache2(Raspberry Pi)|Apache2]]と[[インストール - MariaDB(Raspberry Pi)|MariaDB]]がインストールされていることを確認する。<br>
MediaWikiは、PHPで記述されたオープンソースのウィキソフトウェアであり、<br>
協調的なコンテンツ作成や知識共有のプラットフォームとして広く使用されている。<br>
<br>
GPLライセンスの下で配布されている。<br>
<br>
MediaWikiの特徴を以下に示す。<br>
* 用途
*: 主にWebサイトやオンライン百科事典の作成・運営に使用される。
* 有名な例
*: Wikipediaが最も有名なMediaWikiの使用例である。
* 機能
** ページの作成・編集
** バージョン管理
** ユーザ管理
** 検索機能
** カテゴリ分類
* 拡張性
*: プラグインやスキンを通じてカスタマイズが可能である。
* 言語サポート
*: 多言語対応しており、様々な言語でコンテンツを作成できる。
* データベース
*: MySQL、PostgreSQL、SQLite等のデータベースと連携することができる。
<br><br>
<br><br>


== 必要なシステムおよびライブラリのインストール ==
== 必要なシステムおよびライブラリのインストール ==
MediaWikiの動作に必要となるシステムおよびライブラリをインストールする。<br>
MediaWikiの動作に必要となるパッケージ (Apache2、データベース、PHP) をインストールする。<br>
  sudo apt-get install apache2 mariadb-server php php-mysql libapache2-mod-php php-xml php-mbstring
  sudo apt-get install apache2 mariadb-server php php-mysql libapache2-mod-php php-xml php-mbstring
<br>
<br>
MediaWikiの拡張機能を全て有効化する場合は、以下の依存関係もインストールする。<br>
MediaWikiの拡張機能を全て有効化する場合は、以下に示すライブラリをインストールする。<br>
  sudo apt-get install php-apcu php-intl imagemagick inkscape php-gd php-cli php-curl git
  sudo apt-get install php-apcu php-intlphp-gd php-cli php-curl imagemagick inkscape
<br>
<br>
依存関係のライブラリを有効化するために、Apache2を再起動する。<br>
Apache2を再起動する。<br>
  sudo systemctl restart apache2
  sudo systemctl restart apache2
<br>
上記のパッケージのインストールについて詳細を知りたい場合は、[[インストール - PHP|PHP]]、[[インストール - Apache2(Raspberry Pi)|Apache2]]、[[インストール - MariaDB(Raspberry Pi)|MariaDB]]を参照すること。<br>
<br><br>
<br><br>


== MediaWikiのダウンロード ==
== MediaWikiのダウンロード ==
[https://releases.wikimedia.org/mediawiki/ MediaWikiの公式Webサイト]にアクセスして、MediaWikiをダウンロードする。<br>
[https://releases.wikimedia.org/mediawiki/ MediaWikiの公式Webサイト]にアクセスして、MediaWikiをダウンロードする。<br>
wget https://releases.wikimedia.org/mediawiki/x.xx/mediawiki-x.xx.x.tar.gz
<br>
ダウンロードしたファイルを解凍する。<br>
ダウンロードしたファイルを解凍する。<br>
  tar xf mediawiki-<バージョン>.tar.gz
  tar xf mediawiki-<バージョン>.tar.gz
  mv mediawiki-<バージョン> mediawiki
  mv mediawiki-<バージョン> mediawiki
<br>
<br>
Apacheのドキュメントルート(デフォルトでは、/var/www/htmlディレクトリ)に解凍したMediaWikiディレクトリを移動する。<br>
Apacheのドキュメントルート (デフォルト: /var/www/htmlディレクトリ) に解凍したMediaWikiディレクトリを移動する。<br>
sudo mv mediawiki <ドキュメントルート>
例:
  sudo mv mediawiki /var/www/html
  sudo mv mediawiki /var/www/html
<br>
MediaWikiディレクトリの権限と所有者、所有グループを変更する。<br>
MediaWikiディレクトリの権限と所有者、所有グループを変更する。<br>
  cd /var/www/html
  cd /var/www/html
   
   
  sudo chmod 755 mediawiki
  sudo chmod 755 mediawiki
  sudo chown <Raspbianのユーザ名>:<Raspbianのグループ名> mediawiki
  sudo chown <Raspberry Piのユーザ名>:<Raspberry Piのグループ名> mediawiki
<br><br>
<br><br>


126行目: 151行目:
# [インストール]画面では、[続行]ボタンを押下する。
# [インストール]画面では、[続行]ボタンを押下する。
# [インストール完了]画面では、LocalSettings.phpをダウンロードして、/var/www/html/mediawikiディレクトリ直下に配置する。
# [インストール完了]画面では、LocalSettings.phpをダウンロードして、/var/www/html/mediawikiディレクトリ直下に配置する。
<br><br>
== MediaWikiの設定 ==
==== アップロード設定 ====
ファイルのアップロードはMediaWikiのオプション機能であり、デフォルトでは無効になっている。<br>
有効にする場合、Webサーバのユーザによって書き込み可能なディレクトリをWebルートに提供する必要がある。<br>
<br>
これはセキュリティのためにいくつかの意味を持つ。<br>
* このディレクトリは、書き込み可能でなければならない。<br>また、Webサーバの限定されたユーザアカウントが所有しなければならないかもしれない。<br>しかし、マルチユーザシステムでは、他のローカルユーザがアップロードディレクトリに悪意のあるファイルを紛れ込ませることが可能かもしれない。<br>可能な限り、Webサーバのアカウントのみが書き込み可能なディレクトリにする必要がある。
* PHPの設定は、個々のアップロードに対してファイルサイズの制限を設定するが、MediaWikiは総アップロードに対していかなる制限も設定していない。<br>悪意のある訪問者は多くのファイルをアップロードすることでディスクパーティションを一杯にすることができてしまう。
* 生成されたサムネイルと上書き確認のためにアップロードされたファイルはMediaWikiのWebインターフェイスに表示されることなくimages/thumbディレクトリとimages/tmpディレクトリに保持される。<br>そのため、それらのサイズにも注意する必要がある。
<br>
デフォルトの設定では、安全のためにアップロードできるファイルの種類を制限しようとしている。<br>
* デフォルトでは、ファイル拡張子.png、.gif、.jpg、.jpeg、.webpはホワイトリスト($wgFileExtensions)である。
* ユーザがホワイトリスト($wgStrictFileExtensions)を上書きすることを許可する場合でも、様々な実行可能な拡張子とスクリプト拡張子は明示的にブラックリスト($wgFileBlacklist)に登録される。
* いくつかの既知の画像ファイル拡張子は、PHPのgetimagesize()関数を使用してそのタイプを検証する。
* アップロードされたファイルは、Webブラウザのファイルタイプ検出バグに引っかかり、HTMLとして表示されないかチェックされる。
<br>
予防措置として、アップロードディレクトリ(デフォルトではimagesディレクトリ)にあるPHPスクリプト(およびその他のスクリプトタイプ)のサーバサイドでの実行を明示的に無効にする必要がある。<br>
また、<code>X-Content-Type-Options: nosniff</code>ヘッダを設定することにより、ファイルをスニッフしないようにブラウザに指示する必要がある。<br>
<br>
例えば、MediaWikiのインスタンスが/var/www/html/MediaWikiにある場合、これを行うhttpd.confファイルは、以下に示すような設定になる。<br>
<syntaxhighlight lang="apache">
# httpd.confファイル
<Directory "/var/www/html/MediaWiki/images">
    # Ignore .htaccess files
    AllowOverride None
    # Serve HTML as plaintext, don't execute SHTML
    AddType text/plain .html .htm .shtml .phtml
    # Don't run arbitrary PHP code.
    php_admin_flag engine off
    # Tell browsers to not sniff files
    Header set X-Content-Type-Options nosniff
    # If you've other scripting languages, disable them too.
</Directory>
</syntaxhighlight>
<br>
Apache2の設定ファイル(httpd.confファイル)にアクセスできない場合、かつ、.htaccessファイルを作成して特定のディレクトリの設定を上書きできる場合、<br>
アップロードディレクトリ直下に以下に示すような.htaccessファイルを作成することができる。<br>
<syntaxhighlight lang="apache">
# アップロードディレクトリ直下の.htaccessファイル
# Serve HTML as plaintext, don't execute SHTML
AddType text/plain .html .htm .shtml .phtml .php .php3 .php4 .php5 .php7 .php8
# Old way of registering php with AddHandler
RemoveHandler .php
# Recent way of registering php with SetHandler
<FilesMatch "\.ph(p[3457]?s?|tml)$">
  SetHandler None
</FilesMatch>
# If you've other scripting languages, disable them too.
</syntaxhighlight>
<br>
PHP設定ファイルのopen_basedirオプションの使用は、アップロードの処理を複雑にするかもしれない。<br>
<br>
上記の解決方法のいずれかを使用している場合、以下に示すような簡単なテストで正常に動作しているかどうかを確認できる。<br>
# アップロードディレクトリにtest.phpファイルを作成する。
# test.phpファイルに、<?php phpinfo();を記述する。
# WebブラウザのURL入力欄から、ファイルのパスを入力する。
# ファイルのテキストが表示されれば問題無いが、そうでない場合はどこかが間違っている。
<br><br>
<br><br>