CentOS7にErlangとElixir、Phoenixをインストールしてみる

 Elmを勉強中ですが、フロントエンドをJavaScriptから関数型言語へ変えるので、せっかくですからサーバ環境も関数型言語へ変更したいと思いました。調べるとErlang VM上で動くElixir(Phoenix)が良いらしいので、インストールしてみました。

 Elixirは開発環境を含めてErlangを使いやすく再設計した関数型言語で、Erlangとバイナリコードレベルで互換性があり、そのライブラリであるOTPも使うことができるということです。ニューフェイスだが、Erlangが長い歴史で築いてきた資産をそのまま使えるというおいしい言語です。ちなみに作者(José Valim氏)はRuby on Railsのチームのコアメンバーだということです。ElixirがRubyの置き換えだとしたら、PhoenixはRailsの置き換えになります。PhoenixはデフォルトのDBとしてPostgreSQLを使うのでそのインストールも行います。
https://hexdocs.pm/phoenix/installation.html

1.nodeのインストール

 Phoenixはデフォルトでbrunch.ioを使ってstatic assets (JavaScript, CSS, etc)をコンパイルします。brunch.ioはnpmを利用しているのでnodeが必要になります。これは他の作業とまったく独立しているので、最初に行っておくことにします。以下のように最新版を入れておけば問題ないはずです。

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
source ~/.nvm/nvm.sh
nvm install --lts
nvm use --lts
node -v
npm -v

 Elmのコンパイルもbrunch.ioのお世話になるのだろう。webpackではないのね。

2.Erlangのインストール

 話を簡単にするために以下の操作はrootで行います。

 まずErlangをインストールするための準備を行います。

yum update
yum install epel-release
yum install gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git wget wxBase.x86_64

 次にErlangのインストールです。

wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
yum update
yum install erlang

 インストールを確認するためにerlコマンドで、shellが立ち上がるかを確認します。

[root@www13134uf sand]# erl
Erlang/OTP 20 [erts-9.1] [source] [64-bit] ...

Eshell V9.1  (abort with ^G)
1>

3.Elixirのインストール

 以下のコマンドでElixirの最新バージョンが入手できます。

git clone https://github.com/elixir-lang/elixir.git

 作成されたelixirディレクトリで以下のコマンドを打ちます。

cd elixir/
make clean test

 問題がなかったらpathを設定するために.bashrcを編集します。

vi /root/.bashrc

 私の場合は以下のようなpathを追加しました。

export PATH="$PATH:/home/sand/elixir/elixir/bin"

 iexコマンドでshellが立ち上がることを確認してください。

[root@www13134uf sand]# iex
Erlang/OTP 20 [erts-9.1] [source] [64-bit] ...

Interactive Elixir (1.7.0-dev) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>

 最後にElixirのパッケージマネージャ hexをインストールしておきます

 mix local.hex

4.Phoenixのインストール

 次のコマンドでPhoenixがインストールできます。

mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez

5.PostgreSQLのインストール

まずPostgreSQLをインストールし、サービスを立ち上げます。

yum -y install postgresql-server
postgresql-setup initdb
systemctl start postgresql.service
systemctl enable postgresql.service

 次にパスワードを設定するためにshellを立ち上げ、postgresというパスワードを2回打ちます。

sudo -u postgres psql
\password postgres
    Enter the password postgres twice,
\q

 次にローカル接続のAuthenticationのメソッドをidentからmd5に変更します。以下のファイルを編集します。

vi /var/lib/pgsql/data/pg_hba.conf

 該当する箇所を以下のように書き換えてください。

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

 サービスを再起動して設定変更を反映させます。

systemctl restart postgresql.service

6.inotify-toolsのインストール

 inotify-toolsはPhoenixが使うファイルシステム監視ツールで、コード変更があったらリロードするのに使われます。

yum install inotify-tools

7.Phoenixプロジェクトの作成

 最後にPhoenixのプロジェクトを作成して終わります。以下のコマンドでプロジェクトを作成し、サーバの起動が行われます。

mix phoenix.new my_test
cd my_test
mix ecto.create
mix phx.server

 ブラウザで以下のアドレスを叩くとPhoenixのデモ画面が表示されます。ポート番号4000以外は自分のサーバのIPを入れてください。

http://xxx.xxxx.xxx.xxx:4000
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.