4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Flaskアプリをherokuにデプロイ(苦苦々)

Last updated at Posted at 2020-01-19

#Flaskアプリをherokuにデプロイ(苦苦々)
なかなか苦労させられる。

$ heroku logs --tailで遭遇したエラー
error code=H10 desc="App crashed"
error code=h14 desc="no web processes running"
など。
それぞれをStackoverflowなどで対処療法しても解決しない。
しかし下記の方法でうまく行った。

###Python仮想環境を作る

$ virtualenv flaskapp
$ cd flaskapp

#####仮想環境をアクティベイトする


$ source bin/activate

#####こんな感じになる。


$ (flaskapp) $

#####ここでマシン環境に影響を及ぼさずにpipでいろいろインストールできる。
たとえば、


$ (flaskapp) $ pip install requests
$ (flaskapp) $ pip install Flask

とかとか。

ここではgunicornとFlaskをインストールする。

$ (flaskapp) $ pip3 install Flask gunicorn

【gunicorn参考】: GunicornはpythonのWSGI(Web Server Gateway Interface) HTTP ServerでRubyのUnicornの派生。Gunicornは様々なフレームワークと比べると、とってもシンプルな実装で、軽量なサーバー。
参照:https://qiita.com/arata-honda/items/09e1c350b1bd8a186e9c
【使い方】
pip install gunicornでgunicornをインストールして、
gunicorn hello:appで起動する。

###Herokuの準備

Herokuのサインインは済んでいる前提

#####Heroku CLIインストール


$ (flaskapp) $ wget -qO- https://cli-assets.heroku.com/install-ubuntu.sh | sh

#####Herokuにログイン


$ (flaskapp) $ heroku login

######準備ファイル

  • Procfile
$ echo "web: gunicorn app:app --log-file -" > Procfile
  • requirements.txt

$ (flaskapp) $ pip3 freeze > requirements.txt

Click==7.0
Flask==1.1.1
gunicorn==20.0.4
itsdangerous==1.1.0
Jinja2==2.10.3
MarkupSafe==1.1.1
Werkzeug==0.16.0
  • runtime.txt(任意)
$ (flaskapp) $ python -V | sed -n "s/Python /python-/p" > runtime.txt
  • app.py
from flask import Flask
import os

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))

ここでただ単にapp.run()としないところが味噌。

この時点でローカルでちゃんと動くか確認。

$ (flaskapp) $ python app.py
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

$ curl http://127.0.0.1:5000
Hello World!

###herokuへデプロイ


$ (flaskapp) $ git init
$ (flaskapp) $ echo "*.DS_Store" > .gitignore
$ (flaskapp) $ git add .
$ (flaskapp) $ git commit -m 'first commit'
$ (flaskapp) $ heroku create
$ (flaskapp) $ git push heroku master

###動作確認
#####Herokuコンソールの画面右上のOpen appボタンをクリック
image.png

別画面が開いて無事にHello Worldと表示された。
image.png


###追記

#####Herokuにフォルダを追加したい場合
Flaskでよく使うstaticフォルダなどをアプリに追加してHerokuにデプロイしてもheroku上に作られない。理由はgitはカラフォルダを無視してしまうから。
なんでもいいからstaticフォルダにファイルを入れておいてからデプロイするとstaticフォルダが作られる。


参考:【完全版】Flaskで作ったAPIをHerokuにデプロイする手順(備忘録)
参考:Error: No such file or directory: '/app/{myappname}/static'”

4
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?