LoginSignup
11
13

More than 5 years have passed since last update.

djangoプロジェクトをherokuへデプロイ

Last updated at Posted at 2017-02-14

前提

Herokuアカウント取得済み
toolbeltインストール済み(してない人)https://devcenter.heroku.com/articles/heroku-cli
git init済み
sqliteなどHerokuにあげたくないファイルは各自ignore済み

Herokuへログイン

ターミナルでログインします
Herokuに登録したアカウントのメールアドレスとパスワードが聞かれるので入力していって、「Logged in as メールアドレス」と表示されればログイン完了です。
もし、heroku loginコマンドでエラーが出たら、HEROKU_SSL_VERIFY=disable heroku loginコマンドを使ってください

$ heroku login
Enter your Heroku credentials.
Email: xxxxxx
Password (typing will be hidden):
Logged in as xxxxxx

次にHerokuのサーバを作成するために、createコマンドを実行します
ブラウザで、Herokuにログインするとサーバが作成されているのが確認できるはずです。「xxxxxxx」はHerokuが任意でつけてくれます。作成する際、名前を指定することもできますが、作成後でも変更できるので、今回はデフォルトで作成します

$ heroku create
Creating app... done, ⬢ xxxxxxx
https://xxxxxx.herokuapp.com/ | https://git.heroku.com/xxxxxx.git

djangoプロジェクトへのファイル作成

Herokuへデプロイする際は、pythonのバージョンなど伝えなくてはいけないので、それ用のファイルを作成します
プロジェクトフォルダ直下にruntime.txtファイルを作成し、djangoプロジェクトを作成した時の、pythonのバージョンを記述します。

runtime.txt
python-3.5.2

次に、ターミナル上でgunicornパッケージとwhitenoizeパッケージをインストールします。
※エラーが出たら、1回ずつpip install実行
※gunicorn(webサーバ)
※whitenoize(静的ファイルを配信するのを簡単にしてくれるライブラリ)

$ pip inastall gunicorn, whitenoize

インストール後、インストールされているパッケージを表示し、コピーします

$ pip freeze
Django==1.10.4
gunicorn==19.6.0
・・・
省略
・・・

runtime.txtと同じ階層にrequirements.txtを作成し、コピペします(もしくは下記のコマンドでコピペ)

requirements.txt
Django==1.10.4
gunicorn==19.6.0
・・・
省略
・・・

or

$ pip freeze > requirements.txt

また、同じようにruntime.txtと同じ階層にProcfileを作成します
※拡張子はなし

web: gunicorn プロジェクト名.wsgi --log-file -

settings.pyに静的ファイルのパスを設定します
※任意の場所に記述
困ってしまう方は、下記のようにSTATIC_URL = '/static/'の下に記述してください

settings.py
STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

whitenoiseを使うためにwsgi.pyの末尾にも記述します

wsgi.py
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)

sqliteで開発している人たちは、DBパッケージを入れる必要があるので、インストールします
HerokuのDBはポスグレ対応なので、ドライバも一緒にrequirements.txtに記述します。

$ pip install dj-database-url
requirements.txt
・・・
省略
・・・
dj-database-url==0.4.1
psycopg2==2.6.1

settings.pyに先ほどインストールした、データベースをインポートしてあげます
※任意に記述(わからなければ、末尾)

settings.py
import dj_database_url
db_from_env = dj_database_url.config()
DATABASES['default'].update(db_from_env)

以上の操作が終わったら、コミットしてあげて、下記のコマンドを打てばHerokuへデプロイできます
ただし、DBが作成されてないので、マイグレーションを行なってあげます
そしたら、ブラウザで見てあげるために、「heroku open」してあげればHeroku上で動作しているのが確認できるはずです

$ git push heroku master
$ heroku run python manage.py migrate
$ heroku open

任意でsuperuserを作成してみて管理画面にログインしてみてもいいかもしれません

$ heroku run python manage.py createsuperuser

以上でHerokuへのデプロイ完了です!

※ログアウト方法

$ heroku logout
11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13