Raspberry Pi はDebianをベースにしたLinux OSが動作するため、WEBサーバ―としても動作します。

誰でも手軽に扱えるため情報量の多いPHPを Raspberry Pi で動作させられるようにすれば、ぐっと応用の幅が広がってきます。

このページでは、まっさらの状態の Raspberry Pi 2 Model B にWEBサーバ― Apache 2.2 と PHP 5.4 をインストールするまでを纏めてみました。

※この記事は執筆・公開から3年以上経過しています。記事の情報が古くなっている場合がありますのでご注意ください。

公開日時:2016/06/13 15:03
最終更新:2019/12/10 05:00

PHPのための環境構築

イントロダクション

2016/08/10 この記事は2015年に書かれたため、Raspbian Wheezy を対象としています。現在の Raspbian の最新版は、より新しい Jessie になっていますので、それに合わせた説明は Raspberry Pi 簡単セットアップマニュアルに纏めてあります。Jessie をお使いの方はそちらを御覧ください。

Raspberry Pi ではLinux系OSが用意されており、https://www.raspberrypi.org/downloads/にアクセスして好きなOSをインストールすることが出来ます。

Raspberry Pi に提供されているOSでは様々なプログラミング言語が扱えるようになっていて、Scratchというグラフィカルな子供向けの言語から Python、Perl、Ruby、C言語等本格的なプログラミング言語もサポートしています。

推奨は Raspbian で、初心者向けのインストーラー NOOBS でも推奨OSとなっています。Raspbian はメジャーなLinuxディストリビューション Debian を Raspberryi Pi に最適化させたものだそうで、実態は普通の Linux ですからパソコンなどで動作する Linux とほぼ同等の事が出来ます。

当然、Apache も動作しますし、PHP も同様です。インストール方法も普通の Linux となんら変わりません。

ここでは、micro SDをフォーマットして NOOBS で Raspbian をインストールし、アップデートを行った後で Apache と PHP をインストールするまでを纏めてみます。

なお、Raspberry Pi は micro SD カードに全てが詰まっています。失敗してシステムがおかしくなっても SDカードをフォーマットしなおして再インストールすればよいだけですから、最初はあんまり深く考えずに軽い気持ちでどんどん試してみるのが良いかと思います。

micro SDのフォーマット

新品の micro SD の場合はこの作業は必要ありませんが、既に使用済みのものを使う時はフォーマッタを使ってフォーマットしなおさないと正常にOSインストールが行えない場合が多くあります。

micro SD は class 10 の8GB以上の物が必要になります。class 4等でも動作はするのですがかなり遅く、実際に Raspberry Pi を操作するのにストレスを感じることになると思います。また、基本的にはこのSDカードがそのまま Raspberry Pi のストレージになるので、容量は大きければ大きいほど良いでしょう。ですがclass 10の容量の大きなSDカードは結構高いので、お財布と相談ですね…。

フォーマッタは SD Association でダウンロードできるSD/SDHC/SDXC用SDフォーマッター4.0が良いようです。

フォーマッタ画面

こんな感じで徹底的にフォーマットしてしまいます。(30分くらいかかります)

NOOBSのダウンロードとインストール

micro SDをフォーマットしている間にOSのインストーラーもダウンロードしてしまいます。推奨インストーラーのNOOBSを選びました。最新Versionは1.4.1ですね。(2015/06/04)

NOOBS

作業PCがWindowsなのでDownload ZIPでZIPファイルを入手しました。www.raspberrypi.orgの下り回線は結構細いようなので、30分ほど時間がかかることを予想しておいた方が良いでしょう。

Raspberry Pi へのインストール

NOOBSのダウンロードが終わったらファイルを解凍し、中身をすべて、フォーマットしたmicro SDにコピーします。

SDカード

このmicro SDカードを Raspberry Pi に刺し、USBアダプターを接続するとOS選択画面が表示されます。RECOMMENDEDの Raspbian を選択し、Install でインストールが始まります。

OS選択画面

インストールが終わるとインストール成功のダイアログが表示されますのでOKをクリックしましょう。Raspberry Pi が再起動され、Raspberry Pi Software Configuration Tool が立ち上がります。

Raspberry Pi Software Configuration Tool

2. Change User Password

ユーザーパスワードを変更する。

4. Internationalisation Options

言語やキーボード配列等の設定をする。

I1 Change Locale

en_GB.UTF-8 UTF-8

ja_JP.UTF-8 UTF-8

を追加(スペースバーを押してチェックすると[*]が表示されます)しTABキーでOKに移動してENTERを推すと、デフォルトロケールを選択する画面に移動しますので、ja_JP.UTF-8を選択しENTERを押して確定します。

※ja_JP.UTF-8をにすると Raspberry Pi でのコンソールは文字化けしてしまいますが、基本的にSSHクライアントで接続して操作を行いますのでこのようにしています。

I2 Change Timezone

Asiaを選択しENTER。Tokyoを選択しENTER。

