LoginSignup
0

More than 3 years have passed since last update.

NervesにPhoenixを入れてHTTPのGETでLEDをウェブチカ〜準備編1/3〜

Last updated at Posted at 2020-06-19

概要

NervesにPhoenixを入れてウェブチカできたので備忘録です。

  • NervesにPhoenixを入れるとNerves起動時にPhoenixも起動します
  • ウェブチカとは、とあるURLにアクセスするとNervesにつけているLEDをチカらせることを言ってます
  • 前提としてNervesとPhoenixはインストール済みとします
fish
❯ 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という構成としました。

shell
❯ tree -L 1 -F exineos
exineos
├── exineris/    ←Nervesのプロジェクトディレクトリ
└── neosapi/     ←Phoenixのプロジェクトディレクトリ

NervesとPhoenixのおおよその棲み分けはこのような感じだと思っています。

  • Nerves:パッケージの管理、IPアドレスなどネットワークの設定
  • Phoenix:ウェブ画面、ビジネスロジックの実装

準備

各プロジェクトを作成して、Nerves起動後Phonenixの画面が見えるまで準備します。

ネットワークはこのようないつもの構成にしました。
ネットワーク構成図.png

各プロジェクト作成

はじめにNervesとPhoenixを作成するディレクトリを作成します。

fish
mkdir exineos
❯ cd exineos

次にNervesとPhoenixのプロジェクトを作成します。
まずはNervesのプロジェクトを作成し、以下の記事を参考にネットワークの設定をしてSSHログインまで確認します。

fish
pwd
/path/to/exineos

❯ mix nerves.new exineris --nerves-packcd 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を実行してください :wink:

次にmix phx.gen.secretコマンドで秘密鍵(という名の文字列)を生成して、シェルの環境変数に設定し、関連するパッケージを取得します。

最後にmix phx.serverを実行してhttp://localhost:4000/にアクセスしPhoenixの画面が表示されていれば準備は完了です。

fish
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

つづく…

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0