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>