これで、東京時間に設定されます。

I3 Change Keyboard Layout

お使いのキーボードによりますが、弊社ではこのようなキーボードレイアウトにしました。

Generic 105-key (Intel) PC を選択。

Otherを選択。

Japaneaseを選択。

Japanease - Japanese (OADG 109A) を選択。

The default for the keyboard layoutを選択。

No compose keyを選択。

Ctrl + Alt + Backspace to terminate the X server? は NOを選択。

5. Enable Camera

カメラの有効化。Enableを選択。

8. Advanced Options

A4. SSH

SSHサーバ―。Enable。

A6. SPI

SPI通信の有効化。Yes、Yes、Yes。

A7. I2C

I2C通信の有効化。Yes、Yes。

7. Finish

TABキーでFinishに移動しENTERを押すとRebootするか聞かれるのでYes。Raspberry Pi が再起動されます。

再起動後、rootパスワード設定

raspberry pi のデフォルトユーザーは pi となっていて、そのパスワードは Raspberry Pi Software Configuration Tool の2で設定したパスワードになります。

raspberrypi login : pi
Password : 先程入力したパスワード

pi ユーザーは sudoers に登録されていて、ALL=(ALL) NOPASSWD: ALL、つまり、全ての操作をパスワード入力無しで行うことができます。

ですからこのまま使うのであれば root の存在感は薄いのですが、一応、root のパスワードは設定しておいた方が良いかもしれません。(パスワードを忘れないようにしましょう)

sudo passwd root

Vimのインストール

raspbian でインストールされているエディタは vim-tiny だそうで、カーソルキーのサポートが無いなどいろいろと不便です。tinyではないVimをインストールしてしまいましょう。

sudo apt-get install vim

ネットワークの設定

初期状態で既にネットワークカードがインストールされており、DHCPサーバのあるルータに繋がっていればLANケーブルを刺すだけでネットワークに参加できます。

ですが、一々 Raspberry Pi のコンソールで操作を行うのは面倒なため、ぜひ SSH 接続を行いたいところです。DHCP だと、ルータが再起動するたびにIPアドレスが再発行されてしまうため、知らないうちにIPアドレスが変わっていて繋がらない、ということが無いよう、IPアドレスを固定してしまいましょう。

sudo vi /etc/network/interfaces
-------------------------------
auto lo

iface lo inet loopback
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.88
netmask 255.255.255.0
gateway 192.168.1.1
-------------------------------

addressがIPアドレス、gatewayがルータのアドレスになります。

sudo ifdown eth0
sudo ifup eth0

設定したネットワークインターフェイス eth0 を落とし、先ほどの設定で改めて起動します。これでSSH接続できるようになっていますので、SSH クライアントで接続してみましょう。

参考)Tera Term

参考)WindowsからSSHサーバーへリモート接続(TeraTermパスワード方式ログイン編)

Tera Term画面1

Tera Term画面3

先程設定したIPアドレスで接続すると、セキュリティのための接続サーバ―確認があります。これを続行すると接続ユーザ名とパスワードの入力になるので、pi ユーザーとパスワードを入力して接続してください。

Tera Term画面5

Raspberry Pi にSSHで接続しました。以降はこの画面で操作を行っていく事にしましょう。

Raspberry Pi 自体のアップデート

まず、なにはともあれ Raspberry Pi を最新の状態にします。もしDebian系最新の jessie にすれば、この後インストールする Apache と PHP について、それぞれ 2.4 と 5.6 という、より新しいバージョンがapt-getでインストールできるようになります。

jessieにする方法

vi /etc/apt/sources.list
-------------------------------------------------------
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

これでアップデートをかければ良いようですが、弊社で jessie にしてみたところ、音声認識ライブラリ Juliusインストールのための/etc/modprobe.d/alsa-base.confが見つからず、対処方法が不明であったため wheezy に戻しました。

Julius を使わないという方は試してみるのも良いかもしれません。

2015/06/13 追記 sources.listには手を加えず、Apache 2.4、PHP 5.6をインストールする方法をこの記事の下に追記しました。

さて、ではまず、ファームウェアのアップデートです。

sudo rpi-update
sudo reboot

次は Raspbian のパッケージ管理システム apt-get のアップデートとraspberrypi-ui-modsのアップデート。

sudo su -
apt-get update && apt-get upgrade && apt-get autoremove
apt-get dist-upgrade
apt-get install raspberrypi-ui-mods
reboot

Apacheのインストール

では、WEBサーバ―の定番 Apache のインストールに入ります。現在の Raspbian はwheezyがベースになっていて、これでapt-getできるのは Apache 2.2.22になります。

sudo apt-get install apache2
/usr/sbin/apache2 -v

Apacheが実行されるユーザ名を確認しておきましょう。

#内容確認
cat /etc/apache2/envvars

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

このように、Debian系では www-data がApacheのグループ・ユーザー名になってるようです。

今後の事を考え、pi ユーザーをapache2のグループに追加しておきましょう。

