Amazon LinuxでMeidaWiki 1.26.2を動かすまでのまとめ

# 0. Amazon LinuxのVM作成
EC2のインスタンス起動画面で、一番上に表示されているAmazon Linuxを選択しました。以下のAMIです。

**amzn-ami-hvm-2015.09.1.x86_64-gp2 (ami-383c1956)**

サイズは**t2.micro**で、ストレージ以外はデフォルト設定のままです。ストレージはデフォルトは8GBなのですが、**16GB**に変更して作成しました。

ゲートウェイは80、443を全公開、SSHを自分のIPだけ公開という定番パターンです。

# 1. Apacheのインストール
ここから先はsuした状態のコマンドを並べます。sudoされる方は適宜読み替えてください。

```bash:Apacheインストール
$ yum install httpd
$ chkconfig httpd on
$ chkconfig --list httpd
```

```bash:DocumentRootの確認
$ cat /etc/httpd/conf/httpd.conf | grep DocumentRoot
DocumentRoot "/var/www/html"
```

```bash:Apache起動
$ /etc/init.d/httpd start
```

ブラウザでウェルカムが出るかを確認します。確認できたらセキュリティ設定します。
http://qiita.com/bezeklik/items/1c4145652661cf5b2271
ほぼコチラでOKですが、 autoindex.conf は存在しませんでした。

```bash:Apache再起動
$ service httpd restart
```

# 2. MySQLのインストール

```bash:MySQLインストール
$ yum install mysql
$ yum install mysql-server
$ chkconfig mysqld on
$ chkconfig --list mysqld
```

```bash:言語設定
$ vi /etc/my.cnf

[mysqld]
# 最終行に以下を追加
character-set-server=utf8
```

```bash:MySQL起動
$ /etc/init.d/mysqld start
```

以下、rootのパスワードなど設定しますので、記録を忘れずに！

```bash:セキュリティ自動設定
$ mysql_secure_installation
```

設定したパスワードでログインしてみます。

```bash:起動確認
$ mysql -u root -p
```

# 3. MediaWiki用のデータベースとユーザの作成

```bash:ログイン
$ mysql -u root -p
```

```mysql:作成
mysql> create database dbnameForWiki;
mysql> grant all privileges on dbnameForWiki.* to 'usernameForWiki'@'localhost' identified by 'passwordForWiki';
mysql> quit
```

# 4. PHPのインストール

```bash:PHPとライブラリのインストール
$ yum install php php-mbstring php-pear php-xml php-mysql
```

こんなバージョンが入りました。

```bash:PHPのバージョン確認
$ php -v
PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies
```

```bash:タイムゾーン設定
$ vi /etc/php.ini
date.timezone = "Asia/Tokyo"
```

# 5. MediaWikiに必要なPHPライブラリのインストール

```bash:APC（Alternative_PHP_Cache）
$ yum install php-pecl-apc
```

```bash:intl_PECL拡張機能
$ yum install gcc-c++, php-devel, httpd-devel
$ yum install icu libicu-devel
$ pecl install intl
.
.
.
Specify where ICU libraries and headers can be found [DEFAULT] :エンター押す
.
.
.
Build process completed successfully
Installing '/usr/lib64/php/modules/intl.so'
install ok: channel://pecl.php.net/intl-3.0.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=intl.so" to php.ini
```

指示通りにphp.iniに追記する。

```bash:APC（Alternative_PHP_Cache）
$ vi /etc/php.ini

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

extension=intl.so
```

Amazon Linuxはepel最初から入っているっぽい。

```bash:GD
$ yum --enablerepo=epel install php-gd
```

```bash:ImageMagick
$ yum install ImageMagick ImageMagick-perl
```

最後にApache再起動しとく。

```bash:
$ service httpd restart
```

# 6. MediaWikiのインストール

ディレクトリは適当なワーキングディレクトリを用意してください。

```bash:ダウンロードして解凍
$ wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.2.tar.gz
$ tar -xzvf mediawiki-1.26.2.tar.gz
```

