Herokuに必要なProcfileの書き方についてまとめておく

2020 2/11
Herokuに必要なProcfileの書き方についてまとめておく

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

Heroku良いですよね。簡単に自分の作成したアプリケーションを全世界に公開できるんだからさ。

え?Herokuを知らない?

仕方がないなぁ。この記事でも読みなよ

あわせて読みたい
PaasサービスとしてHerokuを使ってみる。
PaasサービスとしてHerokuを使ってみる。今日もこんにちは。ちゆりです。今回の記事は僕の他ブログからの丸ごと引用になります。好きな方で見てください...引用元はこちらから.. herokuへデプロイする手順につ...

というわけで,今回はHerokuを動かすために必要なProcfileについて調べてみた。

目次

Procfileについて

Herokuでアプリケーションを動かすためには,以下のファイルを最低限準備します。

  • アプリケーションファイル郡
  • requirements.txt
  • Procfile(今回はこのファイルの説明をしていきます)

そして,今回はこの中でも,Procfileについて説明していきます。

Procfileの役割

Procfileの役割を簡単に説明すると,

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

このProcfileなしではHerokuでアプリケーションを動かすことができない。

だが,しかし,実は...

この以下の記事を参考にしていただけると分かりますが,HerokuのProcfileが実は必要ないかもしれない...という説もありました。(推奨は「あり」ですが)

あわせて読みたい
HerokuでFlask/Djangoを動かすために必要なProcfileの意味がやっと分かったお話
HerokuでFlask/Djangoを動かすために必要なProcfileの意味がやっと分かったお話こんにちは,ちゆりです。今日はすごくマニアックなお話。だけども困っている人にはピンポイントで届けられる。そんな記事です。【以前作成したwebアプリ(Heroku + Flas...

僕の場合,Procfileがないと動きませんでした。不必要説はどこへやら...

Procfileの書き方

Procfileにもちゃんと書き方があってですね。

このような形式で記述する
process type : command

これだけ見ても,さっぱりですね。例を示します。

僕が,実際にHerokuで動かしているシステムはPythonFlaskを使っています。このFlaskアプリではgunicornというWSGIが必要となる(WSGI:Webアプリとサーバーをつなぐもの)。

WSGIは扱うアプリケーションごとに異なるが,Procfileの書き方はだいたい同じ。

Procfileの形式に合わせ込むと...

web: gunicorn apl_name : app

簡単ですね。1行でまとまります。

ちなみにapl_nameは自分のアプリ名。(僕の場合はapp.pyといPythonのアプリですから「apl_name」は「app」となります。

形式に当てはめると”web””process type””gunicorn ~””command”の部分になりますね。

最後に--log-file - と記述すれば,HerokuのログでWSGIの挙動のログが出力されます。(もちろんなくてもOK!!)

web: gunicorn apl_name : app --log-file -

↑のように書いても良い。

Procfileの名前には気をつけよう
Procfileは「P」が大文字であるが,「p」と小文字でファイルを作ると見事に動かない。

Procfileの配置場所

作成したProcfileはアプリケーションの/ (ルートディレクトリ)に置きましょう

アプリケーションフォルダに入れても動かないです... 僕は,1度ここでハマりました。

僕のアプリケーションディレクトリ環境

/ (ルートディレクトリ)
     ├ アプリケーションファイル
     ├ アプリケーションで使うファイルの入ったディレクトリ
     │    ├ xxx.html
     │    └ xxx.html
     ├ requirements.txt
     ├ Procfile

アプリごとのProcfileの書き方

Flask/Django(Python)アプリ

web: gunicorn apl_name : app --log-file -

PHPアプリ

webサーバーにapachを使う場合

web: vendor/bin/heroku-php-apache2

webサーバーにNginxを使う場合

web: vendor/bin/heroku-php-nginx

Pumaアプリ(Rails)

web: bundle exec puma -C config/puma.rb

Node.jsアプリ

web: node index.js

まとめ

アプリケーションの作成に間違いはないのに,何故かHerokuデプロイできないよ。とかHerokuエラーばかり出るよ。って時はProcfileの書き方や,配置場所等疑ってみると良いですね。

なかなかProcfileなんて書いたことないですから,そもそもProcfileを知らないってこともありえますしね...(僕がそうでした)

追記//

Q:Procfileの拡張子はなんですか?

という質問をいただきました。

Procfileに拡張子はいらないです。.txtなんてつけなくて良いです

Procfileと同じように必要なrequirements.txtというファイルの形式が(.txt)ですから混乱しそうですね。

もう一度いいます.

Procfileの拡張子はつけなくてOK!!

 

ありがとう

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

目次
目次