LoginSignup
5
2

More than 3 years have passed since last update.

CentOS8上でElixirをasdf経由でインストールしてPhoenixを動かす

Last updated at Posted at 2019-09-25

※注意事項:本記事は、2019.09.25時点の内容です。速報的な情報としてお読みください。

概要

CentOS8公式ページからダウンロードできるようになったので、ElixirのWebフレームワークであるPhoenixが起動できるかを確認してみました。
なお、CentOS8のインストールの種類は、「サーバ(GUI)」で実施しています。

先に結論

起動はできました。
しかし、ライブラリのインストールの準備(というか調査)に少し手間がかかりました。

具体的には、以下の二つのパッケージの確認に手間取りました。

  • libyaml-devel
  • inotify-tools

所感としては、現状はdnfでインストールできる標準パッケージやEPELの環境が整ってから、実施するようにした方が良さそうです。

Elixirのインストール

CentOS8では、標準でインストールはできない様子。
dnf install elixirとしても、そんなものないと言われます。

そのため、asdfでElixirの環境を準備してみます。

asdfのインストール

asdfの公式ページのインストール手順に従い、asdfをインストールしていきます。

gitのインストールはsudo dnf install gitで実施できます。
gitをインストールしたら、続いてGitHubからasdfのコード一式をcloneしてきます。

$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.4

続いて、asdfのパスを.bashrcに設定します。(bash以外を利用している方は、公式ページをみて読み替えてください。)

$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc

続いて、プラグインを利用するための依存パッケージをインストールしますが、ここで一点ハマりポイントがありました。
CentOS8と同じくdnfを利用しているFedoraのコマンドで実行すると、「libyaml-devel」がdnf経由ではインストールできませんでした。標準のパッケージとしては登録されていないようです。

libyaml-develは見つからない
$ sudo dnf info  libyaml-devel
メタデータの期限切れの最終確認: 0:34:21 時間前の 2019年09月25日 13時16分32秒 に実施しました。
エラー: 表示するための一致したパッケージはありません

www.rpmfind.netというサイトでCentOS8用のrpmがないか探したり、CenttOS8のEPELも入れてみましたが、libyaml-develはやはり見つかりませんでした。

ただ、幸いなことにErlangとElixirのインストールにおいては、libyaml-develはインストールされていなくても影響がなかったので、今回は抜かした状態で他のパッケージをインストールしました。

libyaml-develを抜いてインストール
sudo dnf install \
  automake autoconf readline-devel \
  ncurses-devel openssl-devel \
  libxslt-devel libffi-devel libtool unixODBC-devel \
  unzip curl

Erlangのインストール

Elixirをインストールする前にErlangをインストールします。
ここで、Erlangのインストールに「make」コマンドが必要になります。
asdfのインストール時にはmakeがインストール対象に含まれていませんでしたので、以下のようなコンパイルでエラーが発生したら、sudo dnf install makeでmakeをインストールしてください。

エラーメッセージ
$ asdf install erlang 22.1
〜(略)〜
Building Erlang/OTP 22.1 (asdf_22.1), please wait...
WARNING: It appears a required development package 'make' is not installed.
Configure failed.
checking whether g++ accepts -g... no
checking for ld... ld
checking for mixed cygwin or msys and native VC++ environment... no
checking for mixed cygwin and native MinGW environment... no
checking if we mix cygwin with any native compiler... no
checking if we mix msys with another native compiler... no
checking for env... /bin/env
checking for GNU make... no
configure: error: GNU make is required!
ERROR: /home/mzryuka/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1/otp_src_22.1/make/configure failed!

makeがインストールされていれば、erlangのコンパイルが通りました。
※ なお、erlang自体のインストール(コンパイル)には、マシンスペックにもよりますが10分程度の時間がかかります。

erlangのインストール完了
$ asdf install erlang 22.1
Extracting source code
Building Erlang/OTP 22.1 (asdf_22.1), please wait...
APPLICATIONS DISABLED (See: /home/mzryuka/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1/otp_build_22.1.log)
 * jinterface     : No Java compiler found

