HerokuにDjangoアプリをデプロイしてみた
はじめに
LINE Messaging APIを使ってBotを作ってみたいと思い、これまた以前から使ってみたかったHerokuにDjangoアプリをデプロイしてみました。
なお、Djangoは使うのも初めてで、選んだ理由は特にはありません。
基本的にUbuntu 14.04 で Django アプリケーションを Heroku にデプロイする手順 | dreamin'up4uに書いてくださった内容を試しただけです。
ただ、Herokuへアプリのgitリポジトリをpushするところでエラーが発生し、解決するのに少し苦労しました。
この記事の実行環境は下記のとおりです。
- ホストOS:Windows7 x64
- 仮想化ソフト:VirtualBox 5.0.16
- ゲストOS:Ubuntu 16.04.1 amd64
- Python:2.7.12
Django開発環境の構築
まずは開発環境を構築します。
yosuke@yosuke-vm:~$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | shThis script requires superuser access to install apt packages. You will be prompted for your password by sudo. [sudo] password for yosuke: --2016-11-02 11:29:33-- https://toolbelt.heroku.com/apt/release.key Resolving toolbelt.heroku.com (toolbelt.heroku.com)... 50.16.189.161, 107.20.254.176, 54.243.84.197 Connecting to toolbelt.heroku.com (toolbelt.heroku.com)|50.16.189.161|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1737 (1.7K) [application/octet-stream] Saving to: ‘STDOUT’ - 100%[===================>] 1.70K --.-KB/s in 0s 2016-11-02 11:29:34 (256 MB/s) - written to stdout [1737/1737] OK Hit:1 http://jp.archive.ubuntu.com/ubuntu xenial InRelease Get:2 http://jp.archive.ubuntu.com/ubuntu xenial-updates InRelease [95.7 kB] Get:3 http://jp.archive.ubuntu.com/ubuntu xenial-backports InRelease [92.2 kB] Get:4 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages [417 kB] Get:6 http://security.ubuntu.com/ubuntu xenial-security InRelease [94.5 kB] Get:7 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main i386 Packages [412 kB] Ign:5 http://toolbelt.heroku.com/ubuntu ./ InRelease Get:8 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages [357 kB] Get:10 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe i386 Packages [353 kB] Get:9 http://toolbelt.heroku.com/ubuntu ./ Release [1,609 B] Get:11 http://security.ubuntu.com/ubuntu xenial-security/main amd64 DEP-11 Metadata [79.1 kB] Get:12 http://toolbelt.heroku.com/ubuntu ./ Release.gpg [473 B] Get:13 http://security.ubuntu.com/ubuntu xenial-security/main DEP-11 64x64 Icons [62.9 kB] Get:14 http://toolbelt.heroku.com/ubuntu ./ Packages [725 B] Get:15 http://security.ubuntu.com/ubuntu xenial-security/universe amd64 DEP-11 Metadata [7,420 B] Fetched 1,973 kB in 2s (679 kB/s) Reading package lists... Done Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: fonts-lato git git-core git-man heroku javascript-common liberror-perl libjs-jquery libruby2.3 rake ruby ruby-did-you-mean ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit ruby2.3 rubygems-integration Suggested packages: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn apache2 | lighttpd | httpd ri ruby-dev bundler The following NEW packages will be installed: fonts-lato git git-core git-man heroku heroku-toolbelt javascript-common liberror-perl libjs-jquery libruby2.3 rake ruby ruby-did-you-mean ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit ruby2.3 rubygems-integration 0 upgraded, 19 newly installed, 0 to remove and 8 not upgraded. Need to get 11.6 MB of archives. After this operation, 53.0 MB of additional disk space will be used. Get:1 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 fonts-lato all 2.0-1 [2,693 kB] Get:2 http://toolbelt.heroku.com/ubuntu ./ heroku 3.43.13 [1,836 kB] Get:4 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 rubygems-integration all 1.10 [4,966 B] Get:5 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 ruby all 1:2.3.0+1 [5,530 B] Get:6 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 rake all 10.5.0-2 [48.2 kB] Get:7 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 ruby-did-you-mean all 1.0.0-2 [8,390 B] Get:8 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 ruby-minitest all 5.8.4-2 [36.6 kB] Get:9 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 ruby-net-telnet all 0.1.1-2 [12.6 kB] Get:10 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 ruby-power-assert all 0.2.7-1 [7,668 B] Get:11 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 ruby-test-unit all 3.1.7-2 [60.3 kB] Get:12 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libruby2.3 amd64 2.3.1-2~16.04 [2,957 kB] Get:13 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 ruby2.3 amd64 2.3.1-2~16.04 [40.9 kB] Get:14 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 liberror-perl all 0.17-1.2 [19.6 kB] Get:15 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 git-man all 1:2.7.4-0ubuntu1 [735 kB] Get:16 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 git amd64 1:2.7.4-0ubuntu1 [3,006 kB] Get:3 http://toolbelt.heroku.com/ubuntu ./ heroku-toolbelt 3.43.13 [668 B] Get:17 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 git-core all 1:2.7.4-0ubuntu1 [1,464 B] Get:18 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 javascript-common all 11 [6,066 B] Get:19 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libjs-jquery all 1.11.3+dfsg-4 [161 kB] Fetched 11.6 MB in 6s (1,702 kB/s) Selecting previously unselected package fonts-lato. (Reading database ... 204882 files and directories currently installed.) Preparing to unpack .../fonts-lato_2.0-1_all.deb ... Unpacking fonts-lato (2.0-1) ... Selecting previously unselected package rubygems-integration. Preparing to unpack .../rubygems-integration_1.10_all.deb ... Unpacking rubygems-integration (1.10) ... Selecting previously unselected package ruby. Preparing to unpack .../ruby_1%3a2.3.0+1_all.deb ... Unpacking ruby (1:2.3.0+1) ... Selecting previously unselected package rake. Preparing to unpack .../archives/rake_10.5.0-2_all.deb ... Unpacking rake (10.5.0-2) ... Selecting previously unselected package ruby-did-you-mean. Preparing to unpack .../ruby-did-you-mean_1.0.0-2_all.deb ... Unpacking ruby-did-you-mean (1.0.0-2) ... Selecting previously unselected package ruby-minitest. Preparing to unpack .../ruby-minitest_5.8.4-2_all.deb ... Unpacking ruby-minitest (5.8.4-2) ... Selecting previously unselected package ruby-net-telnet. Preparing to unpack .../ruby-net-telnet_0.1.1-2_all.deb ... Unpacking ruby-net-telnet (0.1.1-2) ... Selecting previously unselected package ruby-power-assert. Preparing to unpack .../ruby-power-assert_0.2.7-1_all.deb ... Unpacking ruby-power-assert (0.2.7-1) ... Selecting previously unselected package ruby-test-unit. Preparing to unpack .../ruby-test-unit_3.1.7-2_all.deb ... Unpacking ruby-test-unit (3.1.7-2) ... Selecting previously unselected package libruby2.3:amd64. Preparing to unpack .../libruby2.3_2.3.1-2~16.04_amd64.deb ... Unpacking libruby2.3:amd64 (2.3.1-2~16.04) ... Selecting previously unselected package ruby2.3. Preparing to unpack .../ruby2.3_2.3.1-2~16.04_amd64.deb ... Unpacking ruby2.3 (2.3.1-2~16.04) ... Selecting previously unselected package heroku. Preparing to unpack .../heroku_3.43.13_all.deb ... Unpacking heroku (3.43.13) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../liberror-perl_0.17-1.2_all.deb ... Unpacking liberror-perl (0.17-1.2) ... Selecting previously unselected package git-man. Preparing to unpack .../git-man_1%3a2.7.4-0ubuntu1_all.deb ... Unpacking git-man (1:2.7.4-0ubuntu1) ... Selecting previously unselected package git. Preparing to unpack .../git_1%3a2.7.4-0ubuntu1_amd64.deb ... Unpacking git (1:2.7.4-0ubuntu1) ... Selecting previously unselected package git-core. Preparing to unpack .../git-core_1%3a2.7.4-0ubuntu1_all.deb ... Unpacking git-core (1:2.7.4-0ubuntu1) ... Selecting previously unselected package heroku-toolbelt. Preparing to unpack .../heroku-toolbelt_3.43.13_all.deb ... Unpacking heroku-toolbelt (3.43.13) ... Selecting previously unselected package javascript-common. Preparing to unpack .../javascript-common_11_all.deb ... Unpacking javascript-common (11) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../libjs-jquery_1.11.3+dfsg-4_all.deb ... Unpacking libjs-jquery (1.11.3+dfsg-4) ... Processing triggers for fontconfig (2.11.94-0ubuntu1.1) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for libc-bin (2.23-0ubuntu4) ... Setting up fonts-lato (2.0-1) ... Setting up rubygems-integration (1.10) ... Setting up ruby-did-you-mean (1.0.0-2) ... Setting up ruby-minitest (5.8.4-2) ... Setting up ruby-net-telnet (0.1.1-2) ... Setting up ruby-power-assert (0.2.7-1) ... Setting up ruby-test-unit (3.1.7-2) ... Setting up liberror-perl (0.17-1.2) ... Setting up git-man (1:2.7.4-0ubuntu1) ... Setting up git (1:2.7.4-0ubuntu1) ... Setting up git-core (1:2.7.4-0ubuntu1) ... Setting up javascript-common (11) ... Setting up libjs-jquery (1.11.3+dfsg-4) ... Setting up rake (10.5.0-2) ... Setting up libruby2.3:amd64 (2.3.1-2~16.04) ... Setting up ruby2.3 (2.3.1-2~16.04) ... Setting up ruby (1:2.3.0+1) ... Setting up heroku (3.43.13) ... Setting up heroku-toolbelt (3.43.13) ... Processing triggers for libc-bin (2.23-0ubuntu4) ... yosuke@yosuke-vm:~$ heroku -v heroku-cli: Installing CLI... 2.92MB/22.45MB^C ! Command cancelled. yosuke@yosuke-vm:~$ heroku version heroku-cli: Installing CLI... 22.45MB/22.45MB heroku-toolbelt/3.43.13 (x86_64-linux-gnu) ruby/2.3.1 heroku-cli/5.4.8-eee5ec9 (linux-amd64) go1.7.1 You have no installed plugins. yosuke@yosuke-vm:~$ sudo apt-get install python-pip python-virtualenv libpq-dev Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: comerr-dev krb5-multidev libexpat1-dev libgssrpc4 libkadm5clnt-mit9 libkadm5srv-mit9 libkdb5-8 libpq5 libpython-all-dev libpython-dev libpython2.7-dev libssl-dev libssl-doc python-all python-all-dev python-dev python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev python3-virtualenv virtualenv zlib1g-dev Suggested packages: krb5-doc krb5-user postgresql-doc-9.5 python-setuptools-doc The following NEW packages will be installed: comerr-dev krb5-multidev libexpat1-dev libgssrpc4 libkadm5clnt-mit9 libkadm5srv-mit9 libkdb5-8 libpq-dev libpq5 libpython-all-dev libpython-dev libpython2.7-dev libssl-dev libssl-doc python-all python-all-dev python-dev python-pip python-pip-whl python-pkg-resources python-setuptools python-virtualenv python-wheel python2.7-dev python3-virtualenv virtualenv zlib1g-dev 0 upgraded, 27 newly installed, 0 to remove and 8 not upgraded. Need to get 33.0 MB of archives. After this operation, 58.8 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libgssrpc4 amd64 1.13.2+dfsg-5 [54.4 kB] Get:2 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libkdb5-8 amd64 1.13.2+dfsg-5 [37.1 kB] Get:3 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libkadm5srv-mit9 amd64 1.13.2+dfsg-5 [51.1 kB] Get:4 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libkadm5clnt-mit9 amd64 1.13.2+dfsg-5 [36.5 kB] Get:5 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 comerr-dev amd64 2.1-1.42.13-1ubuntu1 [38.2 kB] Get:6 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 krb5-multidev amd64 1.13.2+dfsg-5 [113 kB] Get:7 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libexpat1-dev amd64 2.1.0-7ubuntu0.16.04.2 [115 kB] Get:8 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpq5 amd64 9.5.4-0ubuntu0.16.04 [77.8 kB] Get:9 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 zlib1g-dev amd64 1:1.2.8.dfsg-2ubuntu4 [168 kB] Get:10 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libssl-dev amd64 1.0.2g-1ubuntu4.5 [1,344 kB] Get:11 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpq-dev amd64 9.5.4-0ubuntu0.16.04 [154 kB] Get:12 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpython2.7-dev amd64 2.7.12-1~16.04 [27.8 MB] Get:13 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libpython-dev amd64 2.7.11-1 [7,728 B] Get:14 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 libpython-all-dev amd64 2.7.11-1 [992 B] Get:15 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 libssl-doc all 1.0.2g-1ubuntu4.5 [1,078 kB] Get:16 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-all amd64 2.7.11-1 [978 B] Get:17 http://jp.archive.ubuntu.com/ubuntu xenial-updates/main amd64 python2.7-dev amd64 2.7.12-1~16.04 [276 kB] Get:18 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-dev amd64 2.7.11-1 [1,160 B] Get:19 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-all-dev amd64 2.7.11-1 [1,000 B] Get:20 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-pip-whl all 8.1.1-2ubuntu0.2 [1,111 kB] Get:21 http://jp.archive.ubuntu.com/ubuntu xenial-updates/universe amd64 python-pip all 8.1.1-2ubuntu0.2 [144 kB] Get:22 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-pkg-resources all 20.7.0-1 [108 kB] Get:23 http://jp.archive.ubuntu.com/ubuntu xenial/main amd64 python-setuptools all 20.7.0-1 [169 kB] Get:24 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 python-virtualenv all 15.0.1+ds-3 [46.7 kB] Get:25 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 python-wheel all 0.29.0-1 [48.0 kB] Get:26 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 python3-virtualenv all 15.0.1+ds-3 [43.3 kB] Get:27 http://jp.archive.ubuntu.com/ubuntu xenial/universe amd64 virtualenv all 15.0.1+ds-3 [4,342 B] Fetched 33.0 MB in 24s (1,334 kB/s) Selecting previously unselected package libgssrpc4:amd64. (Reading database ... 208100 files and directories currently installed.) Preparing to unpack .../libgssrpc4_1.13.2+dfsg-5_amd64.deb ... Unpacking libgssrpc4:amd64 (1.13.2+dfsg-5) ... Selecting previously unselected package libkdb5-8:amd64. Preparing to unpack .../libkdb5-8_1.13.2+dfsg-5_amd64.deb ... Unpacking libkdb5-8:amd64 (1.13.2+dfsg-5) ... Selecting previously unselected package libkadm5srv-mit9:amd64. Preparing to unpack .../libkadm5srv-mit9_1.13.2+dfsg-5_amd64.deb ... Unpacking libkadm5srv-mit9:amd64 (1.13.2+dfsg-5) ... Selecting previously unselected package libkadm5clnt-mit9:amd64. Preparing to unpack .../libkadm5clnt-mit9_1.13.2+dfsg-5_amd64.deb ... Unpacking libkadm5clnt-mit9:amd64 (1.13.2+dfsg-5) ... Selecting previously unselected package comerr-dev. Preparing to unpack .../comerr-dev_2.1-1.42.13-1ubuntu1_amd64.deb ... Unpacking comerr-dev (2.1-1.42.13-1ubuntu1) ... Selecting previously unselected package krb5-multidev. Preparing to unpack .../krb5-multidev_1.13.2+dfsg-5_amd64.deb ... Unpacking krb5-multidev (1.13.2+dfsg-5) ... Selecting previously unselected package libexpat1-dev:amd64. Preparing to unpack .../libexpat1-dev_2.1.0-7ubuntu0.16.04.2_amd64.deb ... Unpacking libexpat1-dev:amd64 (2.1.0-7ubuntu0.16.04.2) ... Selecting previously unselected package libpq5:amd64. Preparing to unpack .../libpq5_9.5.4-0ubuntu0.16.04_amd64.deb ... Unpacking libpq5:amd64 (9.5.4-0ubuntu0.16.04) ... Selecting previously unselected package zlib1g-dev:amd64. Preparing to unpack .../zlib1g-dev_1%3a1.2.8.dfsg-2ubuntu4_amd64.deb ... Unpacking zlib1g-dev:amd64 (1:1.2.8.dfsg-2ubuntu4) ... Selecting previously unselected package libssl-dev:amd64. Preparing to unpack .../libssl-dev_1.0.2g-1ubuntu4.5_amd64.deb ... Unpacking libssl-dev:amd64 (1.0.2g-1ubuntu4.5) ... Selecting previously unselected package libpq-dev. Preparing to unpack .../libpq-dev_9.5.4-0ubuntu0.16.04_amd64.deb ... Unpacking libpq-dev (9.5.4-0ubuntu0.16.04) ... Selecting previously unselected package libpython2.7-dev:amd64. Preparing to unpack .../libpython2.7-dev_2.7.12-1~16.04_amd64.deb ... Unpacking libpython2.7-dev:amd64 (2.7.12-1~16.04) ... Selecting previously unselected package libpython-dev:amd64. Preparing to unpack .../libpython-dev_2.7.11-1_amd64.deb ... Unpacking libpython-dev:amd64 (2.7.11-1) ... Selecting previously unselected package libpython-all-dev:amd64. Preparing to unpack .../libpython-all-dev_2.7.11-1_amd64.deb ... Unpacking libpython-all-dev:amd64 (2.7.11-1) ... Selecting previously unselected package libssl-doc. Preparing to unpack .../libssl-doc_1.0.2g-1ubuntu4.5_all.deb ... Unpacking libssl-doc (1.0.2g-1ubuntu4.5) ... Selecting previously unselected package python-all. Preparing to unpack .../python-all_2.7.11-1_amd64.deb ... Unpacking python-all (2.7.11-1) ... Selecting previously unselected package python2.7-dev. Preparing to unpack .../python2.7-dev_2.7.12-1~16.04_amd64.deb ... Unpacking python2.7-dev (2.7.12-1~16.04) ... Selecting previously unselected package python-dev. Preparing to unpack .../python-dev_2.7.11-1_amd64.deb ... Unpacking python-dev (2.7.11-1) ... Selecting previously unselected package python-all-dev. Preparing to unpack .../python-all-dev_2.7.11-1_amd64.deb ... Unpacking python-all-dev (2.7.11-1) ... Selecting previously unselected package python-pip-whl. Preparing to unpack .../python-pip-whl_8.1.1-2ubuntu0.2_all.deb ... Unpacking python-pip-whl (8.1.1-2ubuntu0.2) ... Selecting previously unselected package python-pip. Preparing to unpack .../python-pip_8.1.1-2ubuntu0.2_all.deb ... Unpacking python-pip (8.1.1-2ubuntu0.2) ... Selecting previously unselected package python-pkg-resources. Preparing to unpack .../python-pkg-resources_20.7.0-1_all.deb ... Unpacking python-pkg-resources (20.7.0-1) ... Selecting previously unselected package python-setuptools. Preparing to unpack .../python-setuptools_20.7.0-1_all.deb ... Unpacking python-setuptools (20.7.0-1) ... Selecting previously unselected package python-virtualenv. Preparing to unpack .../python-virtualenv_15.0.1+ds-3_all.deb ... Unpacking python-virtualenv (15.0.1+ds-3) ... Selecting previously unselected package python-wheel. Preparing to unpack .../python-wheel_0.29.0-1_all.deb ... Unpacking python-wheel (0.29.0-1) ... Selecting previously unselected package python3-virtualenv. Preparing to unpack .../python3-virtualenv_15.0.1+ds-3_all.deb ... Unpacking python3-virtualenv (15.0.1+ds-3) ... Selecting previously unselected package virtualenv. Preparing to unpack .../virtualenv_15.0.1+ds-3_all.deb ... Unpacking virtualenv (15.0.1+ds-3) ... Processing triggers for libc-bin (2.23-0ubuntu4) ... Processing triggers for man-db (2.7.5-1) ... Processing triggers for doc-base (0.10.7) ... Processing 2 added doc-base files... Processing triggers for install-info (6.1.0.dfsg.1-5) ... Setting up libgssrpc4:amd64 (1.13.2+dfsg-5) ... Setting up libkdb5-8:amd64 (1.13.2+dfsg-5) ... Setting up libkadm5srv-mit9:amd64 (1.13.2+dfsg-5) ... Setting up libkadm5clnt-mit9:amd64 (1.13.2+dfsg-5) ... Setting up comerr-dev (2.1-1.42.13-1ubuntu1) ... Setting up krb5-multidev (1.13.2+dfsg-5) ... Setting up libexpat1-dev:amd64 (2.1.0-7ubuntu0.16.04.2) ... Setting up libpq5:amd64 (9.5.4-0ubuntu0.16.04) ... Setting up zlib1g-dev:amd64 (1:1.2.8.dfsg-2ubuntu4) ... Setting up libssl-dev:amd64 (1.0.2g-1ubuntu4.5) ... Setting up libpq-dev (9.5.4-0ubuntu0.16.04) ... Setting up libpython2.7-dev:amd64 (2.7.12-1~16.04) ... Setting up libpython-dev:amd64 (2.7.11-1) ... Setting up libpython-all-dev:amd64 (2.7.11-1) ... Setting up libssl-doc (1.0.2g-1ubuntu4.5) ... Setting up python-all (2.7.11-1) ... Setting up python2.7-dev (2.7.12-1~16.04) ... Setting up python-dev (2.7.11-1) ... Setting up python-all-dev (2.7.11-1) ... Setting up python-pip-whl (8.1.1-2ubuntu0.2) ... Setting up python-pip (8.1.1-2ubuntu0.2) ... Setting up python-pkg-resources (20.7.0-1) ... Setting up python-setuptools (20.7.0-1) ... Setting up python-virtualenv (15.0.1+ds-3) ... Setting up python-wheel (0.29.0-1) ... Setting up python3-virtualenv (15.0.1+ds-3) ... Setting up virtualenv (15.0.1+ds-3) ... Processing triggers for libc-bin (2.23-0ubuntu4) ... yosuke@yosuke-vm:~$ yosuke@yosuke-vm:~$ mkdir hellodjango && cd hellodjango yosuke@yosuke-vm:~/hellodjango$ virtualenv venv Running virtualenv with interpreter /usr/bin/python2 New python executable in /home/yosuke/hellodjango/venv/bin/python2 Also creating executable in /home/yosuke/hellodjango/venv/bin/python Installing setuptools, pkg_resources, pip, wheel...done. yosuke@yosuke-vm:~/hellodjango$ ls -l total 4 drwxrwxr-x 7 yosuke yosuke 4096 11月 2 11:33 venv yosuke@yosuke-vm:~/hellodjango$ source venv/bin/activate (venv) yosuke@yosuke-vm:~/hellodjango$ pip install django-toolbelt Collecting django-toolbelt Downloading django-toolbelt-0.0.1.tar.gz Collecting django (from django-toolbelt) Downloading Django-1.10.3-py2.py3-none-any.whl (6.8MB) 100% |████████████████████████████████| 6.8MB 67kB/s Collecting psycopg2 (from django-toolbelt) Downloading psycopg2-2.6.2.tar.gz (376kB) 100% |████████████████████████████████| 378kB 537kB/s Collecting gunicorn (from django-toolbelt) Downloading gunicorn-19.6.0-py2.py3-none-any.whl (114kB) 100% |████████████████████████████████| 122kB 1.3MB/s Collecting dj-database-url (from django-toolbelt) Downloading dj-database-url-0.4.1.tar.gz Collecting dj-static (from django-toolbelt) Downloading dj-static-0.0.6.tar.gz Collecting static3 (from dj-static->django-toolbelt) Downloading static3-0.7.0.tar.gz Building wheels for collected packages: django-toolbelt, psycopg2, dj-database-url, dj-static, static3 Running setup.py bdist_wheel for django-toolbelt ... done Stored in directory: /home/yosuke/.cache/pip/wheels/28/50/35/d9bfc969dc1266fd9c38cd57472e67626b968e5e469780af0a Running setup.py bdist_wheel for psycopg2 ... done Stored in directory: /home/yosuke/.cache/pip/wheels/49/47/2a/5c3f874990ce267228c2dfe7a0589f3b0651aa590e329ad382 Running setup.py bdist_wheel for dj-database-url ... done Stored in directory: /home/yosuke/.cache/pip/wheels/a6/ee/0b/fa5aa1269e9e877fc925294ecd7752e9265f42ee18d38c37dd Running setup.py bdist_wheel for dj-static ... done Stored in directory: /home/yosuke/.cache/pip/wheels/b1/84/4e/fb5706a7cfa7603abc69cc5343b4c3da7f6495f2362e7341cb Running setup.py bdist_wheel for static3 ... done Stored in directory: /home/yosuke/.cache/pip/wheels/3b/36/04/bb7140607a5fc479d180ba4eff9ed11fe141588eb24d562c60 Successfully built django-toolbelt psycopg2 dj-database-url dj-static static3 Installing collected packages: django, psycopg2, gunicorn, dj-database-url, static3, dj-static, django-toolbelt Successfully installed dj-database-url-0.4.1 dj-static-0.0.6 django-1.10.3 django-toolbelt-0.0.1 gunicorn-19.6.0 psycopg2-2.6.2 static3-0.7.0 (venv) yosuke@yosuke-vm:~/hellodjango$ pip list dj-database-url (0.4.1) dj-static (0.0.6) Django (1.10.3) django-toolbelt (0.0.1) gunicorn (19.6.0) pip (8.1.2) pkg-resources (0.0.0) psycopg2 (2.6.2) setuptools (28.7.1) static3 (0.7.0) wheel (0.30.0a0) (venv) yosuke@yosuke-vm:~/hellodjango$
Djangoプロジェクトの作成
Djangoプロジェクトを作成し、gitリポジトリへ登録します。
(venv) yosuke@yosuke-vm:~/hellodjango$ django-admin.py startproject hellodjango . (venv) yosuke@yosuke-vm:~/hellodjango$ ls -l total 12 drwxrwxr-x 2 yosuke yosuke 4096 11月 2 11:34 hellodjango -rwxrwxr-x 1 yosuke yosuke 809 11月 2 11:34 manage.py drwxrwxr-x 7 yosuke yosuke 4096 11月 2 11:33 venv (venv) yosuke@yosuke-vm:~/hellodjango$ echo 'web: gunicorn hellodjango.wsgi --log-file -' | tee Procfile web: gunicorn hellodjango.wsgi --log-file - (venv) yosuke@yosuke-vm:~/hellodjango$
foreman startでローカルサーバを起動しようとしたら、foremanが無いといわれてしまいました。
これはgemでインストールできました。
(venv) yosuke@yosuke-vm:~/hellodjango$ foreman start The program 'foreman' is currently not installed. You can install it by typing: sudo apt install ruby-foreman (venv) yosuke@yosuke-vm:~/hellodjango$ gem install foreman Fetching: thor-0.19.1.gem (100%) ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /var/lib/gems/2.3.0 directory. (venv) yosuke@yosuke-vm:~/hellodjango$ sudo gem install foreman [sudo] password for yosuke: Fetching: thor-0.19.1.gem (100%) Successfully installed thor-0.19.1 Fetching: foreman-0.82.0.gem (100%) Successfully installed foreman-0.82.0 Parsing documentation for thor-0.19.1 Installing ri documentation for thor-0.19.1 Parsing documentation for foreman-0.82.0 Installing ri documentation for foreman-0.82.0 Done installing documentation for thor, foreman after 1 seconds 2 gems installed (venv) yosuke@yosuke-vm:~/hellodjango$
今度こそ、ローカルサーバを実行します。
起動したら、localhost:5000をWebブラウザで開き、動作しているかを確認します。
(venv) yosuke@yosuke-vm:~/hellodjango$ foreman start 11:47:45 web.1 | started with pid 24188 11:47:46 web.1 | [2016-11-02 11:47:46 +0000] [24188] [INFO] Starting gunicorn 19.6.0 11:47:46 web.1 | [2016-11-02 11:47:46 +0000] [24188] [INFO] Listening at: http://0.0.0.0:5000 (24188) 11:47:46 web.1 | [2016-11-02 11:47:46 +0000] [24188] [INFO] Using worker: sync 11:47:46 web.1 | [2016-11-02 11:47:46 +0000] [24194] [INFO] Booting worker with pid: 24194 11:48:18 web.1 | Not Found: /favicon.ico 11:48:18 web.1 | Not Found: /favicon.ico ^Z [1]+ Stopped foreman start (venv) yosuke@yosuke-vm:~/hellodjango$ bg [1]+ foreman start & (venv) yosuke@yosuke-vm:~/hellodjango$ 11:48:57 web.1 | [2016-11-02 11:48:57 +0000] [24188] [CRITICAL] WORKER TIMEOUT (pid:24194) 11:48:57 web.1 | [2016-11-02 11:48:57 +0000] [24351] [INFO] Booting worker with pid: 24351 fg foreman start ^C11:49:18 system | SIGINT received, starting shutdown 11:49:18 web.1 | [2016-11-02 11:49:18 +0000] [24188] [INFO] Handling signal: int 11:49:18 system | sending SIGTERM to all processes 11:49:18 web.1 | [2016-11-02 02:49:18 +0000] [24351] [INFO] Worker exiting (pid: 24351) 11:49:18 web.1 | [2016-11-02 11:49:18 +0000] [24188] [INFO] Shutting down: Master 11:49:18 web.1 | exited with code 0 (venv) yosuke@yosuke-vm:~/hellodjango$
pip freezeコマンドで使用したライブラリを設定ファイル(requirements.txt)に出力します。
(venv) yosuke@yosuke-vm:~/hellodjango$ pip freeze > requirements.txt
gitリポジトリの設定をします(個人設定の内容は[]で記載しています)。
(venv) yosuke@yosuke-vm:~/hellodjango$ cat << EOF > .gitignore > venv > *.pyc > staticfiles > EOF (venv) yosuke@yosuke-vm:~/hellodjango$ cat .gitignore venv *.pyc staticfiles (venv) yosuke@yosuke-vm:~/hellodjango$ git config --global user.email "[メールアドレス]" (venv) yosuke@yosuke-vm:~/hellodjango$ git config --global user.name "[名前]" (venv) yosuke@yosuke-vm:~/hellodjango$ git init Initialized empty Git repository in /home/yosuke/hellodjango/.git/ (venv) yosuke@yosuke-vm:~/hellodjango$ git add . (venv) yosuke@yosuke-vm:~/hellodjango$ git commit -m "my django app" [master (root-commit) e073893] my django app 8 files changed, 191 insertions(+) create mode 100644 .gitignore create mode 100644 Procfile create mode 100644 hellodjango/__init__.py create mode 100644 hellodjango/settings.py create mode 100644 hellodjango/urls.py create mode 100644 hellodjango/wsgi.py create mode 100755 manage.py create mode 100644 requirements.txt (venv) yosuke@yosuke-vm:~/hellodjango$
Herokuへのgitリポジトリのpush
(venv) yosuke@yosuke-vm:~/hellodjango$ heroku create Enter your Heroku credentials. Email: [Herokuに登録したメールアドレス] Password (typing will be hidden): Logged in as [Herokuに登録したメールアドレス] Creating app... done, ⬢ shrouded-mesa-25264 https://shrouded-mesa-25264.herokuapp.com/ | https://git.heroku.com/shrouded-mesa-25264.git (venv) yosuke@yosuke-vm:~/hellodjango$
ここまできたらHerokuにリポジトリをpushします。が、エラーが発生してしまいました。
(venv) yosuke@yosuke-vm:~/hellodjango$ git push heroku master Counting objects: 11, done. Compressing objects: 100% (8/8), done. Writing objects: 100% (11/11), 2.91 KiB | 0 bytes/s, done. Total 11 (delta 0), reused 0 (delta 0) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Python app detected remote: -----> Installing python-2.7.12 remote: $ pip install -r requirements.txt remote: Collecting dj-database-url==0.4.1 (from -r requirements.txt (line 1)) remote: Downloading dj-database-url-0.4.1.tar.gz remote: Collecting dj-static==0.0.6 (from -r requirements.txt (line 2)) remote: Downloading dj-static-0.0.6.tar.gz remote: Collecting Django==1.10.3 (from -r requirements.txt (line 3)) remote: Downloading Django-1.10.3-py2.py3-none-any.whl (6.8MB) remote: Collecting django-toolbelt==0.0.1 (from -r requirements.txt (line 4)) remote: Downloading django-toolbelt-0.0.1.tar.gz remote: Collecting gunicorn==19.6.0 (from -r requirements.txt (line 5)) remote: Downloading gunicorn-19.6.0-py2.py3-none-any.whl (114kB) remote: Collecting pkg-resources==0.0.0 (from -r requirements.txt (line 6)) remote: Could not find a version that satisfies the requirement pkg-resources==0.0.0 (from -r requirements.txt (line 6)) (from versions: ) remote: No matching distribution found for pkg-resources==0.0.0 (from -r requirements.txt (line 6)) remote: ! Push rejected, failed to compile Python app. remote: remote: ! Push failed remote: Verifying deploy... remote: remote: ! Push rejected to shrouded-mesa-25264. remote: To https://git.heroku.com/shrouded-mesa-25264.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://git.heroku.com/shrouded-mesa-25264.git' (venv) yosuke@yosuke-vm:~/hellodjango$
エラー内容から原因を推察し、requirements.txtのpkg-resources==0.0.0を削除しました。
commit後もう一度pushします。
(venv) yosuke@yosuke-vm:~/hellodjango$ gedit requirements.txt (venv) yosuke@yosuke-vm:~/hellodjango$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: requirements.txt no changes added to commit (use "git add" and/or "git commit -a") (venv) yosuke@yosuke-vm:~/hellodjango$ git add requirements.txt (venv) yosuke@yosuke-vm:~/hellodjango$ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: requirements.txt (venv) yosuke@yosuke-vm:~/hellodjango$ git commit -m "Edit requirements.txt" [master 1e53405] Edit requirements.txt 1 file changed, 1 deletion(-) (venv) yosuke@yosuke-vm:~/hellodjango$ git push heroku master Counting objects: 14, done. Compressing objects: 100% (11/11), done. Writing objects: 100% (14/14), 3.13 KiB | 0 bytes/s, done. Total 14 (delta 2), reused 0 (delta 0) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Python app detected remote: -----> Installing python-2.7.12 remote: $ pip install -r requirements.txt remote: Collecting dj-database-url==0.4.1 (from -r requirements.txt (line 1)) remote: Downloading dj-database-url-0.4.1.tar.gz remote: Collecting dj-static==0.0.6 (from -r requirements.txt (line 2)) remote: Downloading dj-static-0.0.6.tar.gz remote: Collecting Django==1.10.3 (from -r requirements.txt (line 3)) remote: Downloading Django-1.10.3-py2.py3-none-any.whl (6.8MB) remote: Collecting django-toolbelt==0.0.1 (from -r requirements.txt (line 4)) remote: Downloading django-toolbelt-0.0.1.tar.gz remote: Collecting gunicorn==19.6.0 (from -r requirements.txt (line 5)) remote: Downloading gunicorn-19.6.0-py2.py3-none-any.whl (114kB) remote: Collecting psycopg2==2.6.2 (from -r requirements.txt (line 6)) remote: Downloading psycopg2-2.6.2.tar.gz (376kB) remote: Collecting static3==0.7.0 (from -r requirements.txt (line 7)) remote: Downloading static3-0.7.0.tar.gz remote: Installing collected packages: dj-database-url, static3, dj-static, Django, psycopg2, gunicorn, django-toolbelt remote: Running setup.py install for dj-database-url: started remote: Running setup.py install for dj-database-url: finished with status 'done' remote: Running setup.py install for static3: started remote: Running setup.py install for static3: finished with status 'done' remote: Running setup.py install for dj-static: started remote: Running setup.py install for dj-static: finished with status 'done' remote: Running setup.py install for psycopg2: started remote: Running setup.py install for psycopg2: finished with status 'done' remote: Running setup.py install for django-toolbelt: started remote: Running setup.py install for django-toolbelt: finished with status 'done' remote: Successfully installed Django-1.10.3 dj-database-url-0.4.1 dj-static-0.0.6 django-toolbelt-0.0.1 gunicorn-19.6.0 psycopg2-2.6.2 static3-0.7.0 remote: remote: $ python manage.py collectstatic --noinput remote: Traceback (most recent call last): remote: File "manage.py", line 22, in <module> remote: execute_from_command_line(sys.argv) remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line remote: utility.execute() remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute remote: self.fetch_command(subcommand).run_from_argv(self.argv) remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv remote: self.execute(*args, **cmd_options) remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute remote: output = self.handle(*args, **options) remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 193, in handle remote: collected = self.collect() remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 124, in collect remote: handler(path, prefixed_path, storage) remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 337, in copy_file remote: if not self.delete_file(path, prefixed_path, source_storage): remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 255, in delete_file remote: if self.storage.exists(prefixed_path): remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/files/storage.py", line 394, in exists remote: return os.path.exists(self.path(name)) remote: File "/app/.heroku/python/lib/python2.7/site-packages/django/contrib/staticfiles/storage.py", line 49, in path remote: raise ImproperlyConfigured("You're using the staticfiles app " remote: django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path. remote: remote: ! Error while running '$ python manage.py collectstatic --noinput'. remote: See traceback above for details. remote: remote: You may need to update application code to resolve this error. remote: Or, you can disable collectstatic for this application: remote: remote: $ heroku config:set DISABLE_COLLECTSTATIC=1 remote: remote: https://devcenter.heroku.com/articles/django-assets remote: ! Push rejected, failed to compile Python app. remote: remote: ! Push failed remote: Verifying deploy.... remote: remote: ! Push rejected to shrouded-mesa-25264. remote: To https://git.heroku.com/shrouded-mesa-25264.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://git.heroku.com/shrouded-mesa-25264.git' (venv) yosuke@yosuke-vm:~/hellodjango$
またもエラーが発生してしまいました…(1)
調べてみたところ、settings.pyに設定を追記とherokuに対するコマンド実行が必要のようでした。
settings.pyの末尾に下記を追記
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles') STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, 'static'), )
herokuに対するコマンド実行:collectstaticって?
heroku config:set DISABLE_COLLECTSTATIC=1
設定の追記とherokuコマンドの実行を行います。
(venv) yosuke@yosuke-vm:~/hellodjango$ gedit ./hellodjango/settings.py (venv) yosuke@yosuke-vm:~/hellodjango$ heroku config:set DISABLE_COLLECTSTATIC=1 Setting DISABLE_COLLECTSTATIC and restarting ⬢ shrouded-mesa-25264... done, v3 DISABLE_COLLECTSTATIC: 1 (venv) yosuke@yosuke-vm:~/hellodjango$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: hellodjango/settings.py no changes added to commit (use "git add" and/or "git commit -a") (venv) yosuke@yosuke-vm:~/hellodjango$ git add ./hellodjango/settings.py (venv) yosuke@yosuke-vm:~/hellodjango$ git commit -m "Edit settings.py" [master a7246ab] Edit settings.py 1 file changed, 9 insertions(+) (venv) yosuke@yosuke-vm:~/hellodjango$ git push heroku masterCounting objects: 18, done. Compressing objects: 100% (15/15), done. Writing objects: 100% (18/18), 3.44 KiB | 0 bytes/s, done. Total 18 (delta 5), reused 0 (delta 0) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Python app detected remote: -----> Installing python-2.7.12 remote: $ pip install -r requirements.txt remote: Collecting dj-database-url==0.4.1 (from -r requirements.txt (line 1)) remote: Downloading dj-database-url-0.4.1.tar.gz remote: Collecting dj-static==0.0.6 (from -r requirements.txt (line 2)) remote: Downloading dj-static-0.0.6.tar.gz remote: Collecting Django==1.10.3 (from -r requirements.txt (line 3)) remote: Downloading Django-1.10.3-py2.py3-none-any.whl (6.8MB) remote: Collecting django-toolbelt==0.0.1 (from -r requirements.txt (line 4)) remote: Downloading django-toolbelt-0.0.1.tar.gz remote: Collecting gunicorn==19.6.0 (from -r requirements.txt (line 5)) remote: Downloading gunicorn-19.6.0-py2.py3-none-any.whl (114kB) remote: Collecting psycopg2==2.6.2 (from -r requirements.txt (line 6)) remote: Downloading psycopg2-2.6.2.tar.gz (376kB) remote: Collecting static3==0.7.0 (from -r requirements.txt (line 7)) remote: Downloading static3-0.7.0.tar.gz remote: Installing collected packages: dj-database-url, static3, dj-static, Django, psycopg2, gunicorn, django-toolbelt remote: Running setup.py install for dj-database-url: started remote: Running setup.py install for dj-database-url: finished with status 'done' remote: Running setup.py install for static3: started remote: Running setup.py install for static3: finished with status 'done' remote: Running setup.py install for dj-static: started remote: Running setup.py install for dj-static: finished with status 'done' remote: Running setup.py install for psycopg2: started remote: Running setup.py install for psycopg2: finished with status 'done' remote: Running setup.py install for django-toolbelt: started remote: Running setup.py install for django-toolbelt: finished with status 'done' remote: Successfully installed Django-1.10.3 dj-database-url-0.4.1 dj-static-0.0.6 django-toolbelt-0.0.1 gunicorn-19.6.0 psycopg2-2.6.2 static3-0.7.0 remote: remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... remote: Done: 41.9M remote: -----> Launching... remote: Released v5 remote: https://shrouded-mesa-25264.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. To https://git.heroku.com/shrouded-mesa-25264.git * [new branch] master -> master (venv) yosuke@yosuke-vm:~/hellodjango$
無事pushに成功しました!
下記のコマンドでWebブラウザを起動し、アプリのページを開くことができます。
(venv) yosuke@yosuke-vm:~/hellodjango$ heroku open (venv) yosuke@yosuke-vm:~/hellodjango$
しかし、ページを表示してみるとエラーが発生しています…(2)
調べると、settings.pyに設定が足らなかったようです。
# Allow all host headers ALLOWED_HOSTS = ['*']
よくわかっていませんが、追記します。
(venv) yosuke@yosuke-vm:~/hellodjango$ gedit ./hellodjango/settings.py(venv) yosuke@yosuke-vm:~/hellodjango$ git add ./hellodjango/settings.py (venv) yosuke@yosuke-vm:~/hellodjango$ git commit -m "Edit settings.py" [master 9aca805] Edit settings.py 1 file changed, 5 insertions(+) (venv) yosuke@yosuke-vm:~/hellodjango$ git push heroku master Counting objects: 4, done. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 437 bytes | 0 bytes/s, done. Total 4 (delta 3), reused 0 (delta 0) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Python app detected remote: $ pip install -r requirements.txt remote: remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... remote: Done: 41.9M remote: -----> Launching... remote: Released v6 remote: https://shrouded-mesa-25264.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. To https://git.heroku.com/shrouded-mesa-25264.git a7246ab..9aca805 master -> master (venv) yosuke@yosuke-vm:~/hellodjango$
リポジトリのpush成功後、再度アプリのページを表示します。
TODO:後で実行できたページの画像を張る!!
これで完了です!!
さいごに
HerokuにDjangoアプリをデプロイすることができました。
色々わかっていない箇所も多いのですが、ひとまず動作させることができたので、良しとします。
参考Webページ
参考元の導入手順
Ubuntu 14.04 で Django アプリケーションを Heroku にデプロイする手順 | dreamin'up4u
foremanのインストール他
foreman で アプリケーションを動かす。 - Qiita
エラー(1)対処:settings.pyに追記した内容
PROJECT_ROOT/STATIC_ROOT/STATIC_URL/STATICFILES_DIRSの項目を追記
herokuへのDISABLE_COLLECTSTATIC=1設定
Django製apiをherokuでデプロイする(自分用メモ) - Qiita
エラー(2)対処:さらにsettings.pyに追記した内容
ALLOWED_HOSTS = ['*']を追記
python - Is ALLOWED_HOSTS needed on Heroku? - Stack Overflow
Heroku Tips
Heroku Command Line | Heroku Dev Center