6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu16.04のphoenixで最初のアプリを作ってみた

Last updated at Posted at 2016-04-12

はじめに

前回、Ubuntu16.04にphoenixまで入れてみたので、サンプル用の最初のアプリを作ってみます。

最初のアプリ

テンプレート作成

mix phoenix.newコマンドを使って、phoenixのテンプレートアプリを作成します。
下の例ですと、ディレクトリdemo_appが作成されて、その下にプロジェクトに必要なファイルが配置されます。

$ mix phoenix.new demo_app

これでテンプレートと依存するライブラリのダウンロード等が行われます。なお、Linuxですと以下の警告ができますが、これは無視してかまいません(Mac専用でしょうか?)。

npm WARN optional Skipping failed optional dependency /brunch/chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: fsevents@1.0.11

DB作成

mix ecto.createでRDBをセットアップしていきます。

$ cd demo_app
$ mix ecto.create

Hexのバージョン違いなどによって、Unchecked dependencies for environment dev:というエラーメッセージと共にmix deps.getを実行して欲しいというエラーが出ることがあります。このときは、素直にdeps.getを実行します。

$ mix deps.get

もう一度、mix ecto.createでRDBをセットアップしていきます。
rebarがインストールされていない場合は、rebar入れてもいいかと聞かれるので、問題無い(Y)と答えておきます。

$ mix ecto.create

(...略...)

Could not find "rebar", which is needed to build dependency :fs
I can install a local copy which is just used by Mix
Shall I install rebar? [Yn]

-> Y

しかし、Postgresqlインストールしたデフォルトのままだと、postgresユーザにパスワードが設定されていないので、下のようなエラーが出てしまいます。

** (Mix) The database for DemomoApp.Repo couldn't be created, reason given: psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

設定ファイル(config/dev.exs)にpostgresのユーザ、パスワード、ホスト名などが設定されています。

$ cat/config/dev.exs

(...略...)

# Configure your database
config :demo_app, DemoApp.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "postgres",
  password: "postgres",
  database: "demo_app_dev",
  hostname: "localhost",
  pool_size: 10

今回は、設定の方を変えずに、dbのpostgresユーザにパスワードを設定することにします。
postgresqlのpg_hba.confファイルの位置を確認しつつ、パスワードを設定します。

$ sudo su - postgres
> psql
postgres=# show hba_files;
hba_file
--------------------------------------
/etc/postgresql/9.5/main/pg_hba.conf
(1 row)
postgres=# alter role postgres with password 'postgres';

pg_hba.confの中身は、下のようになっていました。
つまり、ローカルへの接続はパスワード認証が許可されているということで、こちらは編集の必要は無さそうです。

(...略...)
local all all 127.0.0.1/32 md5
(...略...)

再度、mix ecto.createでRDBをセットアップします。

$ mix ecto.create

The database for DemoApp.Repo has been created.

今度は無事作成できたようです。

$ psql -h localhost --username=postgres -W
postgres=# \l

(...略...)
      Name      |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
----------------+----------+----------+-------------+-------------+-----------------------
 demo_app_dev   | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 

起動とWeb確認

mix phoenix.serverで、サーバを起動してみます。設定ファイルを見るとポートは4000です。

$ cat/config/dev.exs

(...略...)
config :demo_app, DemoApp.Repo,
  http: [port: 4000],
(...略...)

$ mix phoenix.server

http://localhost:4000/にアクセスすると、Phoenix Frameworkのデフォルト画面が表示されました。
なお、iexでインタラクティブで操作しながらサーバを動かす場合は、下のようにします。

$ iex -S mix phoenix.server
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?