ラズベリーパイでWebサーバを構築して、インターネット経由でアクセスしてみました。
※ラズベリーパイにraspbianをインストールしてある状態を前提とします
目次
apache2をインストール
ラズベリーパイにapache2をインストールします。
1 |
sudo apt-get install apache2 -y |
80番ポートがlistenしていることを確認します。
1 |
netstatt --listen |
こんな感じでhttpが表示されていればOKです。
参考までに、apache2のデフォルト設定では下記のようになっています。
コンフィグファイル:/etc/apache2/sites-available/default
Documentroot:/var/www
Webページが表示されるか確認
ラズベリーパイ本体のブラウザを開いて、アドレスバーにlocalhostと入力します。
すると、下記のようにIt works! というメッセージが出ればOKです。※まだ画面キャプチャソフトを入れていないのでケータイカメラからのスクリーンショットで勘弁してください。キャプチャソフトについては後で追記します。
ダイナミック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以外を選ぶ場合は、やり方が異なりますのでご注意ください。
右上のSign UPから進むと、登録したemailアドレス宛に確認メールが届きます。
つづいて、ラズベリーパイにNO-IPクライアントをインストールします。
noipディレクトリを作成
1 |
mkdir /home/pi/noip |
noipディレクトリに移動
1 |
cd /home/pi/noip |
noipクライアントをダウンロード
1 |
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz |
ダウンロードしたクライアントを解凍
1 |
tar vzxf noip-duc-linux.tar.gz |
クライアントソフトの中に移動
1 |
cd noip-2.1.9-1 |
インストール
1 |
sudo make |
設定
1 |
sudo make install |
ここでemailアドレスやパスワードを聞かれます。先ほどNO-IPに登録したときに設定した内容をいれます。
このあとにリフレッシュインターバルを聞かれるのでデフォルトのまま30にしておきます。
最後に他のアップデートをするかときかれるのでNをタイプします。
これで設定完了です。
下記コマンドで設定内容があっていることを確認します。
1 |
sudo /usr/local/bin/noip2 -C |
スポンサーリンク
StaticIPを振る
そんなこと知ってるわ!といわれるかもしれませんが、一応概説します。。
自宅やオフィスには複数のインターネットに接続する端末があると思います。スマートフォン、iPad,PC,Macなど、インターネットプロバイダはそれらすべてにグローバルIPをふってくれるわけではなく、あなたに割り当てられたたった一つのグローバルIPをすべての端末でシェアしています。
どうするかというと、プライベートIPというものを使います。その名のとおり、あなたのネットワーク内だけで通用するIPです。そしてこれもまたダイナミックに変わります。
今日はiPadのプライベートIPは192.168.0.2だけど、あしたは192.168.0.3といった具合です。
このままだと、インターネットからアクセスしたときに、ダイナミックDNSサービスによって、あなたのネットワークの入り口まではこれるけど、その先がわからない という自体になってしまいます。
それを回避するために、この端末にはこのプライベートIP というのを固定してしまえ というのがこのステップでやることです。
まずラズベリーパイに現在ふられているプライベートIP、ブロードキャストレンジ、サブネットマスクの3つを確認します。
1 |
sudo ifconfig |
すると下記のように表示されます。見た目は人によって違いますが、192.168で始まるところ、私の場合は192.168.0.11がラズベリーパイに割り当てられたIPになります。Bcastがブロードキャストレンジ、Maskがサブネットマスクです。
IP:192.168.0.11
Broadcast:192.168.0.255
Subnet mask:255.255.255.0
続いて、GatewayとDestinationを取得します。
1 |
sudo route -n |
すると下記が表示されます。
Gateway:192.168.0.1
Destination:192.168.0.0
次に下記のファイルを開き、取得した情報を書いてあげます。
1 |
sudo vi /etc/network/interfaces |
デフォルトはこうなっています。
1 2 3 4 5 6 7 |
iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet dhcp wpa-ssid "maron" wpa-psk "8186133673" |
このiface eth0 inet dhcp のところを変えて下記のようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
auto lo iface lo inet loopback address 192.168.0.11 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255 gateway 255.255.255.0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-ssid "xxxxx" wpa-psk "xxxxxxxx" |
変更したらラズベリーパイを再起動します。
1 |
sudo reboot |
これでラズベリーパイのプライベートIPが固定されました。
ポートフォワーディングを設定
もう一息です。
ここまででNo-IPから振られたドメイン名が手に入っていると思います。No-IPに独自ドメインを設定した人はそちらを使ってください。
まんをじして自分のネットワーク外からこのドメイン名をたたいても、、、あれアクセスできません。
これは、外部からアクセスしたときに、折角あなたのネットワークの入り口まできたのに、httpで使われる80番ポートをどの端末の80番ポートにつなげばよいかわからないからです。
これを解決するためにポートフォワーディングを行います。
ポートフォワーディングの設定はお使いのルータに対して行います。
ラズベリーパイもしくは同一ネットワークにある端末のブラウザで192.168.0.1と入力します。
するとルーターの管理画面が開きます。ここから先は契約しているプロバイダによって違うのですが、下記のTimeWarnerの場合です。
こんな感じです。80番でアクセスがきたら192.168.0.11の80にとおす という意味です。
”仮想サーバ” や ”ポートフォワーディング”などのキーワードが出ている箇所を探して設定してみてください。
これで設定終了です。
外部からNo-IPで振られたドメインにアクセスしてみましょう。簡単なのはスマートフォンのWifi設定をきって、3G回線経由でドメインにアクセスすればよいです。
これでIt works! の画面がでたら大成功です。
おつかれさまでした!
ラズベリーパイで遊ぶために必要なものはRaspberry pi 2 で監視カメラをつくってみたをご参照ください。
スポンサーリンク