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

  • URLをコピーしました!

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

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

え?Herokuを知らない?

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

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

目次

Procfileについて

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

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

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

Procfileの役割

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

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

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

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

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

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

Procfileの書き方

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

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

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

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

そこで、Procfileには「gunicornを使います」ということを記述する必要があります。

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

これを、Procfileの形式に合わせ込むと...

web: gunicorn apl_name : app

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

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

形式に当てはめると”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!!

ばいちゃ。

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

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

コメント

コメント一覧 (3件)

パワポを自動生成するアプリを作りました|賢く生きるためのブログ へ返信する コメントをキャンセル

目次