Phoenix on Raspberry Pi の導入メモ
プログラミング言語ElixirのWebフレームワークである「Phoenix」をRaspberry Pi 1 に導入してみましたが、いたるところで詰まったのでメモしておきます。
# 目標 Raspberry Pi Model BにPhoenixを導入する。
今時何で初代を使っているのだろう。。
問題1
「Elixir Phoenix」などのワードで検索すると、多くの記事で以下のような導入方法が紹介されています。
この記事におけるPhoenixの導入方法を試みると、まずmix local.hexの実行の時点で失敗しました。
エラー文の画像はありませんが、以下のような内容です。
Phoenixの導入のためにはhexは必須ではありませんが、mix archive ~
の部分も同様のエラーで失敗します。
エラー文から察するに、SSLが有効になっていないことが原因のようです。 opensslが入っていることを確認したうえでErlang VMの再導入を試みましたが、無駄のようです。
そこで、Erlang VMをソースコードからビルドすることを試みます。Erlang VMをビルドしてSSLを有効にする方法は以下の記事を始めとして多くの記事で紹介されているように、kerlというバージョンマネージャを使用すれば容易に行うことができますが、コンパイルオプションが曲者でした。
紆余曲折あり、私の環境ではオプションを以下のようにすることでようやくSSLが有効になりました。
KERL_CONFIGURE_OPTIONS="--enable-dynamic-ssl-lib --with-ssl=/usr/bin/ --disable-hipe --enable-smp-support --enable-threads --enable-kernel-poll --disable-native-libs --without-javac"
このオプションでビルドした場合、初代Raspberry Piのスペックでは数時間から半日ほど時間を要しました。
問題2
Erlang VMをソースコードからビルドし、Elixirの環境を導入します。 Elixirの環境は、
$ apt-get install elixir
で問題ありませんでした。
導入後、
$ mix phoenix.new phoenix_sample $ cd phoenix_sample $ mix phoenix.server
とすることで導入完了の予定でしたが、ここで別の問題が発生しました。mix phoenix.server
の実行中に行われるnpm install
でエラーが発生し、失敗する、というものでした。
ここでnpmのバージョンを調べると、
$ npm --version
v0.14.21という、古すぎるバージョンであることが判明したため、以下の記事に則ってnpm(及びnode)のアップデートを行い、
再び
$ mix phoenix.server
とすることで解決できました。
導入成功
導入後、初回起動時はコンパイルが多く、ある程度時間を要しましたが、実際にブラウザからアクセスでき、同時にログ出力も確認されました。
ログの応答速度から察するに、初代Raspberry Piにとってはある程度の速度が出ている・・・のか?というところです。