へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

Heroku+Django(python)使ってみた。それとブラウザ上にApplication errorが表示されたときに見るとこと、個人的にハマったとことか

はじめに

はい!

先日(てゆか昨日)さくらレンタルサーバで運用しようとしてたら、

「な、なんでそんな過去の遺物の上でがんばって無理矢理動かしてるの? Herokuでいいじゃん」
『え……? でもHerokuって、Linuxのサーバ借りれるとかじゃないですよね?』
「そりゃそうだけど、レンタルサーバで動かすって、それめっちゃ昔のやり方だよ。せめてVPS借りないと……」
『なんだってぇー』
「まずさくらお金かかるし。Herokuだとタダだよ。Heroku使いなよ」
『あなる』

そういうわけで、herokuを使うことにした!!!!!
さようならFreeBSD、こんにちはhero●u。

環境

python 2.7.9
Django 1.7.4

requirements.txt

Django==1.7.4
dj-database-url==0.3.0
dj-static==0.0.6
django-toolbelt==0.0.1
gunicorn==19.2.1
psycopg2==2.6
requests==2.0.1
simplejson==3.3.1
static3==0.5.1
wsgiref==0.1.2

Heroku + Djangoの概要

HerokuでDjangoを使うには、
virtualenvとpipとDjangoがご使用のパソコンにインストールされている必要があります!

virtualenvって何?という方は過去記事

PythonでDjangoを入れるときにVirtualenvとかいうやつをつかう!!! - へっぽこびんぼう野郎のnewbie日記

ついでにvirtualenvwrapperを入れると良いです!主流です!

pipはパッケージ管理ツールです。
パッケージ管理ツールとは個々にアプリケーションを入れて管理するのとかはげしくめんどくさいので、使うヤツです。
easy_installというのもあります。



〜少年ローカル環境構築中…



そうしてdjangoをインストールしたら、

$ django-admin.py startproject YourProject

のようなことをすると、新しいプロジェクトYourProjectが誕生します。(コマンドうろおぼえ)

これはカレントディレクトリに、
中身が入った新しいディレクトリがどどーんとできるだけです。
作って、気に入らねえディレクトリだなと思ったときは普通にrm -rで削除しても問題ないようです。

いったんYourProjectディレクトリの下に移動すると、manage.pyがあります。
ここで

$ python manage.py runserver

すると、ローカルでサーバが立ち上がります。たのしい!!!!

で、これと似たようなことを、なんとherokuでは環境設定を勝手にやってくれます。
pipでインストールした環境をrequirements.txtに書いて

$ pip freeze > requirements.txt

それをYourProjectディレクトリの下に置くだけです。

あとはherokuにpushすると、『おっ、これインストールしたらいいんやな』と判断して、勝手に構築して、It worked!してくれます。

=理解さえしてしまえばherokuで環境作るのはくそかんたん。

Application errorについて

ログを見ろと書いてあるので

$ heroku logs

を使います。

$ heroku logs | tail

の方がいいですかね。
そしてログが出ます。
こんなかんじ。

2015-02-12T20:27:14.209635+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=【heroku createしたときにでてきたやーつ】 request_id=6e5e9d8d-92f5-4b92-845f-b34985823769 fwd="118.22.213.すうじ" dyno= connect= service= status=503 bytes=

これですね。これに時間を食われた。

エラーコードとそのまんま書いてありますね。
ぼくはひょっとしたらかなりあほなんではないだろうか……

エラーコード一覧はここです。
Heroku Error Codes | Heroku Dev Center

はまったとこ

GitHubからcloneして、そのままherokuにpushすると失敗した

とりあえずプロジェクト名/.gitを削除して初期化し直した。
本当は、GitHubとの連携とかもやりたかったけど、とりあえず環境構築しようと思ってむし。


なんか最近環境ばかりいじってて他に何もしていない気がする。