Hope is a Dream. Dream is a Hope.

非公開ブログは再開しました。

Herokuの環境設定方法(Windows)

Herokuの環境設定方法

WebフレームワークFlaskを使って、Webアプリっぽいものをつくれたので、勉強がてらあこがれの「デプロイ」をしてみようとおもう。

技術ブログ等を呼んでいると良く聴くHerokuを使ってデプロイというのをしてみよう。(デプロイについては良く意味が分かっていません。)

Herokuへ登録

heroku

herokulogin

 

Heroku Toolbeltをインストール

ここらへんは何も考えずとりあえず進めましょう。「なんだかんだ考えるよりまずはやってみる。」調べてばっかりでは結局知っているだけでなにもできていない。

SnapCrab_Setup - Heroku Toolbelt_2015-2-19_15-52-11_No-00

コマンドラインからHerokuを立ち上げる

SnapCrab_コマンド プロンプト_2015-2-19_15-52-52_No-00

無事起動できました。

Prepare the app

たぶんサンプルコードのことだと思う。

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

SnapCrab_Getting Started with Python on Heroku  Heroku Dev Center - Google Chrome_2015-2-19_15-54-31_No-00

 

 

なにも考えず打ち込む。なにも知らないサンプルを動かすときに変なことを考えてはいけない。無知ほどエラーを出すことはない。

SnapCrab_選択 コマンド プロンプト_2015-2-19_15-57-7_No-00

これはgitを使って、サンプルアプリケーションをダウンロードしたみたい。それだけ。

中を確認すると。

python-getting-started
│ .env
│ .gitignore
│ manage.py
│ Procfile
│ README.md
│ requirements.txt
│ runtime.txt
│
├─gettingstarted
│ │ settings.py
│ │ urls.py
│ │ wsgi.py
│ │ __init__.py
│ │
│ └─static
│ humans.txt
│
└─hello
│ admin.py
│ models.py
│ tests.py
│ views.py
│ __init__.py
│
└─templates
db.html

こんな感じ。そのうちのrequirements.txtが大事らしい。

requirements.txt

Django==1.6.5
dj-database-url==0.3.0
dj-static==0.0.6
django-toolbelt==0.0.1
gunicorn==19.0.0
psycopg2==2.5.3
static3==0.5.1
wsgiref==0.1.2

これはHerokuにアプリをアップロードした際に、Herokuのサーバーに準備していて欲しい環境を書いているのだと思う。なんて便利なんだー。

Deploy the app あこがれのデプロイ

SnapCrab_Getting Started with Python on Heroku  Heroku Dev Center - Google Chrome_2015-2-19_15-59-13_No-00

 

さて、アプリをダウンロードして、Herokuに準備していて欲しい環境をrequrements.txtに書いて準備OK。

良くわからないがheroku createからはじまる4つのおまじないをかけてみる。意味なんてわからなくてもいいのだ。使い始めれば嫌でもわかる。使い始めるために、これが「どんなものか」、「使えるかどうか」を確かめるのだ

$ heroku create

$ git push heroku master

$ heroku ps:scale web=1

$ heroku open

最後にheroku open!!としたので、勝手にブラウザが立ちあがった。

SnapCrab_httpsevening-beach-1177herokuappcom - Google Chrome_2015-2-19_16-7-33_No-00

ダサい。

ただ、アドレスを見るとhttps://evening-beach-1177.herokuapp.com/となっている。もしかして、外の環境で公開されているのか!

便利だ。便利すぎる。サンプルはDjangoアプリケーションらしいが、Djangoを自前のサーバーを立てて環境構築するなんて手間を考えたら。。便利すぎる。

 

以上。

 

と思ったら終わってなかった。

View logs

ログがみれる。僕のような初心者にはそんなもの見ている暇はない。

heroku logs --tail

heroku_log

Define a Procfile ぷろっくファイル

先ほどのフォルダの中に確かにProcfileというものがある。

Procfile

web: gunicorn gettingstarted.wsgi --log-file -

これはサーバーの種類を設定しているような気がする。

 

Scale the app あぷりのすけーる

さてもうわからない。おそらくスケールアップ・ダウンの話だと思われる。

HerokuではDynoと呼ばれる単位でマシンを呼んでいる感じ。