#現在の pi ユーザーの所属グループの確認
id pi

#www-dataグループに追加
sudo gpasswd -a pi www-data

#追加できたか確認
id pi
補足)ユーザーをグループから削除
sudo gpasswd -d pi www-data

サーバー情報の非表示

インターネットに接続してサーバ―を公開する場合は、Raspberry Pi 本体も併せて十分にセキュリティを考慮する必要がありますが、ここではローカルで動作させる場合を想定して最低限のサーバー設定をしておきます。

sudo vi /etc/apache2/conf.d/security
-------------------------------------------------
ServerSignature Off
sudo mkdir /var/www/html
sudo chown -R www-data. /var/www/html
sudo mv /var/www/index.html /var/www/html/

sudo vi /etc/apache2/sites-enabled/000-default.conf
-------------------------------------------------
DocumentRoot /var/www/html/

        <Directory /var/www/html>
#               Options Indexes FollowSymLinks MultiViews
                Options Includes ExecCGI FollowSymLinks
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

初期状態では /var/www がドキュメントルートになっていますが、これですとVirtual Domainを使って複数のサイトを公開する場合、/var/www2 等の様に別ディレクトリを作る必要がでてきてしまいます。centos のようにwwwディレクトリ内にWEBのディレクトリを纏めるほうが個人的には感覚的に分かり易いと思うのでhtmlディレクトリを作ってそこをDocument Rootにしましたが、勿論、こうしなければならないわけではありません。

きちんと設定できたか確認するため、Apache を再起動してみます。

sudo service apache2 restart

この状態でブラウザから Raspberry Pi のIPアドレスをURLバーに入力し、以下のような画面が表示されればApacheのインストールと設定は完了しています。

apache

apacheでsudoできるようにする

apacheとPHPでファイル操作をする場合など、apacheからsudoを実行したい場合があります。sudoers に www-data を追加することでsudoできるようになります。サーバーをインターネット上に公開する場合は、設定やプログラミングについて十分セキュリティを考慮してください。 (そんな事をする人はまずいないと思いますが、ブラウザからのリクエスト情報をそのままexec()関数に渡したりすればかなり危険ですね)

visudo で、pi ユーザーの下に、www-data ユーザーの定義を追加しておきます。

sudo visudo
----------------------------------------------
www-data  ALL=(ALL) NOPASSWD: ALL

visudoはsudoersを安全に操作するためのコマンドで、nanoエディタが立ち上がります。一般的にはVimよりも扱いやすいエディタということになっているようですが、Vimに慣れていると逆に戸惑うかもしれません。

PHPのインストール

あとはPHPのインストールです。現在 apt-get でインストールされるPHPのバージョンは5.4.39のようです。必要に応じてライブラリを追加してください。

sudo apt-get install php5 php5-cli php5-gd php5-mysqlnd php5-pgsql php5-mcrypt php5-dev

php -v

現在のPHPではdate.timezoneの設定が必須になっていますので、最低限これだけは設定しておきます。

sudo vi /etc/php5/apache2/php.ini
---------------------------------------------
date.timezone = Asia/Tokyo

あとはApacheを再起動するだけです。これでPHPが利用できるようになります。

sudo service apache2 restart

Document Root に設定した /var/www/html に移動し、PHP ファイルを作成して実行してみます。

cd /var/www/html

sudo vi test.php
----------------------------------------------
<?php
    echo "I'm Raspberry Pi.\n";

ブラウザからアクセスしてみましょう。

PHPの実行

コマンドラインから実行も試してみます。コマンドラインでのPHPの実行は -q オプションです。

sudo php -q test.php

PHPの実行2

最後にPHPコマンドを実行してみます。-r オプションです。

sudo php -r "echo 'hello, world.';"

これで、Raspberry Pi でもPHPを実行する環境が整いました。

Apache 2.4、PHP 5.6のインストール方法

新規ファイルを作成し、jessie のリポジトリを一時的に追加します。

sudo vi /etc/apt/sources.list.d/jessie.list
------------------------------------------------
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb http://archive.raspbian.org/raspbian jessie main contrib non-free rpi

apt-get をアップデートします。

sudo apt-get update

リリースにjessieを指定して、ApacheとPHPをインストールします。

sudo apt-get -t jessie install apache2

pi@raspberrypi ~ $ apache2 -v
Server version: Apache/2.4.10 (Raspbian)
Server built:   Mar 23 2015 12:09:25
sudo apt-get -t jessie install php5 php5-cli php5-gd php5-mysqlnd php5-pgsql php5-mcrypt php5-dev

pi@raspberrypi ~ $ php -v
PHP 5.6.9-0+deb8u1 (cli) (built: Jun  8 2015 00:10:10)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies

jessieのリポジトリを削除してapt-getをアップデートします。

sudo rm -rf /etc/apt/sources.list.d/jessie.list
sudo apt-get update

以上で、より新しい環境が構築できます。

参考)[Raspbian] Debian Wheezy PHP

記事リンク