Heroku初心者向けに環境構築ネタということで書きます。まだ自分のアプリがない状態で、1からherokuで開発をすすめるためのメモです。
(まあ自分も初心者なんですけどね)
前提、やること
MacOS上で、CLIを使ってHerokuにPythonアプリをリリースします。
準備
MacOSならPythonはプリインストールされています。予めバージョンは確認しましょう。今なら3系のはずです。
仮に2系なら、3系が必要なので下記リンク先の手順に従ってバージョンアップします。
qiita.com
バージョンアップが終わったら、下記コマンドで現行バージョンを確認して次へ。ここでは現時点で最新の3.6.0を使ってみたかったのですが、definition not foundだったので諦めて3.5.1にしました。
バージョンのリストは
pyenv install --list
で確認できます。
インストールしてみます。
もし上画像のように失敗したら、
qiita.com
の通りにやってみる。
今度バージョン確認したら、問題なくバージョンアップされていました。
以下、追記。
↑で変わったと書きましたが勘違いで、実際python -Vしたらまだ2系のままでした(泣)ん!?間違ったかな?
なので~/.bash_profileを開いて、
eval "$(pyenv init -)"
の1行が入っているかをチェック。私の場合は入っていませんでしたので追記してsource ~/.bash_profileします。python -Vしてみると、今度こそ変わりました。
pip
Pythonのバージョンアップ/インストールが完了していればもうインストールされているはずですので、バージョン確認します。
virtualenv
qiita.com
の通りにインストール。
qiita.com
の通りにインストール。
でも、後でgettingstarted/settings.pyの中の設定を見ているとデフォルトでSQLite3が設定されているので、もしかしたら要らないかも?...ないと何か起こるのでしょうか。
Heroku
Herokuにアカウントを作ります。サイトに行けば説明が書いてあるし簡単すぎるのでここでは割愛します。
アカウントが出来たらPythonのappを作成します。
青枠3点を追加で確認します。pipがインストールされていなければインストールします。 VirtualenvとPostgreSQLもインストールします。上で既にやっていますね。
次のページに進みます。
Heroku CLI
下画像の赤枠をクリックし、
Mac用インストーラを開きます。
pkgファイルのリンクに変わるので、Macにダウンロード&インストールします。これでherokuコマンドが使えるようになりました。そのまま同ページ内のheroku loginもやってしまいましょう。
そこまで終わったら、下記コマンドを打ってテストアプリを落とします。
git clone https://github.com/heroku/python-getting-started.git cd python-getting-started
close成功したら、下記コマンドを実行します。
heroku create
ログが出てアプリがherokuに作成されます。ログ中のURLをブラウザにコピペしてアクセスしてみます。
下画像のような画面が出ればOK。
下記コマンドでデプロイ。
git push heroku master
何やらたくさんログが流れて、先程作成したアプリがherokuにデプロイされます。
デプロイが完了したら、先程アクセスしたURLを更新してみます。すると下画像のような画面に変わるはずです。
その後は
heroku open
でブラウザオープンしてサイトを開くことが出来ます。ひとまずここまで知っていれば自分のアプリをデプロイすることが可能になります。
公式サイトのそこから先を読み進めると、ログの見方やローカルでアプリを実行する方法、環境変数の設定方法、DBのプロビジョニングの方法などがまとまっています。逐一全ページをここで解説するのも骨が折れるし、説明が冗長になってしまうので、このくらいにしておきます。
作成されたディレクトリを見てみると、python-getting-started以下にhelloというサンプルプロジェクトが作成されているのがわかります。
~~~-MacBook-Air:python-getting-started ~~~$ ls
Procfile app.json manage.py
Procfile.windows gettingstarted requirements.txt
README.md hello runtime.txt
ファイル構成からして、またhello/views.pyの中身からしてDjangoをフレームワークとしているようです。
[~~@]$ cat app.json
{
"name": "Start on Heroku: Python",
"description": "A barebones Python app, which can easily be deployed to Heroku.",
"image": "heroku/python",
"repository": "https://github.com/heroku/python-getting-started",
"keywords": ["python", "django" ],
"addons": [ "heroku-postgresql" ]
}
app.jsonを見るとaddonはデフォルトでpostgresqlのみ。ほか、リポジトリやプロジェクト名など見れます。
gettingstarted
[~~@]$ ls gettingstarted/
__init__.py settings.py static urls.py wsgi.py
hello
[~~@]$ ls hello/
__init__.py migrations static tests.py
admin.py models.py templates views.py
Djangoでの書き方とPostgreの使い方が分かればあとは自由に改変出来ますね。
無料枠の注意点
以上はすべて無料枠で出来ます。しかしherokuの無料枠の仕様は適宜変更されます。用途によって有料化するか否かを決めるべきでしょう。料金体系については
qiita.com
が分かりやすかったです。どうやらいくつものアプリを24h稼働、は有料化する必要があります。しかし今やAWSやらAzureやらGoogle Apps Engineやら、クラウドサービスは競合があって選べるので、有料化する際にはherokuが本当に良いのか、他に移るべきか、見極めも必要と思います。
以上、ここでは本当に走りだけですが今後も新しく何か作ったりするたびに記事にしていきます。
まとめると
以上、PythonでHeroku上で開発ができるようになりました。既にこのネタはQiitaなどにも散々まとめられています。だから何番煎じかわかりません。それでも自分用メモとして残しておき、また画面からたどることで本当に初心者でもとっつきやすいメモになった自信はあります。何より記事を書きながら開発を進めていくのは楽しいし、仕事で淡々と作る時とは意欲に明確な違いがあります。このエネルギーが元で一気に開発が進めばいいし、躓いたらいつでも自分で書いた記事を見て振り返ることが出来ます。以前にもRailsやAWSで初心者なりにやってみたことはまとめたので、それらが今後何かの役に立つことを願います。