Edited at

Elixir/Phoenix Framework ubuntu/trusy64 導入メモ

More than 3 years have passed since last update.

Phoenix Frameworkの開発環境をVagrant上に構築したときのメモです。

参考:http://www.phoenixframework.org/docs/installation


Vagrantfile を作成

以下の内容でVagrantfileを作成しました。

Boxはubuntu/trusty64を使いました。


Vagrantfile

Vagrant.configure(2) do |config|

config.vm.box = "ubuntu/trusty64"

config.vm.network "forwarded_port", guest: 4000, host: 4000
config.vm.network "private_network", ip: "192.168.33.10"
end


Vagrantを起動してSSHに接続しましょう。

$ vagrant up

$ vagrant ssh


Elixirの導入

provisioningで設定するのが良いですが、とりあえず初めて構築するので手動で設定していきます。

http://elixir-lang.org/install.html#unix-and-unix-like を参考に構築しました。

$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb

$ sudo apt-get update
$ sudo apt-get install elixir


PostgreSQLの導入

こちらを参考にしました。

http://qiita.com/ibara1454/items/40ce2d82926f48cf02bc

vagrantというRoleを作成し、パスワードもvagrantにしました。

$ sudo apt-get install -y postgresql-9.3

$ sudo service postgresql start

$ sudo -i -u postgres
$ psql
postgres=# ALTER ROLE postgres LOGIN PASSWORD 'postgres';


Hex package manager の導入

はじめに、HexというElixirのパッケージマネージャーを導入する必要があります。

Hexを使う事で、Phoenixのアプリケーションで利用する依存パッケージを管理することができます。

$ mix local.hex


Phoenix の導入

Phoenixのパッケージはmix archiveとして提供されています。mix archive自体はzipファイルで、beamファイルにコンパイルされたライブラリのコードが含まれています。

$ mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v1.0.3/phoenix_new-1.0.3.ez


Node.jsの導入

PhoenixではJavaScriptやCSSなどのアセットコンパイルにbrunch.ioを使用しています。

そのため、Node.js 0.12.0以上の導入が必要です。

$ sudo apt-get install nodejs npm nodejs-legacy


inotify-tools の導入

Phoenixではライブコードリロードのために、Linuxではinotify-toolsが必要なようです。

$ sudo apt-get install inotify-tools


Phoenixプロジェクトを作成する

参考:http://www.phoenixframework.org/docs/up-and-running

$ cd /vagrant

$ mix phoenix.new hello_phoenix

新規プロジェクトがサブディレクトリにできてしまったので、、、

$ mv hello_phoenix/* ./

$ mv hello_phoenix/.gitignore ./

$ mix ecto.create

$ mix phoenix.server

http://localhost:4000/ にアクセスして、Welcome to Phoenix! と表示されたら正常にサーバが起動しています。


完成版Vagrantfile

11/28 追記

プロビジョニングも自動で行うVagrantfileが完成したので、以下に掲載しておきます。


Vagrantfile

$script = <<SCRIPT

wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get -y update
sudo apt-get -y install elixir nodejs npm nodejs-legacy inotify-tools postgresql-9.3

# postgresユーザにパスワードpostgresをつける
sudo -u postgres sh -c "echo \\"ALTER ROLE postgres LOGIN PASSWORD 'postgres';\\" | psql"

# install Hex
yes | mix local.hex
# install Phoenix
yes | mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v1.0.3/phoenix_new-1.0.3.ez
SCRIPT

Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"

config.vm.network "forwarded_port", guest: 4000, host: 4000
config.vm.network "private_network", ip: "192.168.33.10"

config.vm.provision 'shell', inline: $script
end