概要
NervesにPhoenixを入れてウェブチカできたので備忘録です。
- NervesにPhoenixを入れるとNerves起動時にPhoenixも起動します
- ウェブチカとは、とあるURLにアクセスするとNervesにつけているLEDをチカらせることを言ってます
- 前提としてNervesとPhoenixはインストール済みとします
❯ mix nerves.new -v
Nerves Bootstrap v1.8.0
❯ mix phx.new -v
Phoenix v1.5.3
長編になりそうだったので3部作としました(^^ゞ
構成
NervesでPhoenixを動かすのは以下のNervesの公式ドキュメントを参考に実施します。Ponchoプロジェクトストラクチャーと呼ぶそうです。
Ponchoプロジェクトストラクチャー
Nervesのプロジェクトと同じ階層にPhoenixのプロジェクトを作成して、NervesからPhoenixを起動する設定をおこないます。
管理しやすくするため、2つのプロジェクトをまとめるディレクトリを作って、このディレクトリの中にNervesとPhoenixのプロジェクトを作成した方がいいです。今回はexineosディレクトリの中にNervesプロジェクトのexineris、Phoenixプロジェクトのneosapiという構成としました。
❯ tree -L 1 -F exineos
exineos
├── exineris/ ←Nervesのプロジェクトディレクトリ
└── neosapi/ ←Phoenixのプロジェクトディレクトリ
NervesとPhoenixのおおよその棲み分けはこのような感じだと思っています。
- Nerves:パッケージの管理、IPアドレスなどネットワークの設定
- Phoenix:ウェブ画面、ビジネスロジックの実装
準備
各プロジェクトを作成して、Nerves起動後Phonenixの画面が見えるまで準備します。
各プロジェクト作成
はじめにNervesとPhoenixを作成するディレクトリを作成します。
❯ mkdir exineos
❯ cd exineos
次にNervesとPhoenixのプロジェクトを作成します。
まずはNervesのプロジェクトを作成し、以下の記事を参考にネットワークの設定をしてSSHログインまで確認します。
❯ pwd
/path/to/exineos
❯ mix nerves.new exineris --nerves-pack
❯ cd exineris
❯ set -x MIX_TARGET rpi3
❯ mix deps.get
<ここでネットワークの設定をする(上のリンク参照)>
❯ mix firmware
❯ ssh 192.168.5.55
次にPhoenixのプロジェクトを作成します。
データベースを利用しないので--no-ecto
、ウェブパックも使わないので--no-webpack
オプションをつけています。
詳細はmix help phx.new
を実行してください
次にmix phx.gen.secret
コマンドで秘密鍵(という名の文字列)を生成して、シェルの環境変数に設定し、関連するパッケージを取得します。
最後にmix phx.server
を実行してhttp://localhost:4000/
にアクセスしPhoenixの画面が表示されていれば準備は完了です。
❯ pwd
/path/to/exineos
❯ mix phx.new neosapi --no-ecto --no-webpack
❯ mix phx.gen.secret
Y55U5mBi4/fViTfhegeVyWHJiCMkMMDhuNK+eqSsY0u2l1XheAZ97oruXIGqf2kC
❯ set -x SECRET_KEY_BASE Y55U5mBi4/fViTfhegeVyWHJiCMkMMDhuNK+eqSsY0u2l1XheAZ97oruXIGqf2kC
❯ mix deps.get
❯ mix phx.server