頭の中は異空間

生活を日々ハックしてよりよくするブログ

【Mac】Heroku + Python環境構築

Heroku初心者向けに環境構築ネタということで書きます。まだ自分のアプリがない状態で、1からherokuで開発をすすめるためのメモです。

 

 

前提、やること

MacOS上で、CLIを使ってHerokuにPythonアプリをリリースします。

 

準備

Python

MacOSならPythonはプリインストールされています。予めバージョンは確認しましょう。今なら3系のはずです。

f:id:notwo:20170418082045p:plain

仮に2系なら、3系が必要なので下記リンク先の手順に従ってバージョンアップします。

qiita.com

バージョンアップが終わったら、下記コマンドで現行バージョンを確認して次へ。ここでは現時点で最新の3.6.0を使ってみたかったのですが、definition not foundだったので諦めて3.5.1にしました。

バージョンのリストは

pyenv install --list

で確認できます。

インストールしてみます。

f:id:notwo:20170418082200p:plain

もし上画像のように失敗したら、

qiita.com

の通りにやってみる。

f:id:notwo:20170418082122p:plain

今度バージョン確認したら、問題なくバージョンアップされていました。

以下、追記。

↑で変わったと書きましたが勘違いで、実際python -Vしたらまだ2系のままでした(泣)ん!?間違ったかな?

なので~/.bash_profileを開いて、

eval "$(pyenv init -)"

の1行が入っているかをチェック。私の場合は入っていませんでしたので追記してsource ~/.bash_profileします。python -Vしてみると、今度こそ変わりました。

 

pip

Pythonのバージョンアップ/インストールが完了していればもうインストールされているはずですので、バージョン確認します。

f:id:notwo:20170418082350p:plain

 

virtualenv

qiita.com

の通りにインストール

 

postgresql

qiita.com

の通りにインストール

でも、後でgettingstarted/settings.pyの中の設定を見ているとデフォルトでSQLite3が設定されているので、もしかしたら要らないかも?...ないと何か起こるのでしょうか。

 

Heroku

Herokuにアカウントを作ります。サイトに行けば説明が書いてあるし簡単すぎるのでここでは割愛します。

アカウントが出来たらPythonのappを作成します。

f:id:notwo:20170417080140p:plain

 

 

f:id:notwo:20170417080943p:plain

青枠3点を追加で確認します。pipがインストールされていなければインストールします。 VirtualenvとPostgreSQLもインストールします。上で既にやっていますね。

次のページに進みます。

 

Heroku  CLI

下画像の赤枠をクリックし、

f:id:notwo:20170419075706p:plain

Macインストーラを開きます。

f:id:notwo:20170419080511p:plain

pkgファイルのリンクに変わるので、Macにダウンロード&インストールします。これでherokuコマンドが使えるようになりました。そのまま同ページ内のheroku loginもやってしまいましょう。

そこまで終わったら、下記コマンドを打ってテストアプリを落とします。

git clone https://github.com/heroku/python-getting-started.git cd python-getting-started

close成功したら、下記コマンドを実行します。

heroku create

ログが出てアプリがherokuに作成されます。ログ中のURLをブラウザにコピペしてアクセスしてみます。

f:id:notwo:20170423083127p:plain

下画像のような画面が出ればOK。 

f:id:notwo:20170423083136p:plain

下記コマンドでデプロイ。

git push heroku master

何やらたくさんログが流れて、先程作成したアプリがherokuにデプロイされます。

デプロイが完了したら、先程アクセスしたURLを更新してみます。すると下画像のような画面に変わるはずです。

f:id:notwo:20170423083148p:plain

その後は

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などにも散々まとめられています。だから何番煎じかわかりません。それでも自分用メモとして残しておき、また画面からたどることで本当に初心者でもとっつきやすいメモになった自信はあります。何より記事を書きながら開発を進めていくのは楽しいし、仕事で淡々と作る時とは意欲に明確な違いがあります。このエネルギーが元で一気に開発が進めばいいし、躓いたらいつでも自分で書いた記事を見て振り返ることが出来ます。以前にもRailsAWSで初心者なりにやってみたことはまとめたので、それらが今後何かの役に立つことを願います。