【MediaWiki】URLからindex.phpを省略する

MediaWikiを導入する際、そのままだとURLは「https://ドメイン/index.php/ページ名」となります。見栄え的にもSEO的にもindex.phpを省略した状態でアクセスしたいため、その設定方法を紹介します。

本記事で紹介する手順を含めた、インストールまでの全工程をまとめている記事もありますので「これからインストールする」という方はそちらもご覧ください。

修正箇所

編集するファイルはルートディレクトリに配置されている「.htaccess」と「LocalSetting.php」の2つです。

「.htaccess」の編集

以下の内容を追記します。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?title=$1 [L,QSA]

「LocalSetting.php」の編集

以下の内容を追記します。

$wgScript           = "$wgScriptPath/index.php";
$wgRedirectScript   = "$wgScriptPath/redirect.php";
$wgArticlePath      = "$wgScriptPath/$1";

編集したファイル2点をアップロードしてブラウザへアクセスし、index.phpを省略した状態でアクセスできていることが確認できれば作業は完了です。



【MediaWiki】Internal Server Error 500となり画像が表示されない場合の対処

さくらのレンタルサーバへMediaWikiを導入しようとした際に、インストールまで問題なくできたのにいざ記事を作ったら「Internal Server Error 500」となり、画像の表示ができないという事態に陥ることがあります。

本記事はその際の対処方法になります。

本記事で紹介する手順を含めた、インストールまでの全工程をまとめている記事もありますので「これからインストールする」という方はそちらもご覧ください。

修正箇所

