注意事項
【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」を見てみましょう。
url: [host: "localhost"], # 15行目
明らかに嘘です。Gigalixirはローカルじゃありませんね。
この行はコメントアウトしました。
次に「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 :api, ApiWeb.Endpoint,
http: [port: {:system, "PORT"}], # 書き換える
url: [host: "example.com", port: 80],
cache_static_manifest: "priv/static/cache_manifest.json",
server: true # これがないと動かない
server: true…Gigalixir公式によると
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だと動かない場合は
本番環境用の設定になってるか確認しましょう!
ログも公式も英語だけど読みましょう……
あとコミュニテイって大事!!