elixir + phoenix + CentOS7(vagrant)の環境構築
弊社の友人と話題になっていたelixir+phoenixを初めるにあたって
CentOS7に開発環境を整備してみました。
下記の記事も強く影響されました。 あと、言語名もかっこいいですよね(笑)
Macに環境構築をしてもよかったんですが、
バージョン管理したかったのでCentOS7に開発環境を作成しました。
(elixirはkiexがありますが)
内容一覧
- elixirとは
- phoenixとは
- 手順
elixirとは
elixirはErlangのVM上で動作するRuby風味で記述できる関数型言語です。
まず、elixirが生まれた背景としては、Erlangの特徴が基となってます。
Erlangの特徴
Erlangには上記の特徴がありますが、Prologのシンタックスを採用しているため、
他の言語と比べ癖が強く、学習コストが高いことが挙げられると思います。
色々な変遷の末、生まれたのがelixirです。
elixirの特徴
この特徴のおかげで、高速な処理を行うプログラムを手軽?に
作成することができるようになりました。
現在はバージョンが1系も出ており、
次世代を担う言語とも言われてますね。
ただ、Rubyライクに記述できますが、elixirは関数型言語ですので
オブジェクト指向とは異なるため気をつけたい点ですね。
phoenixとは
elixirで記述できる
Rails風味のWebフレームワークで高速な処理を行うことが出来ます。
そのため、Railsの知識を活かすことが出来ます。
(私はRailsをほとんど触ったことがありませんが。。。)
elixirでは、デファクトスタンダードなフレームワークとなっており、
2015/10/13時点でバージョン1も出ており、これからますます話題になりそうなフレームワークです。
手順
本当はDockerで構築したかったけど、
私がDockerに関する知識が皆無で逆に時間を取られそうだったため
vagrantで仮想環境作成することにしました。
# host側:仮想環境(CentOS7)を立てる $ vagrant up $ vagrant ssh # guest側:elixir+phoenixを構築 $ password root $ su - # yum update # firewallを停止 # systemctl stop firewalld # systemctl disable firewalld # Erlangをインストール # cd /usr/local/src # wget http://www.erlang.org/download/otp_src_18.0.tar.gz # tar zxvf otp_src_18.0.tar.gz # cd otp_src_18.0 # 依存関係のライブラリをインストール # yum install -y git gcc openssl openssl-devel ncurses ncurses-devel unixODBC unixODBC-devel gcc fop inotify-tools java-1.7.0-openjdk-devel # コンパイル # ./configure # make # make install # Erlang動作確認 # erl # elixirをインストール # cd /usr/local/lib # git clone https://github.com/elixir-lang/elixir.git # cd elixir # make clean test # Pathを通す # vi ~/.zshrc # source ~/.zshrc # elixir動作確認 # iex # Hexインストール # mix local.hex # Node.jsをインストール # cd /usr/local/src # wget https://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz # tar zxvf node-v0.12.7.tar.gz # cd node-v0.12.7 # ./configure --prefix=/usr/local # make # make install # node -v # workspaceを作成 # mkdir -p ~/workspace/hello-phoenix; cd ~/workspace/hello-phoenix # npm install # サーバーを立てる # mix phoenix.server
やってみて
一応環境構築までは完了しました。
無駄にFirewallの箇所でアクセスできないって言う初心者丸出しの事案も発生したり。。。
関数型言語は以前Prologを触ったことがある程度なので、
これを機にReact.jsと組み合わせて何かアプリ作りたいですねー
今後はDockerで作り直したい。。。