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