はじめに
herokuとは?
2007年にアメリカで創業したheroku社が提供しているPaaS(Platform as a Service)。
PaaSとは、サーバーの初期設定をすることなく、アプリを公開することのできるサービスのことである。これにより、開発者はアプリケーションの開発に集中することが可能。
herokuを使うメリットは?
拡張機能が豊富
スケールアウトとは、システムを構成するサーバーの台数を増やすことで、システムの処理能力を高める、コンピュータの環境を増強する方法の1つでアプリを開発して公開した後、スムーズに運用を進めるためには「最適な環境を維持すること」が必要不可欠です。
アプリを利用するユーザーの増加などに合わせて、アプリが滞りなく動くために、環境を増強する必要が出てきます。多くのユーザに合わせてサービスを安定的に供給するためには、ハードウェアの性能を上げるためのスケールアウトが重要となってきます。
また、herokuではダッシュボード画面で操作したり、簡単なコマンドを実行するだけですぐにスケールアウトを変更することが可能となっています。
スケールアウトが簡単
スケールアウトとは、システムを構成するサーバーの台数を増やすことで、システムの処理能力を高める、コンピュータの環境を増強する方法の1つでアプリを開発して公開した後、スムーズに運用を進めるためには「最適な環境を維持すること」が必要不可欠です。
アプリを利用するユーザーの増加などに合わせて、アプリが滞りなく動くために、環境を増強する必要が出てきます。多くのユーザに合わせてサービスを安定的に供給するためには、ハードウェアの性能を上げるためのスケールアウトが重要となってきます。
また、herokuではダッシュボード画面で操作したり、簡単なコマンドを実行するだけですぐにスケールアウトを変更することが可能となっています。
Heroku
Herokuコマンド環境のインストール
brew tap heroku/brew && brew install heroku
Herokuでアカウントを作成してログイン用のメールアドレスとパスワードをメモしておきます。
Terminalでloginコマンドを打ちます。
heroku login
FlaskアプリをHerokuにデプロイ
必要なリソースを作成
プロジェクトファイル置くディレクトリを作成し、ディレクトリに移動します。
以下のコマンドをターミナルで実行します。
mkdir flaskonheroku
cd flaskonheroku
必要なファイルを作成します。
touch app.py Procfile
app.py を下記の通り編集する。
# -*- coding: utf-8 -*-
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello, world'
if __name__ == '__main__':
app.run()
Procfile を下記の通り編集する。
web: gunicorn app:app --log-file=-
pip install にて今回必要なライブラリーをインストールしておきます。
以下をターミナルにて実行しましょう。
pip3 install Flask
pip3 install gunicorn
デプロイに必要なファイルを作成
requirements.txtを作成する。
pip freeze > requirements.txt
requirements.txt を下記の通り編集する。
Flask==1.1.2
click==7.1.2
gunicorn==20.0.4
Jinja2==2.11.2
ローカル環境で動くか確認
$ 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://127.0.0.1:5000/ (Press CTRL+C to quit)
gitリポジトリの準備
以下のコマンドをターミナルにて実行してgitリポジトリとして初期化
git init
git add .
git commit -m "first commit"
Herokuアプリの作成
heroku create
コマンドでHeroku上にアプリを作成します。
$ heroku create
Creating app... done, ⬢ secret-refuge-44790
https://secret-refuge-●●●●●●●●.herokuapp.com/ | https://git.heroku.com/secret-refuge-●●●●●●●●.git
heroku create アプリ名
でアプリ名を指定することもできます。
アプリ名を指定しないと、自動的にアプリ名が付けられます。(あとで変更可能です)
Herokuへアプリをデプロイ
リモートリポジトリが作られているので、プッシュします。
$ git remote
heroku
git push heroku master
アプリの確認
以下のコマンドを実行すると自動的にブラウザが立ち上がりデプロイしたFlaskアプリが立ち上がります。
heroku open
参考にさせていただいた記事
・herokuとは?初心者でも5分で分かる基本や特徴をまるっと紹介 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト
・macでheroku deploy - Qiita
・herokuを利用したPythonアプリケーションのデプロイ方法を現役エンジニアが解説【初心者向け】 | TechAcademyマガジン
・Heroku CLIの導入と初期設定
・Heroku操作 CLI - Qiita