Raspberry Pi 3にWordPressをインストールする

RASPBIAN JESSIE LITE環境にWordPressをインストールするメモ。LAMP環境の作り方はこちらの記事で。既にLAMP環境はセットアップ済みとする。
WordPressのダウンロードと展開
WordPressをダウンロードする
最新の日本語版を/var/tmpにダウンロードする。
$ cd /var/tmp
$ wget https://ja.wordpress.org/latest-ja.tar.gz
WordPressを展開する
ここではApacheのデフォルトのドキュメントルートに展開した。
$ sudo tar xvzf /var/tmp/latest-ja.tar.gz -C /var/www/html
WordPressディレクトリの所有者を設定する
展開したWordPressのディレクトリをApacheのデフォルトの実行ユーザーおよびグループであるwww-dataに設定する。
$ sudo chown -R www-data:www-data /var/www/html/wordpress
MySQLの設定
MySQLにログインする
まず、MySQLにrootでログインする。
$ mysql -u root -p
MySQLにデータベースを作成する
WordPress用のデータベースを作成する。以下、wp_dbというデータベースを作成する例。
mysql> create database wp_db;
MySQLにユーザーを作成する
WordPress専用のユーザーを作成する。以下、ユーザー名がwp_userで、パスワードがpassと言うユーザーを作成する例。
mysql> grant all on wp_db.* to wp_user@localhost identified by 'pass';
MySQLの設定を反映させてログアウトする
mysql> flush privileges;
mysql> quit;
WordPressのセキュリティ対策
テスト用のサーバーならここまででいいけど、外向きに公開するサーバーとして使うなら、そのままではいささか不安があるので対策を行っておく。WordPressのディレクトリやファイルなどを触ると、動作に支障が出ても面倒なので、出来るだけApacheで弾くような方向で。外部からWordPressのダッシュボードを使うつもりもないので、ローカル内での接続に限定しておく。もし、外部から使う場合はVPNで接続して使おうと思う。セキュリティ対策に万全はないけど、以下の対策を行っておけば何もしない状態よりは格段にセキュリティは上がると思う。もちろんそれを保証するわけではないので悪しからず。
wp-adminディレクトリに制限をかける
192.168.0.0-192.168.0.255のIPアドレスからの接続に限定する例。
$ sudo nano /var/www/html/wordpress/wp-admin/.htaccessorder deny,allow
deny from all
allow from 192.168.0.0/24
.htaccessファイルのパーミッションは604にしておく。
$ sudo chmod 604 /var/www/html/wordpress/wp-admin/.htaccess
wp-login.phpファイルに制限をかける
こちらも上と同じく192.168.0.0-192.168.0.255のIPアドレスからの接続に限定する例。もし、テーマやプラグインがAJAXを使用していて、うまく動作しなかった場合は、admin-ajax.phpだけ除外する。しかし、admin-ajax.phpが使われると表示速度に影響が大きいらしいので、セキュリティ的観点から見ればそういうプラグインは使用しないのが望ましいのかもしれない。
$ sudo nano /var/www/html/wordpress/.htaccess<Files wp-login.php>
  order deny,allow
  deny from all
  allow from 192.168.0.0/24
</Files>

# admin-ajax.phpだけ除外する場合は以下を追加する
<Files admin-ajax.php>
  order allow,deny
  allow from all
  satisfy any
</Files>
.htaccessファイルのパーミッションは604にしておく。
$ sudo chmod 604 /var/www/html/wordpress/.htaccess
XML-RPCを無効にする
WordPressはXML-RPCというプロトコルを用いて記事の投稿などを行える機能があるらしい。JSONの親戚みたいなもんか。ただ、これを狙った攻撃などもあるようなので、使う予定もないし無効にしておく。上のwp-login.phpを制限する.htaccessにこれを追記する。
$ sudo nano /var/www/html/wordpress/.htaccess<Files xmlrpc.php>
  order deny,allow
  deny from all
</Files>
    この記事で書かれている製品やソフトについて
  • Raspberry Pi 3 Model B
  • RASPBIAN JESSIE LITE(September 2016)