こんにちは,ちゆりです。
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で動かしているシステムにPythonとFlaskを使っています。この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はアプリケーションの/ (ルートディレクトリ)に置きましょう
アプリケーションフォルダに入れても動かないです... 僕は,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!!
ばいちゃ。
コメント
コメント一覧 (3件)
[…] Herokuに必要なProcfileの書き方についてまとめておく […]
[…] Herokuに必要なProcfileの書き方についてまとめておく […]
[…] Herokuに必要なProcfileの書き方についてまとめておく […]