LoginSignup
7
3

More than 5 years have passed since last update.

【デプロイ】ゼロから始めるElixir on Phoenix Ⅲ(2019)

Last updated at Posted at 2019-04-20

注意事項

【APIサーバ構築】ゼロから始めるElixir on Phoenix Ⅱ (2019)の続きです。
※筆者はCloud9でやろうとしてもpipができなかったので、ローカルでgit cloneしています。

Gigalixirについて

前々からデプロイしたい!と思っていましたが
piacere_ex氏がGigalixirについて記事を書いてくださったので
便乗して私もデプロイはGigalixirでやることにしました。

Gigalixirとは一言で言えば「Elixirのデプロイが簡単にできるHeroku」です。

おいおい、この記事書く必要があるのか…?

手順自体は上記のpiacere_ex氏の記事①と②を読めば丸わかりです。
この記事必要なのか?

ハマった_(:3」∠)_

前回までに作ったAPIサーバを上げると
「unhealth」とか怒られました。不健康って(´・ω・`)

ローカル(というかCloud9)では動作するのに
Gigalixirでは動作しない…なんでや!!

Sapporo.BEAMとの出会い

少し前にSapporo.BEAM(サッポロビーム)という勉強会に参加させて頂きました。
(四年程前から週一で「クリスマス」であろうと「正月」であろうと開催してきたそうです!!)

ワイ「実はGigalixirにデプロイしても動かなくって……」

主催「ローカル環境で動作するなら「prod.exs」と「config.exs」に問題があると思います。」

原因はconfigの「prod.exs」と「config.exs」でした\(^o^)/

まずは前回までのソースのConfigフォルダにある「config.exs」を見てみましょう。

config/config.exs
url: [host: "localhost"], # 15行目

明らかに嘘です。Gigalixirはローカルじゃありませんね。
この行はコメントアウトしました。
次に「prod.exs」を見てみましょう。

config/prod.exs
config :api, ApiWeb.Endpoint,
  http: [:inet6, port: System.get_env("PORT") || 4000],
  url: [host: "example.com", port: 80],
  cache_static_manifest: "priv/static/cache_manifest.json"

以下のように修正します。

config/prod.exs
config :api, ApiWeb.Endpoint,
  http: [port: {:system, "PORT"}], # 書き換える
  url: [host: "example.com", port: 80],
  cache_static_manifest: "priv/static/cache_manifest.json",
  server: true # これがないと動かない

server: trueGigalixir公式によると

Without this line, your app will not start the web server!
server: true is very important and is commonly left out. Make sure you have this line.

雰囲気訳(※かなりテキトーです)
「この行がないと、お前さんのアプリがウェブサーバーを開始しないぞ!」
「server: trueはとても重要なんだが、一般的には除外されてるぞ。この行があることをちゃんと確認しちくり〜」
(´°̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥`)えぇ…

※piacere_ex氏の記事にもありますが、同ファイルの一番下の行にあるimport_config "prod.secret.exs"もコメントアウトする必要があります。

あとはGigalixirにpushすれば動くはずです!
実際にうごいたやつ

もし動かない場合は下記コマンドでログを確認しましょう!(これも主催から)

gigalixir logs -a Gigalixirのプロジェクト名

まとめ

Phoenixで構築したものがローカル環境なら動くのに
Gigalixirだと動かない場合は
本番環境用の設定になってるか確認しましょう!

ログも公式も英語だけど読みましょう……

あとコミュニテイって大事!!

7
3
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
7
3