原因としては「.htaccess」内の「FollowSymLinks」がさくらのレンタルサーバでサポートされていない為です。(参考

ですのでインストールディレクトリの「images」内にある「.htaccess」ファイルで「Options +FollowSymLinks」とある行をコメントアウトします。

<IfModule rewrite_module>
	RewriteEngine On
	RewriteOptions inherit
	# Fix for bug T64289
	## Options +FollowSymLinks  ##この行をコメントアウト
</IfModule>

上記編集後、改めてブラウザアクセスし、画像が表示されていれば修正は完了です。



【MediaWiki】レンタルサーバーにWikiをインストールする

1.はじめに

MediaWiki(ウィキ)サイトを運用してみる試みです。

本サイトではCSSなどを中心にコードやツールを作成していますが、「記事」という形で更新するだけではなくコードをそのまま掲載しておく用途の簡易的な物置が欲しくなりました。そこで引っ張り出してきたのが今回紹介する「ウィキ」です。

自分がWikiを実際に使った場面はTRPGのロングキャンペーンの際。セッションごとの簡易的なトレイルや大量に登場していくキャラクター情報、ちょっとしたTIPSやハウスルールなどをカテゴリ分けして掲載しました。あとあと情報を見直す際に有用です。

Wikiなので当然のことですが情報をまとめることに特化しており、テンプレートからの記事作成やMarkdown記法などで更新が容易であるというメリットがあります。不特定多数の人間が編集できないような運用も可能で、自身の作成したコンテンツを掲載するためのブログのような使い方もできます。

実は創作・配信者クラスタの人間にとっては結構有用なのではと思っています。導入から運用までを簡単に解説していこうと思います。

1.1.Wikiについて

Wikiには種類があり、筆者が実際に設置したことのあるものは「Mediawiki」と「Pukiwiki」の2つです。

双方動作環境はPHP。「Pukiwiki」では不要ですが「Mediawiki」はデータベース(MySQLなど)が必要になります。ソーシャルゲームの攻略サイトなどでよく見るのは「Pukiwiki」の方かなと思います。

今回はタイトルにある通り「Mediawiki(バージョン1.39.1)」を導入していきます。

2.導入

2.1.事前準備

  • ホスティングサービス:さくらのレンタルサーバ(スタンダード 月額425円~)
  • MediaWikiインストーラ(ダウンロード

Linux、Apache、PHP、MySQLと必要なものが揃っているのでさくらのレンタルサーバさんを借りてインストールします。データベースの利用ができるため、プランはスタンダード以上です。余裕があればドメインを取得しておくと導入するサイトごとにサブドメインなど使い分けもできて便利になります。

また、Wikiは不特定多数の人間が情報を掲載するためのツールなので、「何を記載するWikiなのか」「誰が更新するWikiなのか」をハッキリ定めておきましょう。

Mediawikiのインストーラはzip圧縮されているので解凍しておきましょう。
また、解凍したフォルダ内の「images」ディレクトリ内の「.htaccess」ファイルをテキストエディタで開き、「Options +FollowSymLinks」とある行頭に「#」を加えコメントアウトしてください(もしくは行ごと消す)。
※Wiki内で画像を表示させるために必要な作業(さくらのレンタルサーバでは必須)

2.2.データベース作成

さくらのレンタルサーバを契約後、スタンダードプラン以上であればMySQLの利用ができます。Mediawikiのインストールを始める前にwiki用のデータベースを作成しましょう。

  • 会員メニュー:契約中のサービス一覧 > 対象サービスの「コントロールパネルを開く」
  • コントロールパネル:Webサイト/データ > データベース > 新規追加

データベース新規作成画面で「データベース名」を入力。バージョンは最新、文字コードはUTF-8(utfmb4)が選択済みであることを確認。作成についての注意事項を確認し、「同意する」にチェックをしてデータベースを作成します。

作成されたデータベースは名前の頭に契約時に指定しているドメイン名が付与された状態で作成されます。データベースが作成されていることを確認したら以下の4点を控えておきましょう。

  • データベース名
  • データベースサーバURL
  • データベースユーザ名
  • データベースパスワード

2.3.インストールディレクトリ作成

インストール場所を決定します。契約時のドメイン直下(Webルート)に配置はせず、ディレクトリを作成してそこへダウンロードしたMediawikiを配置します。配置はレンタルサーバのコントロールパネルから行えますが、それがない場合はWinSCP、FTPなどのファイル配置が可能なツールを利用してください。

さくらのレンタルサーバのコントロールパネルで行う場合は以下の通り。

  • コントロールパネル:Webサイト/データ > ファイルマネージャー
  • ファイルマネージャー:表示アドレスへの操作 > フォルダ作成 > 作成したフォルダへ移動し、「アップロード」

ここで事前準備で解凍しておいたインストーラの中身をアップロードしてください。また、アップロード後に対象のディレクトリでアクセス制限の設定も行いましょう。

  • ファイルマネージャー:表示アドレスへの操作 > アクセス設定 > 接続元アクセス制限 > 「公開して一部のアクセスを拒否」を選択して「OK」

この設定を行うと、インストールディレクトリに「.htaccess」ファイルが生成されます。生成されたファイルを開き、下記の内容を追記してください。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?title=$1 [L,QSA]

2.4.インストール

インストーラを設置した場所へWebブラウザからアクセスし、Mediawikiをインストールします。

  • http://レンタルしているサービスのドメイン名/インストールディレクトリ
  • もしくは https://レンタルしているサービスのドメイン名/インストールディレクトリ

※可能であれば利用するドメインでSSL(https://~)を利用できるようにしておきましょう。(公式ブログ

URLへアクセスしたら「set up wiki」のリンクへアクセスし、インストールマネージャにしたがって設定を入力していきます。

①言語

言語は2つとも「ja – 日本語」を選択し「続行→」。

②MediaWikiへようこそ

著作権および規約を確認し「続行→」。

データベースに接続

データベースの種類を「MariaDB、MySQLまたは互換製品」にし、以下の通りDB情報を入力して「続行→」。

  • データベースのホスト:【データベース作成】で控えたホスト名
  • データベース名:【データベース作成】で控えたデータベース名
  • データベースのテーブルの接頭辞:任意の英数字
  • データベースのユーザー名:【データベース作成】で控えたユーザ名
  • データベースのパスワード:【データベース作成】で控えたパスワード
データベースの設定

「インストール作業と同じアカウントを使用する」にチェックが入っていることを確認し「続行→」。

名前

「ウィキ名」「利用者名(ウィキ内のアカウント)」「パスワード」「パスワードの再入力」「メールアドレス」を入力して「続行→」。

オプション

適宜必要な設定を有効化して「続行→」。尚、本記事ではオプションでは下記の拡張機能をインストールするよう設定します。

  • InputBox
  • CodeEditor
  • WikiEditor
インストール

メッセージに表示されている通り、不備が無ければ「続行→」。移管後の画面で正常にインストールが完了したら再び「続行→」。

完了!

「LocalSetting.phpをダウンロード」からLocalSetting.phpファイルをダウンロードします。取得したファイルに下記内容を追記して、Mediawikiのインストールディレクトリにアップロードします。「.htaccess」に追記した内容と合わせて、Wikiへアクセスした際のURLから「/index.php」を省略できるようになります。

$wgScript           = "$wgScriptPath/index.php";
$wgRedirectScript   = "$wgScriptPath/redirect.php";
$wgArticlePath      = "$wgScriptPath/$1";

LocalSetting.phpのアップロードが完了したら、改めてインストールディレクトリへWebアクセス。

Wikiのメインページが表示されていればインストールは完了です。画面右上の「ログイン」へアクセスし、設定したIDを使ってログインすれば運用開始となります。

3.運用

今回は仮で「人物」を登録するWikiの運用を想定してみます。
メインページを下記のように編集します。

*一覧ページ:[[:Category:キャラクター]]
*[[テンプレート:人物]]を呼び出して記事を作成します。

<inputbox>
type=create
break=no
buttonlabel=人物記事作成
default=
preload=テンプレート:人物
</inputbox>

更新後、記事内の「テンプレート:人物」がリンクになっているのでそこにアクセスし、表示された編集画面へ下記の内容を入力し更新します。

{|class="wikitable" style="float:right; margin-left: 10px;" width="350"
| colspan="2"style="text-align: center;" | [[file:noimage.png|250px]]
|-
| '''名前''' || xxxxx
|-
| '''性別''' || 男・女・他
|-
| '''年齢''' || xx歳
|-
|}

概要、台詞など。 

== プロフィール ==
概要

性格

== 設定・TIPS ==

== 外部リンク ==

== 関連項目 ==
* [[特別:リンク元/記事タイトル|関連リンク]]
* 参考文献、インスパイア元などなど

{{DEFAULTSORT:0読み仮名}}
[[category:キャラクター(下書き)]]

これでテンプレートと、それを呼び出す入力フォームが出来ました。
メインページのフォームに記事のタイトルを入力して「人物記事作成」のボタンを押せば、テンプレートを呼び出して新規記事の作成ができます。

4.さいごに

Markdownエディタの記法は独特ですが、慣れてしまえばHTMLコードを手入力するよりはるかに素早く見栄えの良い記事を作成することができます。

マメに記録を残すのが好き・得意という方、是非お試しください。



SVNで更新するWordPress開発環境を作る

個人的にwordpressをベースにしたサイトの開発をしたかったのですが、FTPでソースアップロードとかwordpress上での編集などが面倒で、かつバージョン管理もしたかった。

なので、ローカル上で編集したファイルをTortoiseSVNでバージョン管理しつつ閲覧用の環境へもコミット時に即反映される環境を作ってみた次第。

前提

Dockerコンテナ上にCentOS7を構築。
バージョンはそれぞれ以下の通り。

  • CentOS7 release 7.7.1908
  • Apache 2.4.6 (CentOS)
  • MariaDB 5.5.64
  • PHP 7.2.23
  • WordPress 5.2.3-ja

OS・DockerインストールはさくらVPSにて提供されているスタートアップスクリプトを使用したので割愛。

開発環境なのでデータベースも同じlocalhostへ設置。
負荷分散とかバックアップやらは本番環境ができてから考えます。

1.コンテナ作成

centos7のイメージを取得してコンテナ作成します。

作成時に8080番ポートへアクセスすればサイトへ接続されるように指定。
あと「privileged」オプションはコンテナ内で「systemctl」コマンドを実行できるようにするため。

①コンテナ作成
[root@DockerHOST ~]# docker pull centos:centos7
[root@DockerHOST ~]# docker run --privileged -d -p 8080:80 --name dev-wordpress centos:centos7 /sbin/init
[root@DockerHOST ~]# docker ps

②作成したコンテナへログインしてyumアップデート
[root@DockerHOST ~]# docker exec -it dev-wordpress /bin/bash
[root@dev-wordpress ~]# yum update

2.LAMP環境作成

Apache、MariaDB、PHPを導入していきます。

httpdインストール

[root@dev-wordpress ~]# yum install -y httpd httpd-devel

[root@dev-wordpress ~]# systemctl enable httpd
[root@dev-wordpress ~]# systemctl start httpd

mariadbインストール

[root@dev-wordpress ~]# yum install -y mariadb-server mariadb-client

[root@dev-wordpress ~]# systemctl enable mariadb
[root@dev-wordpress ~]# systemctl start mariadb

PHPインストール

特に制約なければ最新版をインストールしてもいいのですが、プラグインやベースにするテーマとの抱き合わせを考えたかったのでバージョン7.2でのインストールをします。

[root@dev-wordpress ~]# yum install epel-release
[root@dev-wordpress ~]# vi /etc/yum.repos.d/epel.repo
※各項目の「enabled=1」を「enabled=0」に変更。
[epel]
[epel-debuginfo]
[epel-source]

[root@dev-wordpress ~]# rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
[root@dev-wordpress ~]# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
[root@dev-wordpress ~]# yum install -y --enablerepo=epel,remi-php72 php php-mbstring php-pear php-fpm php-mcrypt php-mysql

[root@dev-wordpress ~]# php -v
PHP 7.2.23 (cli) (built: Sep 25 2019 07:38:48) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

[root@dev-wordpress ~]# systemctl start php-fpm
[root@dev-wordpress ~]# systemctl enable php-fpm

あと、URLで「index.php」を省略してアクセスできるようにする為に httpd.confを編集しておきます。
「AllowOverride」を「all」にしておかないとページにアクセスできなる (Not Found) 。

[root@dev-wordpress ~]# vi /etc/httpd/conf/httpd.conf
        :
<Directory "/var/www/html">
        :
    AllowOverride all(allへ変更)
        :
</Directory>
        :
<IfModule dir_module>
    DirectoryIndex index.html index.php(index.php追記)
</IfModule>
        :

SVN環境構築

[root@dev-wordpress ~]# yum -y install subversion mod_dav_svn
[root@dev-wordpress ~]# mkdir /var/www/svn

[root@dev-wordpress ~]# svnadmin create /var/www/svn/sample

[root@dev-wordpress ~]# svn mkdir file:///var/www/svn/sample/trunk file:///var/www/svn/sample/tags file:///var/www/svn/sample/branches -m 'Initial import.'
[root@dev-wordpress ~]# chown -R apache:apache /var/www/svn

Basic認証でアクセスするよう設定。
ここで設定するユーザ・パスワードを使ってTortoiseSVNとかRedmineによる管理を行います。

[root@dev-wordpress ~]# htpasswd -c /etc/httpd/.htpasswd user
New password:pass
Re-type new password:pass
Adding password for user user

[root@dev-wordpress ~]# vi /etc/httpd/conf.d/subversion.conf
<Location /repos>
  DAV svn
  SVNParentPath /var/www/svn
#  <LimitExcept GET PROPFIND OPTIONS REPORT>
#  SSLRequireSSL
      AuthType Basic
      AuthName "Authorization"
      AuthUserFile /etc/httpd/.htpasswd
      Require valid-user
#  </LimitExcept>
</Location>

[root@dev-wordpress ~]# systemctl restart httpd

ここまでできたらTortoiseSVNを開発用端末へ導入して「http://[ドメイン]:8080/repos/sample」をチェックアウト。
作った「trunk」「tags」「branches」があればOKです。

更新するディレクトリを配置する用の「trunk/upload」フォルダだけ作っときます。

WordPressインストール

データベース作成

rootユーザのパスワードは「password」、wordpress用のDB情報は以下。
任意の値に書き直してください。

  • データベース名:wpdb
  • ユーザ名:wpadmin
  • パスワード:password
  • ホスト:localhost
[root@dev-wordpress ~]# mysqladmin -u root password 'password'
[root@dev-wordpress ~]# mysql -u root -ppassword
MariaDB [(none)]> create database wpdb default character set utf8;
MariaDB [(none)]> create user 'wpadmin'@'localhost' identified by 'password';
MariaDB [(none)]> grant all on wpdb.* to 'wpadmin'@'localhost';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit

WordPress取得

[root@dev-wordpress ~]# cd /var/www/html

[root@dev-wordpress html]# wget https://ja.wordpress.org/latest-ja.tar.gz
[root@dev-wordpress html]# tar -xzvf latest-ja.tar.gz 

[root@dev-wordpress html]# chown -R apache:apache /var/www

「http://XXXXXXXXX:8080/wordpress」へアクセス。
先ほど設定したデータベースの情報を入力してwordpressをインストール。

post-commitスクリプト作成

SVNのコミットと同時にリポジトリからデータをチェックアウトして閲覧環境へ反映させるスクリプトを作成します。

[root@dev-wordpress ~]# vi /var/www/svn/sample/hooks/post-commit
#!/bin/sh

DIR_HTDOCS='/var/www/html/wordpress/wp-content'
DIR_SVN='file:///var/www/svn/sample/trunk/upload/wp-content'

if [ -e $DIR_HTDOCS ];
then
        LANG=en_US.UTF-8 svn update $DIR_HTDOCS
else
        mkdir $DIR_HTDOCS
        LANG=en_US.UTF-8 svn checkout $DIR_SVN $DIR_HTDOCS
fi
[root@dev-wordpress ~]# chmod +x /var/www/svn/sample/hooks/post-commit
[root@dev-wordpress ~]# chown apache:apache /var/www/svn/sample/hooks/post-commit

SVNで管理する「wp-content」を「trunk/upload」へ配置して、あとはコミット時にエラーを吐かないか確認。
試しにテーマの「page.php」などに追記してみて、コミット後に該当のサイトが更新されてればこれでOKです。

最後に

注意として、wordpress側のダッシュボード上で編集したソースやインストールしたプラグイン・テンプレートはコミット時に無くなってしまいます。
(記事なんかはDBに登録されてるから問題なし)

基本的にこれらの作業はソースを弄ってコミットするという流れという点だけ覚悟しときましょう。
……まぁいい勉強になるのでヨシとします。

はい、ではサイト開発頑張ります。