Raspberry Pi3 Word Press インストールガイド
Raspberry Pi 3にLAMP環境をセットアップする
2016/11/29 2017/8/30 Raspberry Pi
使用する環境はRASPBIAN JESSIE LITEで、LAMP環境をセットアップしたメモ。PHP7やMariaDBのインストール。
Raspberry Pi 3のIPアドレスは192.168.0.132とする。
Apacheのドキュメントルートはデフォルトのまま/var/www/htmlとする。
インストール
Apache, MySQL, PHP, phpMyAdminを一気に。インストール中に、いくつか設定画面が出るので以下のように設定する。
$ sudo apt-get install apache2 php mysql-server phpmyadmin
MySQLのrootパスワードを設定
MySQLのrootパスワードを入力する。確認の再入力画面が表示されたら、
再度同じパスワードを入力する。
パスワードの入力画面がでず、しかも、mysql-serverもインストールできず。
しかたないので、エラーメッセージの最後の方にあった、mariadb-10.0をインストールした。
sudo apt-get install mariadb-10.0
または
その後、
sudo apt-get install phpmyadmin
phpMyAdminで使用するWebサーバーを設定
apache2を選択する。
phpMyAdminの設定方法を選択する
phpMyAdminの環境設定について聞かれるので、ここではYesを選択した。
phpMyAdminのrootパスワードを入力する。確認の再入力画面が表示されたら、
再度同じパスワードを入力する。
phpmyadminという一般ユーザーが作成されるので、そのパスワードを入力する。
確認の再入力画面が表示されたら、再度同じパスワードを入力する。
Apacheの動作確認
http://192.168.0.132/に接続してApacheの初期画面が表示されるか確認する。
phpMyAdminの動作確認
http://192.168.0.132/phpmyadmin/に接続してphpMyAdminが表示されるか確認する。
PHPの動作確認
PHP動作確認用のファイルを作成する。
$ sudo nano /var/www/html/phpinfo.php
<?php phpinfo(); ?>
http://192.168.0.132/phpinfo.phpに接続してPHPのバージョン情報画面が表示されるか確認する。
Apacheの設定
テスト用のサーバーならこれでもいいけど、外部に公開するサーバーにするなら、
セキュリティ対策として以下の設定を行っておく。
レスポンスヘッダーの設定
デフォルトではサーバーの情報がレスポンスヘッダーに送られるので抑制する。
$ sudo nano /etc/apache2/conf-available/security.conf
ServerTokens Prod
設定 レスポンスヘッダーの内容 説明
ServerTokens OS Apache/2.4.10 (Raspbian) デフォルトの設定
ServerTokens Prod Apache 変更後の設定
ドキュメントフッターの設定
デフォルトでは404エラーの時などに、サーバーの情報がフッターに付加されるので抑制しておく。
$ sudo nano /etc/apache2/conf-available/security.conf
ServerSignature Off
ServerSignature On(デフォルトの設定)
ServerSignature Off(変更後の設定)
ディレクトリリスティングの設定
デフォルトではファイルの一覧が表示されるので、無効にしておく。
Options Indexes FollowSymLinksの行をコメントにする。
・(2016-12-06追記)AllowOverride Noneのままだと.htaccessが効かないので
使用するならAllowOverride Allにしておく。
$ sudo nano /etc/apache2/apache2.conf
<Directory /var/www/>
# Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
デフォルトの設定
変更後の設定
ServerNameの設定
複数のサイトを管理しない場合は設定しなくても動作はするけど、後々必要な場合が
出てくるかもしれないので設定しておく。
$ sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port t$
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName example.com
$ sudo nano /etc/apache2/apache2.conf
# 一番先頭でいいので以下の行を追記する
ServerName example.com
phpMyAdminの設定
Apache同様にphpMyAdminのセキュリティ対策として、phpMyAdminにアクセスするエイリアスを
変更しておく。例えば以下のように設定すると、phpMyAdminにアクセスする場合は
http://192.168.0.132/pmadmin/となる。ちなみに、このエイリアス設定にあるようにDebian系
ではphpMyAdminの本体は/usr/share/phpmyadminにインストールされる。
$ sudo nano /etc/phpmyadmin/apache.conf
Alias /phpmyadmin /usr/share/phpmyadmin
↓ 変更する
Alias /pmadmin /usr/share/phpmyadmin
phpMyAdminを使用するのはローカルエリア内だけに限定する場合は以下の記載を追加する。localhostと192.168.0.xからの接続に限定する例。
$ sudo nano /etc/phpmyadmin/apache.conf
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
# ここに追加する
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from 192.168.0
# ここまで
<IfModule mod_php5.c>
<IfModule mod_mime.c>
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/.htaccess
order 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>