5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Nerves+Phoenix 001

Last updated at Posted at 2020-03-13

はじめに

RaspberryPi上で動くNerves+Phoenix環境の構築です。

参考

hexdocs.pm/phoenix
[github.com nerves-project #phoenix-web-interfaces]
(https://github.com/nerves-project/nerves/blob/master/docs/User%20Interfaces.md#phoenix-web-interfaces)

@nishiuchikazuma
nerves_pack(vintage_net含む)を使ってNervesのネットワーク設定をした〜SSHログインまで〜

環境

  • IEx 1.9.1 (compiled with Erlang/OTP 22)
  • nerves_bootstrap-1.7.1

目次

  • 下準備
  • プロジェクトの作成
  • プロジェクトの依存関係を整理
  • 実行
  • まとめ

下準備

ディレクトリ構成は以下とします。
phoenix
 ├hoget
 └my_app_ui
プロジェクトの構成は「poncho project structure」とします。
※umbrellaは書くところが多くなりそうなので。。

$ mix archive.install hex phx_new 1.4.15

#nervesを最新に(bootstrapのバージョンが古いと怒られる)
$ mix local.nerves
* creating **/.asdf/installs/elixir/1.9.1-otp-22/.mix/archives/nerves_bootstrap-1.7.1

# bootstrapのinstallが必要な場合は
mix archive.install hex nerves_bootstrap

プロジェクトの作成

$ cd phoenix
#nerves_packは使わなくてもOK。
$ mix nerves.new hoget --nerves-pack
$ mix phx.new my_app_ui --no-ecto --no-webpack

#とりあえずローカルで動くか確認
$ cd my_app_ui
$ mix phx.serve

ブラウザでlocalhost:4000にアクセス

nerves.local_.png

プロジェクトの依存関係を整理

今回はUsing a poncho project structureとします。

hoget/mix.exs

# hoget/mix.exs
# ...
  defp deps do
    [
      # Add
      {:my_app_ui, path: "../my_app_ui"},
      # ...
    ]
  end
# ...
hoget/config/config.exs

# Add 以下を追記
import_config "../../my_app_ui/config/config.exs"
import_config "../../my_app_ui/config/prod.exs"

config :my_app_ui, MyAppUiWeb.Endpoint,
  # Nerves root filesystem is read-only, so disable the code reloader
  code_reloader: false,
  http: [port: 80],
  # Use compile-time Mix config instead of runtime environment variables
  load_from_system_env: false,
  # Start the server since we're running in a release instead of through `mix`
  server: true,
  url: [host: "nerves.local", port: 80]

各々のプロジェクトでdeps.get


$ cd my_app_ui
$ mix deps.get

$ cd hoget
$ mix deps.get
** (RuntimeError) environment variable SECRET_KEY_BASE is missing.
You can generate one by calling: mix phx.gen.secret_key_base

#SECRET_KEY_BASEを作れと言われるので、
$ mix phx.gen.secret
"秘密鍵ができる"

#とりあえず環境変数へ
$ export SECRET_KEY_BASE=秘密鍵
$ mix deps.get

SECRET_KEY_BASEは、
my_app_ui/config/prod.secret.exs
で設定されてるようですが、ここでは深追いしません。

実行

$ export MIX_TARGET=rpi3
$ mix firmware
$ mix firmware.burn

ブラウザでnerves.localにアクセス

nerves.local_.png

#まとめ
・Nerves上でPhoenixを動かした。
・プロジェクトの構成はponchoの方が独立性が高くなって、開発しやすいのでは。
・Phonenixの開発環境、SECRET_KEY_BASEの辺りは別記事で。

5
2
0

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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?