バックエンドのプログラミング学習で、PHPやMySQLの実行環境の準備に困っていませんか? この記事では、バックエンドのプログラミング言語の実行環境として、Raspberry PIを使って実際にwebサーバを構築し、PHPでHelloWorld!するまでの手順を紹介します。 プログラミングの学習では、書籍やネットで情報を参照するだけではなく、自分で簡単なプログラムを作成して実行することが効果的です。必要な機材とネットワーク環境があれば手軽に30分でサーバー構築することができ、バックエンドのプログラミング学習環境が構築出来ますよ。
1 必要な機材
- サーバー機
Raspberry Pi ※別途ディスプレイ, microUSBケーブル, キーボード, マウスが必要
下の記事でRaspberry Piの種類と購入先を紹介しています。
- SDカード Linux OS Raspbianイメージ用
- クライアント機 ※Windows PC
- ルーター ※Ethernetケーブルx2
2 Raspberry Piの立ち上げ
早速、Raspberry Piのセットアップを行っていきましょう。大まかには次のような作業の流れとなります。
- SDカードへLinux OSイメージ Raspbianの書き込み
- 機材の配線
- Raspbianのインストールと起動
- sshのインストール
- クライアント機からRaspberry piへログイン
- ファイルサーバ Sambaのインストールと設定
- Webサーバ Apache2のインストール
- PHPのインストール
2.1 SDカードへのRaspbianイメージの書き込み
Raspberry Piは、通常SDカードにLinux OSイメージを書き込み、ブートローダがSDカードからOSのプログラムをメモリに読み込むことで、OSを起動します。Raspberry Piは、名刺サイズほどの基板で、単体ではOSのプログラムを保存するだけの記憶装置を持っていません。その代わり、Linux OSイメージが入ったSDカードを刺すことが可能となっており、Raspberry PiのBIOSはSDカードから起動を行うようになっています。
Raspberry Pi上で動作するLinux OSにはたくさんの種類があるのですが、最も一般的に使用されるRaspbianを使いましょう。以下のサイトからRaspbian用のNOOBSというインストーラをダウンロード出来ます。NOOBSとはNet Out Of Box Softwareの略で、ブートイメージを準備することなく、簡単にOSをRaspberry Piにインストールすることが出来るインストーラです。ブートイメージをSDカードにフラッシュしても良いのですが、フラッシュ用のツールが必要だったりするので、NOOBSインストーラを使います。
Raspbian NOOBSインストーラのダウンロード (2020年3月28日)
サイトから次の手順でダウンロードすることが出来ます。
A.ダウンロードページからNOOBSを選択
B.NOOBS Lite をダウンロード
C.ZIPを解凍。解凍されたファイル全てをコピーし、SDカードに貼り付ける。
2.2 機材の配線
下図の通り配線します。電源はMicroUSBから取ります。Raspberry Piの初期設定時に必要になるマウスとキーボードはUSBポートに、HDMIでディスプレイを接続します。また、Raspbian NOOBSをコピーしたSDカードを取り付けます。ルーターは、Raspberry PiとクライアントPCにIPの割付、LANを形成します。これにより、 Raspberry Pi(Webサーバー)はクライアントPCからのHTTPリクエストを受信し、クライアントPCはRaspberry Piからhtmlファイルを受信することが可能となります。また、Raspberry Piにサーバーの機能を構築する際に、Webサーバー等のインストールのため公衆ネットワークへの接続が必要になります。そのためルーターのWANポートは、公衆ネットワークに接続しておきます。
2.3 Raspbianの初期セットアップ
機材の配線が出来たら、MicoroUSBケーブルを電源に接続します。起動すると、インストールするパッケージを選択し、インストールを開始します。この記事では、クライアントPCからRaspberry Piへsshでアクセスし、CUIでコントロールを行います。そのため、Raspbian Liteパッケージを選択し、Installを開始します。環境によりますが、10分程度で完了すると思います。インストールが完了すると、コマンドが実行出来るようになります。Raspberry Piに接続されているキーボードとマウスで操作をしても良いのですが、sshを有効化しクライアントPCから操作を行うようにしましょう。
2.4 sshのインストール
sshとはSecure Shellの略で、安全にリモートコンピュータと通信するためのプロトコルです。sshでRaspberry Piにログインすることで、ネットワーク経由でクライアントPC側からRaspberry Piにコマンドを実行させることが出来ます。Raspbianが起動後、コマンドを実行出来る状態になっていますので、次の手順でsshを有効化します。また、コマンドでIPアドレスを確認しておきます。
A. 次のコマンドを実行
sudo raspi-config
B. "5 Intervacing Options"を選択
C. "P2 SSH"を選択
D. IPアドレスを確認します。コマンド実行画面へ戻り、次のコマンドを実行します。
ifconfig
次のような結果が得られると思います。eth0のinetの部分がRaspberry PiのIPアドレスとなります。
2.5 クライアント機からRaspberry Piへログイン
sshが有効になったので、sshを使いクライアント機からログインしましょう。ここからは、Raspberry Piに繋がっているキーボードは使いません。Webサーバーのインストールやプログラミングもクライアント機からsshでログインして行います。"Tera Term"を下のリンク等からダウンロードし、クライアント機にインストールします。
Tera Termのダウンロード
Tera Termを起動し、次の手順でRaspberry Piにsshでログインします。
A. ホストにRaspberry PiのIPアドレスを入力します。他はデフォルトのままでOKです。
B. SSH認証画面が表示されます。次の通り入力してください。
ユーザ名:pi
パスフレーズ:raspberry
※デフォルトで存在するアカウントになります
C. 次の用に表示されていればSSHでログイン出来ています。
2.6 ファイルサーバ Sambaのインストール
Raspbian(Linux)に標準で付いているエディタはあるのですが、慣れたエディタでプログラミングを行うほうが効率的です。特にhtmlやPHPの学習ではAtom等にある自動補完機能があるエディタで書きたいのではないでしょうか。クライアント機PCで、作成したhtmlやPHPファイルを簡単にRaspberry Piへコピー出来るように、ファイルサーバーを立ち上げましょう。ファイルサーバーとして定番のSambaを次の手順でインストールします。尚、繰り返しになりますが、以降のRaspberry Piへのサーバー構築作業は、全てクライアント端末からSSH経由で行います。
sudo apt update
sudo apt upgrade
sudo apt install samba
sudo mkdir /home/pi/share
sudo chmod -R 777 /home/pi
/home/pi/share がクライアント機とのファイル共有ディレクトリになります。chmodはクライアント機が共有ディレクトリに自由にアクセスするための権限設定です。
次にsambaの設定を次のように行います。
/etc/samba/smb.conf
sudo nano /etc/samba/smb.conf
[raspberry_pi]
comment = Share
path = /home/pi/share
public = yes
read only = no
browsable = yes
force user = pi
2.7 Webサーバ Apache2のインストール
次に、WebサーバーApach2を次のコマンドでインストールします。
sudo apt install apache2
インストールが完了すると、既に有効となっているので、クライアント機で動作を確認しましょう。クライアント機でwebブラウザを立ち上げ、Raspberry PiのIPアドレスを入力してアクセスします。次のように表示されればApache2は正しく動いています。
2.8 PHPのインストール
次にPHPをインストールしましょう。これでWebサーバーの設定は完了です。
sudo apt install php
3 PHPでHello World! のプログラミング
Webサーバーが準備出来たので、早速PHPを動かしましょう。次の流れでPHPプログラム作成、動作確認を行います。
1.クライアント機でプログラム作成
2.クライアント機のプログラムをRaspberry Piにコピー
3.プログラムを/var/www/html (ドキュメントルート)に移動
4.実行確認
3.1 クライアント機でプログラム作成
クライアント機でエディタを立ち上げ、次のプログラムを作成します。Hello Worldとその時間を表示するプログラムになります。
ファイル名:time_php_test.php
<?php echo '<p>Hello World</p>';?>
<?php echo date('Y-m-d H:i:s');?>
3.2 クライアント機のプログラムをRaspberry Piにコピー
プログラムはクライアント機で作成していますので、WebサーバーであるRaspberry Piに作成したプログラムをコピーする必要があります。Raspberry Piにファイルサーバーを立ち上げていますので、次のようにクライアント機からファイルを共有フォルダへ格納します。
A. エクスプローラを立ち上げ次のアドレスを入力します。
\\(円マーク2つ) Raspberry PiのIPアドレス
B. 共有フォルダへアクセス
下図のようにraspberry_piという共有フォルダにアクセス出来るようになっています。
C.プログラムをコピー
作成したプログラムを下図のように共有フォルダに格納します。これでサーバー側にphpプログラムがコピーされました。
3.3 プログラムを/var/www/htmlに移動
次のコマンドでプログラムを/var/www/htmlにコピーします。このディレクトリは、apache2のwebページのデータを格納するデフォルトのディレクトリです。webサーバのページデータが格納されているディレクトリのことをドキュメントルートと呼びます。良く耳にする言葉なので覚えておいて下さい。
sudo cp /home/pi/share/time_php_test.php /var/www/html
3.4 実行確認
クライアント機からブラウザでwebサーバーにアクセスし、PHPの動作を確認しましょう。ブラウザで次のアドレスを入力します。下のような表示になれば成功です。
Raspberry PiのIPアドレス/time_php_test.php
4 まとめ
Raspberry Piでwebサーバーを構築し、PHPでHello Worldすることが出来ました。冒頭に記載の通り、バックエンドのプログラミングの学習につながると思います。Raspberry Piは名刺サイズほどの小さな基板ですが、立派なサーバーとして機能させることが出来ます。自分でサーバーを立ち上げる良い機会にもなったのではないでしょうか。
こちらでRaspberry Piの購入先を紹介していますので、是非試してみて下さい。
最後までお読み頂きありがとうございます!