#前提
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のバージョンを記述します。
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を作成し、コピペします(もしくは下記のコマンドでコピペ)
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/'の下に記述してください
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
whitenoiseを使うためにwsgi.pyの末尾にも記述します
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)
sqliteで開発している人たちは、DBパッケージを入れる必要があるので、インストールします
HerokuのDBはポスグレ対応なので、ドライバも一緒にrequirements.txtに記述します。
$ pip install dj-database-url
・・・
省略
・・・
dj-database-url==0.4.1
psycopg2==2.6.1
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