Raspberry Piで自宅ウェブサーバ構築

#はじめに
自宅のRaspberry Piをウェブサーバとして使用するための構築方法。

#基本情報
##Raspberry Piの情報
- デバイス
    - Raspberry Pi 2 Model B
- OS
    - RASPBIAN WHEEZY
        - Version:May 2015
        - Release date:2015-05-05
        - Kernel version:3.18
- ウェブサーバ
    - Apache2.2.22 (Debian)

##ルータの情報
- PR-500MI

#Raspberry Piのインストール
こちらのサイトを参考。
http://qiita.com/ttyokoyama/items/7afe6404fd8d3e910d09

sshでログインできる状態になっていればOK。

#Raspberry Piのセキュリティ設定

ここでは、rootのパスワードの設定、デフォルトのpiユーザーの削除、新規の一般ユーザーアカウントの作成を行います。

rootのパスワードを設定

```
$ sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
```

rootのパスワードが設定できたら、rootで再度ログイン。

既存のpiユーザーを削除

```
# userdel -r pi
```

一般ユーザーアカウントの作成

```
# sudo adduser [username]
Adding user `[username]' ...
Adding new group `[username]' (1000) ...
Adding new user `[username]' (1000) with group `[username]' ...
Creating home directory `/home/[username]' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for [username]
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
```

ユーザー作成が作成できたら、いったんrootからログアウトして新しいユーザーで再度ログインし直します。

#Raspberry PiにApacheを導入

念のため、アプリケーションを最新の状態にします。

```
$ sudo apt-get update
$ sudo apt-get upgrade
```

Apacheのインストールを行います。

```
$ sudo apt-get install apache2
```

Apacheがインストールできたので、以下の2通りの方法でApacheの動作確認を行います。

1. Raspberry Pi上で確認

以下のコマンドでGUIを起動。

```
$ startx
```

ブラウザを開き、「 http://localhost 」と入力します。

以下の画面が表示されたらOKです。

<img width="584" alt="apache2_confirm.png" src="https://qiita-image-store.s3.amazonaws.com/0/57344/424fec46-5f80-d97e-b797-6bcab355851a.png">

2\. 同一LAN内の別デバイスで確認

ブラウザに「 http://[Raspberry PiのIPアドレス] 」を入力し、上と同様の画面が表示されたらOKです。

以上で、ウェブサーバの設定は終了しました。現時点で、同一LAN内ではサービスの提供が可能です。

しかし、これでは、外から自宅のRaspberry Piのウェブサービスを利用したいといった要求に応えることができません。そのため、ルータのポートを開放し、外部からRaspberry Piのウェブサービスを利用するための設定を以下の手順で行う必要があります。

#ポート開放設定

これ以降の作業はルータによって異なりますが、大まかには同様な流れで設定を行うこととなると思います。今回はPR-500MIというルータを用いて作業を行いました。

##静的IPマスカレード設定

まず、ルータの管理画面にログインします。

左側のメニューから「詳細設定」を選び「静的IPマスカレード設定」を選択し、「静的IPマスカレード設定」画面を開きます。

「静的IPマスカレード設定」にて、「対象インタフェースを選択」が「メインセッション」になっていることを確認し、「静的IPマスカレード設定」一覧の「編集」ボタンをクリックします。

「静的IPマスカレード設定 エントリ編集」にて、以下の様に内容を編集します。

<img width="1036" alt="ip_masquerade.png" src="https://qiita-image-store.s3.amazonaws.com/0/57344/cecb3115-5ebe-3f7b-c510-1a950498811e.png">

ここで、宛先IPアドレスにはLAN内のRaspberry PiのIPアドレスを入力します。DHCPでIPアドレスを振っている場合には変更される可能性があるので注意してください（IPアドレスの固定も可能 => http://totech.hateblo.jp/entry/2015/05/30/151951 ）。

最後に、「静的IPマスカレード設定」にて、設定を行ったエントリ番号のチェックボックスにチャックをつけ、一覧の上部の「設定」ボタンを押せば設定完了です。

<img width="1032" alt="ip_masquerade_list.png" src="https://qiita-image-store.s3.amazonaws.com/0/57344/e6dd8653-6513-d441-4af8-2b202e119b38.png">

ここまで設定できたら、ブラウザからルータに振られているグローバルIPにアクセスすることで、先ほどの画面が出るか確認します。ここで、**同一LAN内からアクセスすることはできない**ので、テザリングなどを利用して外部のLANからアクセスできるか確認してください。

ちなみに、PR-500MIでは、グローバルIPを「情報」=>「現在の状態」=>「機器状態情報」=>「メインセッション」のWAN側IPアドレスに記してあります。

以上で設定完了です。

#参照
PR-500MI ポート開放設定
http://ezxnet.com/ntt/entry10194/

Raspberry Piのセキュリティー設定
http://denshikousaku.net/raspberry-pi-security-for-web-server-part1

Raspberry Piにapacheの導入
http://denshikousaku.net/raspberry-pi-ip-address-and-open-port