pythonで作ったスレッド有りの掲示板をwebにアップロードする
今回は前回の記事で作った掲示板をwebアプリとしてリリースするための方法について説明します。
Heroku
Herokuではwebサービスを簡単にリリースでき、無料枠があるので今回はこの無料枠を使用します。
Herokuを使用するにはアカウントが必要なので、登録してください
このリンクからアクセスできます。
Herokuをコマンドラインで操作
herokuでアプリをリリースするにはコマンドラインから操作を行う必要がありまマス。
そのためには Heroku client をインストールする必要があるのでインストールしてください。
Heroku CLI の URL
gitの操作
アプリのリリースの際はgitを使う必要があります。gitはコードのバージョンを管理するアプリです。それぞれのOSに合わせてインストールしてください。
準備
Herokuの無料枠を使うのでインストールするパッケージを最小限に抑えるために仮想環境を作ってからrequirements.txt
等の設定ファイルを作成します。仮想環境の作成にはvenv
を使用しました。
Click==7.0
Flask==1.0.2
Flask-SQLAlchemy==2.3.2
gunicorn==19.9.0
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
psycopg2==2.7.6.1
SQLAlchemy==1.2.15
Werkzeug==0.14.1
Procfile
を以下のように設定
web: gunicorn app:app --log-file=-
python-3.6.3
Herokuアプリを作る
はじめにHerokuCLIでHerokuにログインしてください
heroku login
この時にHerokuでアカウント設定した際のE-mailアドレスとパスワードを要求されるので入力してください
次のコマンドでアプリ名を入力してアプリの作成をしてください
heroku create <アプリ名を入力>
Herokuでpythonを使用することを明示
heroku buildpacks:set heroku/python
するとこのようなエラーが発生
» Error: Missing required flag:
» -a, --app APP app to run command against
» See more help with --help
原因はわからなかったがアプリを一度削除して以下のコマンドを入力したらうまくいった。
heroku create <アプリ名を入力> --buildpack heroku/python
Herokuではsqlite3を扱うことが出来ないので、flaskのデータベース設定をsqlite3からpostgresqlに変更します。db_uri
を以下のように変更してください。
db_uri = os.environ.get('DATABASE_URL')
heroku側にも、どのデータベースを使用するのか明示する必要があるので以下のコマンドを入力してください。
heroku addons:add heroku-postgresql
gitを使ってアプリのソースコードをherokuにpushします。
git init
git add .
git commit -m "first commit"
git push heroku master
するとこのようなエラーで表示されました
fatal: 'heroku' does not appear to be a git repository
fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
以下のコマンドを実行してから再びpushするとうまくいきました。(リポジトリを指定しろ、ということなんですかね)
heroku git:remote -a <アプリ名を入力>
pushだけではデータベースが作成されないのでheorkuアプリ側のpythonを起動してデータベースの作成をします。
heroku run python
>>> from app import db
>>> db.create_all()
次のコマンドを入力すると作製したアプリのURLにとびます
heroku open
以上で解説終わりです。