こんな小さな基盤の上で Java EE サーバーが動くなんて、胸熱ですね。
ケースに入れれば、 Java EE サーバーをポケットに入れて持ち歩けるわけですね。なんだかワクワクしてきますね!
必要なものを用意(購入)する
- Raspberry Pi 本体(type B)
- SD カード
- LAN ケーブル
- HDMI ケーブル
- USB マウス
- USB キーボード
- モニター(HDMI の入力ができるやつ)
- micro USB ケーブル(携帯の充電とかで使ってやつで OK)
どれも Amazon で買える。
買った後で、 type B+ という新しいモデルがあることを知った orz。
あと、基盤丸出しが気になる場合はケースを買うといい(1000 円強くらい)。
OS をインストールするためのファイルをダウンロードする
上記公式サイトから、 NOOBS Lite
を落としてくる。
落としたら、 zip を解凍する。
SD カードに NOOBS Lite を書き込む
SD カードをパソコンに挿して、先ほどダウンロードした NOOBS Lite
の中身を SD カードにコピーする。
Raspberry Pi に色々接続する
- インターネットに繋がっている LAN ケーブルを接続する(要 DHCP)。
- HDMI でモニターと接続する。
- USB マウスとキーボードを接続する。
- 先ほどインストール用のファイルを保存した SD カードを接続する。
以上が完了したら、電源(1A 以上)に繋がった micro USB を接続する。
接続したら勝手に起動して、画面に OS のインストール画面が表示される。
Raspbian をインストールする
言語で日本語を選んで、公式が推奨している Raspbian をインストールする。
OS を選択して Install をクリックするだけ。簡単!
インストールが終わったらダイアログが表示されるので、「OK」をクリックして完了。
日本語化
続いて青背景の Raspbian の設定画面が表示される。
ロケールなどの設定がここでできるが、そのままだと文字化けして分けがわからないので、一旦 Finish
を選んで終了させる。
コマンドラインに移るので、以下のコマンドを実行。
$ sudo aptitude -y install jfbterm
$ jsbterm
$ sudo raspi-config
今度は日本語が表示されるようになっているはず。
※再起動すると日本語化が解けるので、また jfbterm
しないといけない。
raspi-config での設定
ロケールとかの設定
- [4 Internationalisation Options] → [l1 Change Locale] → [ja_JP.UTF-8.UTF-8] を選択。
- [4 Internationalisation Options] → [l2 Change Timezone] → [アジア] → [Tokyo] を選択。
- [4 Internationalisation Options] → [l3 Change Keyboard Layout] → [標準 105 キー(国際)PC] → [日本語 - 日本語(OADG 109A)] を選択。
- [AltGr] の設定では、 [キーボード配置のデフォルト] を選択する。
- [コンポーズキー] の設定ではい、 [コンポーズキーなし] を選択する。
GPU に割り当てるメモリ量を変更する
デフォルトだと 64MB のメモリを GPU のために使用するようになっているが、サーバー用途で動かすのであれば無駄になる。
なので、 GPU に割り当てられているメモリ量を減らして、少しでもメイン処理にメモリが使えるようにする。
- [8 Advanced Options] → [A3 Memory Split] → [16] と入力して [了解] を選択。
SSH を有効にする
- [8 Advanced Options] → [A4 SSH] → [Enable] を選択。
設定が終わったら [Finish] を選択。
マシンが再起動する。
SSH で接続できるようにする
以後は SSH でリモート接続して作業できるようにする。
※家の中でのローカル作業なので、セキュリティ的なことは一切考えていない作業手順です。
パスワードログインを有効にする
$ sudo vi /etc/ssh/ssh_config
- # PasswordAuthentication yes
+ PasswordAuthentication yes
※25 行目
sshd の再起動
$ service ssh restart
他の端末から接続できるか確認
> ssh pi@<Raspberry Pi の IP アドレス>
パスワードは、デフォルトは raspberry
接続できたら OK。
GlassFish をインストールする
Web プロファイルを落として動かす。
ちなみに、 Java は JDK 8 がデフォルトで入っていたので特にインストール作業はしなくていい。
インストール
$ sudo mkdir -p /app/glassfish
$ sudo chown pi /app/glassfish
$ cd /app/glassfish
$ wget http://dlc.sun.com.edgesuite.net/glassfish/4.1/release/glassfish-4.1-web.zip
$ unzip glassfish-4.1-web.zip
ディレクトリ作って zip 落として解凍するだけ。
外部から管理コンソールをさわれるようにする
$ cd /app/glassfish/glassfish4/bin
$ ./asadmin change-admin-password --user admin
Enter the admin password>【未入力のまま Enter】
Enter the new admin password>【admin】
Enter the new admin password again>【admin】
Command change-admin-password executed successfully.
$ ./asadmin start-domain
$ ./asadmin enable-secure-admin
$ ./asadmin stop-domain
$ ./asadmin start-domain
結構起動に時間がかかる。さすがにスペック的に仕方ないか。
確認する
別のマシンから https://<Raspberry Pi の IP アドレス>:4848/
にアクセスしてみる。
コンソールの立ち上がりに5~10分くらいかかる。
気長に待つ。。。
キタ!!
admin
/ admin
でログインする。
ページ遷移ごとに結構時間がかかる。
しかし、一応待てば数分以内にレスポンスは返ってくる。
試しにアプリをデプロイしてみる。
簡単な JAX-RS の Web アプリをデプロイして、動かしてみる。
package gl8080.pi;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("rest")
public class PiApplication extends Application {
}
package gl8080.pi;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
@Path("hello")
public class HelloResource {
@GET
public String hello() {
return "Hello Java EE on Raspberry Pi";
}
}
$ curl http://192.168.0.109:8080/pi/rest/hello
Hello Java EE on Raspberry Pi
当たり前ですけど、動いてます。
あの小さな板の上で、確かに Java EE アプリが動いてます。感動的ですね。
さすがに Web コンソールは重くて厳しいので、サーバーの管理は asadmin を活用することになりそう。
しかし、それ以外は問題なく動きます。