初めに
最近、趣味でUnity関連の開発を始めました。それに関連して、リアルタイム通信の仲介役となるサーバーアプリをElixir + Phoenix Frameworkで構築を進めています。この記事は環境構築時の忘備録です。タイトルの通りではありますが、この記事ではVagrantで初期化したUbuntu上(Ubuntu 16.04)でPhoenix Framework用の開発環境を整えるところまで進めます。バージョンやプロジェクト名・データベース名などは、必要に応じて改変してください。
依存関係
Phoenix Frameworkを使った開発環境の構築には、Elixirが導入されていることはもちろん、Node.jsやデータベースがセットアップされている必要性があります。ざくっとですが、HelloWorldするのに下記パッケージを必要です。
- Phoenix Framework
- Elixir
- Node.js
- Postgres (初回HelloWorldするのに必要)
手順
必要なパッケージ類のインストール
inotify-toolsは、Phoenixがファイルの変更を自動で検知してリロードするために必要です。
なくても動きますが、実行時にerrorが出ます。
$ sudo apt install wget curl git vim inotify-tools
Erlangの導入
筆者環境ではerlangインストール中にHash Sum mismatchと出ましたが、 apt update
しなおしたら治りました。
$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
$ sudo dpkg -i erlang-solutions_1.0_all.deb
$ sudo apt update
$ sudo apt install -y erlang
Elixirの導入 (exenv経由)
$ git clone git://github.com/mururu/exenv.git .exenv
$ git clone git://github.com/mururu/elixir-build.git ~/.exenv/plugins/elixir-build
$ echo 'export PATH="$HOME/.exenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(exenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
$ exenv install 1.6.6
$ exenv global 1.6.6
Node.jsの導入 (nvm経由)
phoenix.newするときに、Node.js(というかnpm..?)が必要になります。
ここで入れておきましょう。
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
$ nvm install v8.11.3
$ source ~/.bashrc
PostgresDBの構築 (Docker経由)
Docker経由でPostgreSQLサーバーをローカルに立てます。
DBが立ち上がっていないと後述のサーバー起動時にエラーで落ちます。
$ curl -fsSL get.docker.com -o get-docker.sh
$ sh get-docker.sh
$ sudo usermod -aG docker $(whoami)
$ docker run -d --name postgres -p 5432:5432 -e POSTGRES_DB=hello_phoenix_dev postgres:9.6
Phoenix Frameworkの導入
# Package manager hexの導入
$ mix local.hex
$ mix archive.install https://github.com/phoenixframework/archives/raw/master/phoenix_new.ez
プロジェクト作成
phoenix.new
するときに、Fetch and install dependencies?
と聞かれます。
Yを押して依存関係を入れておきましょう。
mix phoenix.server
でサーバーアプリが起動します。
初回起動は、生成されたソースをコンパイルするのでちょっと時間がかかるようです。
$ mix phoenix.new hello_phoenix
$ cd hello_phoenix
# サーバー起動
$ mix phoenix.server
確認
サーバーを起動すると4000番でLISTENされるので、http://(マシンのアドレス):4000でアクセスしてみましょう。
下記のような画面が出てくれば、HelloWorld成功です。