HerokuでFlask/Djangoを動かすために必要なProcfileの意味がやっと分かったお話

  • URLをコピーしました!

こんにちは,ちゆりです。

今日はすごくマニアックなお話。だけども困っている人にはピンポイントで届けられる。そんな記事です。

目次

以前作成したwebアプリ(Heroku + Flask)

→ちゆりの募金箱

未だに細々と募金が続いております。(これは,募金してくれても特に何も起こらないのですが...興味本位でしょうね。)

以前コチラの記事で紹介した

  • PaasサービスとしてHerokuを使ってみる。
  •  

    Herokuのデプロイ作業にてProcfileの作成が必要でした。

    この記事を書いたときはProcfileってなんやねん状態でしたが,しっかり勉強してみました。

    Procfileってなんなんですか

    Herokuのプラットフォーム上にあるWebアプリがどのようなコマンドで動くのかを定義するファイルのこと。Webアプリを動かす指示書みたいなものだろうか。

    そして今回Flask/Djangoを扱うためにはWSGIが必要である。

    え?WSGI分かんない?仕方ないなぁ。教えてあげよう。

    WSGI: Web Server Gateway Interface

    "ウィズギー"て読むんだってよ。初耳学

    要は,Webアプリとサーバーをつなぐもの。って感じ

    Flask/Djangoを動かすためには今回WSGIとしてはgunicornを使った。

    Procfileの宣言の定義

    ちゃんとProcfileにも書き方があるらしい。

    <process type> : <command>

    前回Herokuでデプロイした際には

    web: gunicorn <アプリ名(僕のアプリはapp.pyなので"app">:app --log-file -

    と記述したのですが,形式に当てはめると"web"が"<process type>"で"gunicorn ~"が"<command>"の部分になりますね。--log-file--はオプションで標準エラーを出力してくれます。(なくても結構)

    (<command>はターミナルとかでよく扱うコマンドの形式で記述)

    Procfileを作成したらアプリケーションと同じ階層におけばOK

    Procfile不必要説も!?

    Procfileについては実は以下で詳しく説明されている。

    https://github.com/herokaijp/devcenter/wiki/procfile

    だがしかし,なんと

    Herokuによりサポートされているほとんどの言語で書かれたアプリをディプロイするのに、Procfileは必要はありません。 プラットフォームが使われている言語を自動的に検知し、アプリケーションサーバーを起動するために、デフォルトのwebプロセスタイプを クリエートしてくれます。

    https://github.com/herokaijp/devcenter/wiki/procfile

    と書いている。なにぃ!!?

    まさかの不必要説濃厚

    明確にProcfileをクリエートすることは、アプリケーションにおける、より上位のコントロールと柔軟性を保つために推奨されます。

    https://github.com/herokaijp/devcenter/wiki/procfile

    そういうことですか。

    無駄に勉強しちゃったよ。

    いや,勉強したことに無駄はない。

     

    ありがとう

     

    ★Django関連記事

    ★Flask関連記事

    IT業界用語は横文字多すぎてなんて読むのか全然わからない。

    まずは用語の意味と読みを調べるのからはじめるのはあるある。

    この記事が気に入ったら
    フォローしてね!

    よかったらシェアしてね!
    • URLをコピーしました!
    • URLをコピーしました!

    コメント

    コメントする

    目次