ラズベリーパイでWebサーバーを構築してみた

ラズベリーパイでWebサーバを構築して、インターネット経由でアクセスしてみました。
※ラズベリーパイにraspbianをインストールしてある状態を前提とします

目次

  1. apache2をインストール
  2. ダイナミックDNSを設定
  3. StaticIPを振る
  4. ポートフォワーディングを設定

apache2をインストール

ラズベリーパイにapache2をインストールします。

80番ポートがlistenしていることを確認します。

こんな感じでhttpが表示されていればOKです。
2015-04-25 20_24_19-pi@raspberrypi_ ~_noip_noip-2.1

参考までに、apache2のデフォルト設定では下記のようになっています。
コンフィグファイル:/etc/apache2/sites-available/default
Documentroot:/var/www

Webページが表示されるか確認

ラズベリーパイ本体のブラウザを開いて、アドレスバーにlocalhostと入力します。

すると、下記のようにIt works! というメッセージが出ればOKです。※まだ画面キャプチャソフトを入れていないのでケータイカメラからのスクリーンショットで勘弁してください。キャプチャソフトについては後で追記します。
20150425_222251

ダイナミックDNSを設定

次にダイナミックDNSを設定します。ダイナミックDNSとはグローバルIPを持っていない端末にインターネット経由でアクセスするための仕組みです

今回のケースで説明すると今、目の前にあるラズベリーパイはまだ外部からはアクセスできません。なぜなら、その端末を特定するグローバルIPアドレスをもっていないからです。

契約されているインタネットプロバイダーはあなたにグローバルIPを振ってくれていますが、それは固定ではなく可変です。なので、今現在、自分に割り当てられているグローバルIPがわかっても、明日には変わっている可能性があるので、外部からは特定できない、いわば住所不定無職な状態なわけです。無職ではないですけど。

そして、ダイナミックDNSサービスとはその可変なIPアドレスとドメイン名をマッピングしてくれるサービスです。

詳しくは後述しますが、ダイナミックDNSサービスのクライアントをラズベリーパイにインストールすると、定期的に「今自分に割り当てられているグローバルIPはこれですよ」というメッセージをダイナミックDNSに通知し、ダイナミックDNSサービス側ではこれをもとに絶えずマッピングを更新していく というわけです。

前段が長くなりましたが、早速ダイナミックDNSサービスを登録します。

ダイナミックDNSサービスのプロバイダーはたくさんあるのですが、今回はNO-IPというサービスを使います。
http://www.noip.com/

理由は有名だからとドキュメントがたくさんあって簡単そうだからです。英語ですが、登録は簡単です。どうしても日本語のプロバイダを使いたい場合は、「ダイナミックDNSサービス」で検索すればたくさん出てきます。

ただし、後述の手順はNO-IPを使った場合の方法なので、NO-IP以外を選ぶ場合は、やり方が異なりますのでご注意ください。

2015-04-25 22_54_25-Free Dynamic DNS - Managed DNS - Managed Email - Domain Registration - No-IP

右上のSign UPから進むと、登録したemailアドレス宛に確認メールが届きます。

つづいて、ラズベリーパイにNO-IPクライアントをインストールします。

noipディレクトリを作成

noipディレクトリに移動

noipクライアントをダウンロード

ダウンロードしたクライアントを解凍

クライアントソフトの中に移動

インストール

設定

ここでemailアドレスやパスワードを聞かれます。先ほどNO-IPに登録したときに設定した内容をいれます。
no-ip_ID_pass

このあとにリフレッシュインターバルを聞かれるのでデフォルトのまま30にしておきます。

最後に他のアップデートをするかときかれるのでNをタイプします。

これで設定完了です。

下記コマンドで設定内容があっていることを確認します。

スポンサーリンク

StaticIPを振る

そんなこと知ってるわ!といわれるかもしれませんが、一応概説します。。

自宅やオフィスには複数のインターネットに接続する端末があると思います。スマートフォン、iPad,PC,Macなど、インターネットプロバイダはそれらすべてにグローバルIPをふってくれるわけではなく、あなたに割り当てられたたった一つのグローバルIPをすべての端末でシェアしています

どうするかというと、プライベートIPというものを使います。その名のとおり、あなたのネットワーク内だけで通用するIPです。そしてこれもまたダイナミックに変わります。

今日はiPadのプライベートIPは192.168.0.2だけど、あしたは192.168.0.3といった具合です。

このままだと、インターネットからアクセスしたときに、ダイナミックDNSサービスによって、あなたのネットワークの入り口まではこれるけど、その先がわからない という自体になってしまいます。

それを回避するために、この端末にはこのプライベートIP というのを固定してしまえ というのがこのステップでやることです。

まずラズベリーパイに現在ふられているプライベートIP、ブロードキャストレンジ、サブネットマスクの3つを確認します。

すると下記のように表示されます。見た目は人によって違いますが、192.168で始まるところ、私の場合は192.168.0.11がラズベリーパイに割り当てられたIPになります。Bcastがブロードキャストレンジ、Maskがサブネットマスクです。
2015-04-25 23_10_10-Presentation1 - PowerPoint

IP:192.168.0.11
Broadcast:192.168.0.255
Subnet mask:255.255.255.0

続いて、GatewayとDestinationを取得します。

すると下記が表示されます。
2015-04-25 23_12_42-pi@raspberrypi_ ~

Gateway:192.168.0.1
Destination:192.168.0.0

次に下記のファイルを開き、取得した情報を書いてあげます。

デフォルトはこうなっています。

このiface eth0 inet dhcp のところを変えて下記のようにします。

変更したらラズベリーパイを再起動します。

これでラズベリーパイのプライベートIPが固定されました。

ポートフォワーディングを設定

もう一息です。

ここまででNo-IPから振られたドメイン名が手に入っていると思います。No-IPに独自ドメインを設定した人はそちらを使ってください。

まんをじして自分のネットワーク外からこのドメイン名をたたいても、、、あれアクセスできません。

これは、外部からアクセスしたときに、折角あなたのネットワークの入り口まできたのに、httpで使われる80番ポートをどの端末の80番ポートにつなげばよいかわからないからです。

これを解決するためにポートフォワーディングを行います。

ポートフォワーディングの設定はお使いのルータに対して行います。

ラズベリーパイもしくは同一ネットワークにある端末のブラウザで192.168.0.1と入力します。

するとルーターの管理画面が開きます。ここから先は契約しているプロバイダによって違うのですが、下記のTimeWarnerの場合です。

こんな感じです。80番でアクセスがきたら192.168.0.11の80にとおす という意味です。
2015-04-25 23_45_50-Mozilla Firefox

”仮想サーバ” や ”ポートフォワーディング”などのキーワードが出ている箇所を探して設定してみてください。

これで設定終了です。

外部からNo-IPで振られたドメインにアクセスしてみましょう。簡単なのはスマートフォンのWifi設定をきって、3G回線経由でドメインにアクセスすればよいです。

これでIt works! の画面がでたら大成功です。

おつかれさまでした!

ラズベリーパイで遊ぶために必要なものはRaspberry pi 2 で監視カメラをつくってみたをご参照ください。

スポンサーリンク

© 2021 はじめてのRaspberry Pi Powered by AFFINGER5