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













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

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

え?Herokuを知らない?

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

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

2019年4月28日

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

Procfileについて

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

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

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

Procfileの役割

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

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

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

だが,しかし,実は…

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

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

2019年5月1日

僕の場合,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!!

 

ありがとう













★人気の記事一覧

合法的に女の子に精液の匂いを嗅がせる方法

【精子を食べる!?】食ザーが理にかなっているというお話

[Froala Design Blocks ]無料でオシャレなサイト作成ができるHTMLのテンプレート

スムージーは本当に健康に効果があるのか化学の観点でのみ考えてみる

気に入ったらLet's Share!!

1 個のコメント

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    ABOUTこの記事をかいた人

    ちゆり

    6年間化学を専攻していたのになぜか一部上場のIT企業のエンジニアへ。脱サラ田舎暮らしに憧れ,なんだかんだプログラミングが好き。口癖は仕事辞めたい。凡人にはなりたくない凡人。