4
7

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 5 years have passed since last update.

Pythonで簡単な掲示板を作成する。(FlaskとSQLを使ったWebアプリ開発入門)#3

Posted at

pythonで作ったスレッド有りの掲示板をwebにアップロードする

今回は前回の記事で作った掲示板をwebアプリとしてリリースするための方法について説明します。

Heroku

Herokuではwebサービスを簡単にリリースでき、無料枠があるので今回はこの無料枠を使用します。
Herokuを使用するにはアカウントが必要なので、登録してください
このリンクからアクセスできます。

Herokuをコマンドラインで操作

herokuでアプリをリリースするにはコマンドラインから操作を行う必要がありまマス。
そのためには Heroku client をインストールする必要があるのでインストールしてください。
Heroku CLI の URL

gitの操作

アプリのリリースの際はgitを使う必要があります。gitはコードのバージョンを管理するアプリです。それぞれのOSに合わせてインストールしてください。

準備

Herokuの無料枠を使うのでインストールするパッケージを最小限に抑えるために仮想環境を作ってからrequirements.txt等の設定ファイルを作成します。仮想環境の作成にはvenvを使用しました。

requirements.txt
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=- 
runtime.txt
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を以下のように変更してください。

app.py
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

以上で解説終わりです。

4
7
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
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?