htmlの下のディレクトリ名は適当に名付けてください。Wikipediaっぽいなら**wiki**ですかね……

```bash:ファイルコピー
$ mkdir /var/www/html/mwiki
$ cp -R mediawiki-1.26.2/* /var/www/html/mwiki/
$ chown -R apache:apache /var/www/html/mwiki/
```

```bash:Apache設定追加
$ vi /etc/httpd/conf/httpd.conf

#最終行に追加
<Directory "/var/www/html/mwiki/images">
    AddType text/plain .html .htm .shtml .php
    php_admin_flag engine off
</Directory>
```

一応再起動する。

```bash:
$ service httpd restart
```

ここから先はWebのインストーラがありますので、Webブラウザでアクセスします。なので、最初の方でWebブラウザでの疎通や動作確認を怠っていると、ここで繋がらなかったり、エラーだったりしたときに、えらく面倒なことになりますので御注意ください。

**http://EC2のIPアドレス/mwiki/**

mwikiのところは自分で決めたディレクトリ名になります。Webブラウザで開くとインストーラーのUIが表示されますので、あとは対話して進めていけばOKです。以下のような情報を聞かれます。

* ホスト　⇒　**localhost**でOKです
* データベース　⇒　MySQLでcreate databaseした名前
* ユーザ　⇒　MySQLでgrantしたユーザ名
* パスワード　⇒　MySQLでgrantしたパスワード
* インストール作業と同じアカウントを使用する
* ストレージエンジン　⇒　**InnoDB**
* データベースの文字セット　⇒　**UTF-8**
* ウィキ名　⇒　ご自由にどうぞ
* プロジェクト名前空間　⇒　ウィキ名と同じでOK
* 管理アカウント：ユーザ名　⇒　ご自由にどうぞ（ただしWikiなので履歴に表示されます）
* 管理アカウント：パスワード　⇒　ご自由にどうぞ
* 管理アカウント：メール　⇒　ご自由にどうぞ（ただし受信できるもの）
* 公開ウィキ　⇒　ライセンスフッターを付けない（他でも可能）
* **画像およびファイルのアップロードを有効**
* Instant Commons機能の利用
* 高度な設定：memcachedの利用：サーバー　⇒　**127.0.0.1:11211**

これで**LocalSettings.php**が出力されますので、保存しておきます。scpでアップするか、エディタで直接コピペしてしまってもOKです。

```bash:
$ vi /var/www/html/mwiki/LocalSettings.php

#ローカルのPCからコピペ
```

```bash:画像フォルダ権限設定
$ chown -R apache:apache /var/www/html/mwiki/images
```

# 7. memcachedのインストール

```bash:インストール
$ yum install memcached
$ yum install php-pecl-memcache
$ chkconfig memcached on
$ chkconfig
```

```bash:確認
$ php -i | grep memcache
```

```bash:起動
$ memcached -d -m 64 -p 11211 -u memcached
```

# 8. 動作確認

Apache再起動。

```bash:
$ service httpd restart
```

さきほどのインストーラ画面を再度開くと、Wikiのトップが表示されるはずです。

**http://EC2のIPアドレス/mwiki/**

右上の**ログイン**から、先ほど作成したアカウントでログインしてみます。ページの更新も試してみてください。ログイン前であればIPが記録され、ログイン後であればユーザ名が記録されます。

ついでに、memcachedの動作確認もしておきましょう。

```bash:memcachedの動作確認
$ memcached-tool localhost:11211 display
```

これでItemがずらずらっと表示されればOKです。
あとはご自由にコンテンツを作成しましょう！

ちなみに、EC2のCloudWatchのモニタリング画面でCPU使用率を確認したらこんな感じでした。全て1分間平均です。

* アイドリング時（アクセスなし）　⇒　**0.2%**
* トップページを1回表示した時　⇒　**1%**
* ページを1回更新した時　⇒　**1.5%**

閲覧主体のWikiであれば、t2.microでもそこそこのアクセスはさばけそうですね。