マシン?CPU?わからんがとりあえずHerokuを何人やとうかみたいな感じだと思う。これを悩めるようならばこんな記事は呼んでいない。

SnapCrab_Getting Started with Python on Heroku  Heroku Dev Center - Google Chrome_2015-2-19_16-25-33_No-00

Declarre app dependencies 準備しておきたいパッケージはちゃんと書き出しておいてよ

SnapCrab_Getting Started with Python on Heroku  Heroku Dev Center - Google Chrome_2015-2-19_16-26-57_No-00

heroku側で準備しておいてもらいたいパッケージについてrequirements.txtに書いておくのだけど、その依存パッケージってどうやって洗い出すの?って思われたかたもいるでしょう。そのやりかたについてのってます。良くわかりません。virtualenvを使っているなら?それかvirtualenvを使いなさいか英語が分からないので、無視します。

実はまだ半分です。もう理解するための技術がないのでここまでにします。

次は実際に自作WebアプリをHerokuでデプロイしながら勉強します。

 

FlaskアプリケーションをHerokuへデプロイする方法

Flask を触ってみる + Heroku で動かす

最近使い始めたPycharmでやってみる。PyCharmでFlaskのプロジェクトを作ります。

 

SnapCrab_NoName_2015-2-19_16-31-39_No-00

SnapCrab_heroku_first_deproy - [CUsers0160929PycharmProjectsheroku_first_deproy] - heroku_first_deproypy - Py_2015-2-19_16-32-14_No-00

 

 

参考をみるとvirtualenvを使って環境を作っているのですが、僕はAnacondaを使っているので、virtualenvをpip install 仕様とすると怒られました。のでパッケージ全部(相当たくさん)を色々無視して試してみます。つまり、virtualevnは使いません。

procfileの準備

web: gunicorn hello:app --log-file -

requirements.txtにゴミのようなパッケージの山を書き出し

pip reeze > requirements.txt

あとはおまじない

git に commit し, push する.
git add .
git commit -m 'Hello World!'
git push origin master
heroku に login し, push する.
heroku login
heroku create
git push heroku master
 Web のインスタンス追加
heroku scale web=1
開く
heroku open

SnapCrab_Application Error - Google Chrome_2015-2-19_16-45-3_No-00

うん。失敗です。

Application Error

An error occurred in the application and your page could not be served. Please try again in a few moments. If you are the application owner, check your logs for details. どうやら、まだできていなのか?依存パッケージの準備に時間がかかっているのかも。 と、最後に「もし管理者なら、ログをみろ!」とい書いてる。来ました。先ほどチュートリアルであったログ。
heroku logs --tail

これですな

C:\heroku_first_deproy>heroku logs --tail
Your version of git is 1.8.1.. Which has serious security vulnerabilities.
More information here: 
https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x

2015-02-19T07:41:14.698655+00:00 heroku[api]: 
Enable Logplex by peace@gmail.com

2015-02-19T07:41:14.698690+00:00 heroku[api]: 
Release v2 created by peace098beat.t@gmail.com

2015-02-19T07:42:15.245796+00:00 heroku[api]: 
Deploy 4fb2fee by peace@gmail.com

2015-02-19T07:42:15.245796+00:00 heroku[api]: 
Release v3 created by peace@gmail.com

2015-02-19T07:44:51.059934+00:00 heroku[router]: 
at=error code=H14 desc="No web processes running" method=GET path="/" host=safe-badlands-8226.herokuapp.com request_id
=77132953-df7f-4985-9161-ca3cc02d2053 fwd="61.119.15.133" dyno= connect= service= status=503 bytes=

2015-02-19T07:44:52.062903+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=safe-badlands-8226.herokuapp.com
request_id=38c1dee4-48b8-4ca4-9fc0-f5b7f4648154 fwd="61.119.15.133" dyno= connect= service= status=503 bytes=

2015-02-19T07:47:37.168802+00:00 heroku[router]: at=error code=H14 desc="No web processes running" me

全くわかりません。自分の実力が分かりますね。

もう少し挑戦します。

 

 参考記事

HerokuでWebアプリ開発を始めるなら知っておきたいこと(1) 無料のスペック

サイトデザインがかっこよすぎる。

俺の彼女と幼なじみが修羅場すぎる12 (GA文庫)

俺の彼女と幼なじみが修羅場すぎる12 (GA文庫)