APPLICATIONS INFORMATION (See: /home/mzryuka/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1/otp_build_22.1.log)
 * wx             : Can not find C++ compiler
 * No OpenGL headers found, wx will NOT be usable
 * No GLU headers (glu.h) found, wx will NOT be usable
 * wxWidgets not found, wx will NOT be usable

DOCUMENTATION INFORMATION (See: /home/mzryuka/.asdf/plugins/erlang/kerl-home/builds/asdf_22.1/otp_build_22.1.log)
 * documentation  : 
 *                  fop is missing.
 *                  Using fakefop to generate placeholder PDF files.

Erlang/OTP 22.1 (asdf_22.1) has been successfully built
Installing Erlang/OTP 22.1 (asdf_22.1) in /home/mzryuka/.asdf/installs/erlang/22.1...
You can activate this installation running the following command:
. /home/mzryuka/.asdf/installs/erlang/22.1/activate
Later on, you can leave the installation typing:
kerl_deactivate
Cleaning up compilation products for 
Cleaned up compilation products for  under /home/mzryuka/.asdf/plugins/erlang/kerl-home/builds

Erlang 22.1 has been installed. Activate globally with:

    asdf global erlang 22.1

Activate locally in the current folder with:

    asdf local erlang 22.1

$

いくつか気になるメッセージも出ていますが、一旦はおいときます。
asdf global erlang 22.1を実行して、erlangを実行できるようにしておきます。

Elixirのインストール

続いて、Elixirのインストールです。
こちらは、あっさりインストールが終わります。

$ asdf plugin-add elixir
$ asdf install elixir 1.9.1-otp-22

$ asdf global erlang 1.9.1-otp-22を実行後、iexで起動を確認しておきます。

iexの起動が確認できたらPhoenixのインストールを行います。

Phoenixのインストール

Elixirのインストールが完了したので、続いてPhoenixのインストールを実行します。
node.js、hex、rebar、Phoenixの順にインストールしていきます。

node.jsのインストール

CentOS8の標準で、node.jsの10(10.14.1)がインストール可能です。

node.jsのインストール
$ sudo dnf install nodejs

hexとrebarのインストール

こちらも特に問題なく実行できます。

$ mix local.hex --force
$ mix local.rebar --force

Phoenixのインストール

ひとまず、現時点でPhoenixの最新の1.4.10をインストールします。
こちらも特に問題なく実行できます。

$ mix archive.install hex phx_new 1.4.10 --force

Phoenixの実行

inotify-toolsのインストール

必須ではありませんが、devモードでの実行時では、inotify-toolsがインストールされていないとmix phx.server実行時にワーニングメッセージが出てきます。
そのため、inotify-toolsはインストールするのが良いでしょう。

ただし、残念ながらinotify-toolsも、現時点では標準パッケージやEPELには含まれていませんでした。
幸い、inotify-toolsのバージョンはCentOS7時点から大きく変動していないので、Fedora30で利用されているRPMを使ってインストールしておきます。

$ wget http://download-ib01.fedoraproject.org/pub/fedora/linux/updates/30/Everything/x86_64/Packages/i/inotify-tools-3.14-17.fc30.x86_64.rpm

$ sudo rpm -ivh inotify-tools-3.14-17.fc30.x86_64.rpm

これで、inotify-toolsについてのメッセージは出てこなくなります。

PhoenixのTOP画面の起動

まずは、TOP画面が起動することを目指します。DBアクセスについては一旦は省略。
そのため、--no-ectoをつけてPhoenixのプロジェクトを作成します。
ここでは、プロジェクト名は「hiyoko」にしています。

$ mix phx.new hiyoko --no-ecto

実行時に聞かれるFetch and install dependencies? [Yn]Yでインストールします。

プロジェクトができたら、プロジェクトディレクトリへ移動した後でmix phx.serverを実行します。
起動が確認できたら、localhost:4000にアクセスします。

20190925_centos8_phoenix.PNG

無事にTOP画面が表示されました。

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