Raspberry Pi 3にLAMP環境をセットアップする

使用する環境はRASPBIAN JESSIE LITEで、LAMP環境をセットアップしたメモ。PHP7やMariaDBはインストールにひと手間かける必要があるみたいなので、PHP5とMySQLにした。説明の便宜上、設定内容は以下を仮定して記載しているので、環境に合わせて読み替えてくださいまし。
  • Raspberry Pi 3のIPアドレスは192.168.0.200とする。
  • Apacheのドキュメントルートはデフォルトのまま/var/www/htmlとする。
インストール
Apache, MySQL, PHP, phpMyAdminを一気に。インストール中に、いくつか設定画面が出るので以下のように設定する。
$ sudo apt-get install apache2 php5 mysql-server phpmyadmin
RASPBIAN STRETCH LITE(August 2017)の場合
インストールされたバージョンは以下の通り。
  • Apache 2.4.25
  • MYSQL 15.1 Distrib 10.1.23-MariaDB
  • PHP 7.0.19-1
$ sudo apt-get install apache2 php mysql-server phpmyadmin
MySQLのrootパスワードを設定
rpi3_lamp_setup1
MySQLのrootパスワードを入力する。確認の再入力画面が表示されたら、再度同じパスワードを入力する。
phpMyAdminで使用するWebサーバーを設定
rpi3_lamp_setup3
apache2を選択する。
phpMyAdminの設定方法を選択する
phpMyAdminの環境設定について聞かれるので、ここではYesを選択した。 rpi3_lamp_setup4
熟練者は手動で設定してもいいけど、dbconfig-commonのコマンドで設定することをすすめるよ。dbconfig-commonコマンドで設定を行うかい?(超意訳)
rpi3_lamp_setup5
phpMyAdminのrootパスワードを入力する。確認の再入力画面が表示されたら、再度同じパスワードを入力する。
rpi3_lamp_setup7
phpmyadminという一般ユーザーが作成されるので、そのパスワードを入力する。確認の再入力画面が表示されたら、再度同じパスワードを入力する。
Apacheの動作確認
http://192.168.0.200/に接続してApacheの初期画面が表示されるか確認する。 rpi3_lamp_setup9
phpMyAdminの動作確認
http://192.168.0.200/phpmyadmin/に接続してphpMyAdminが表示されるか確認する。 rpi3_lamp_setup10
PHPの動作確認
PHP動作確認用のファイルを作成する。
$ sudo nano /var/www/html/phpinfo.php<?php phpinfo(); ?>
http://192.168.0.200/phpinfo.phpに接続してPHPのバージョン情報画面が表示されるか確認する。
Apacheの設定
テスト用のサーバーならこれでもいいけど、外部に公開するサーバーにするなら、セキュリティ対策として以下の設定を行っておく。
レスポンスヘッダーの設定
デフォルトではサーバーの情報がレスポンスヘッダーに送られるので抑制する。
$ sudo nano /etc/apache2/conf-available/security.confServerTokens Prod
設定 レスポンスヘッダーの内容 説明
ServerTokens OS Apache/2.4.10 (Raspbian) デフォルトの設定
ServerTokens Prod Apache 変更後の設定
ドキュメントフッターの設定
デフォルトでは404エラーの時などに、サーバーの情報がフッターに付加されるので抑制しておく。
$ sudo nano /etc/apache2/conf-available/security.confServerSignature Off
rpi3_lamp_setup11
ServerSignature On(デフォルトの設定)
rpi3_lamp_setup12
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>
rpi3_lamp_setup13
デフォルトの設定
rpi3_lamp_setup14
変更後の設定
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.200/pmadmin/となる。ちなみに、このエイリアス設定にあるようにDebian系ではphpMyAdminの本体は/usr/share/phpmyadminにインストールされる。
$ sudo nano /etc/phpmyadmin/apache.confAlias /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>
    この記事で書かれている製品やソフトについて
  • Raspberry Pi 3 Model B
  • RASPBIAN JESSIE LITE(September 2016)
  • Apache 2.4.10 (Raspbian)