投稿日: | 最終更新日:
超簡単!Vagrant(CentOS7)にheroku用のDjango開発環境を作ってherokuへデプロイ
herokuが配布するファイルからDjangoアプリケーションを作ります。今回は、ローカル環境のDjangoをherokuにデプロイします。
公式チュートリアルに沿って進める
前回、ローカルPCのサンドボックス(Vagrant)にHeroku CLIをインストールしました。ネット上には多数のherokuデプロイ方法をまとめたエンジニアさんblogがあります。しかし、高度な設定はとりあえず諦めて公式チュートリアルの方法でスタートアップしてみます。
デプロイまでの流れ
①まず、gitからheroku用の最小Djangoアプリをダウンロードします。
②これをローカル環境に展開します。
③「heroku create」コマンドでherokuにアプリを作成します。
④加工が完了したら、gitコマンドでherokuのリモートリポジトリへデプロイします。
⑤heroku内のアプリを起動します。
前提
- Windows、Mac、Ubuntuのいずれの環境。あるいはVagrant(CentOS7)
- herokuアカウント(無料枠でもOK)
- heroku CLIがインストール済み
- gitがインストール済み
gitを使うには?
gitはコマンドさえ使えればOKです。github上のリポジトリにpushするわけではないので、公開鍵等の設定は不要です。
準備
Vagrantでゲスト環境(仮想環境)を作ります。ゲスト環境の中にDjangoを構築します。その前に、以下の作業を終わらせましょう。
①Virtualboxをインストールします。Virtualboxのインストールまでで結構です。
→VirtualBoxをインストールする for Ubuntu
②Vagrantをインストールします。centos7環境を作りますので、Vagrantのインストールのみ済ませてください。
→Vagrantをインストールしてテスト環境を作る for Ubuntu
③herokuにアカウントを作成します。
→herokuを使ってwebアプリを始めましょう!アカウント作成
④VagrantにHeroku CLI をインストールします。
→Vagrant(CentOS7)にHeroku CLI をインストール
ホスト環境
OS | Ubuntu 16.04.1 LTS 64bit |
---|---|
Virtualbox | 5.1 |
Vagrant | 1.9.5 |
ゲスト環境
OS | CentOS 7.1.1503 |
---|---|
Python | 3.6.5 |
pip | 9.0.3 |
heroku初期設定
①herokuのアカウント(無料枠)を取得します。
→herokuを使ってwebアプリを始めましょう!アカウント作成
②vagrantにHeroku CLIをインストールします。
Djangoアプリの準備
このステップでは、配備可能な単純なアプリケーションを準備します。
①vagrantを起動してログインします。
vagrant up vagrant ssh
②作っておいたpyenv仮想環境(test_django)も起動します。
. test_django/bin/activate (test_django) [vagrant@localhost]$ #環境が有効になるとターミナルがこのように表示されます。
③サンプルアプリケーションをクローンします。
git clone https://github.com/heroku/python-getting-started.git
④クローンしたローカルバージョンのディレクトリに移動します。
cd python-getting-started
以下のような構成です。ファイルを確認して下さい。
- python-getting-started/
- Procfile
- Procfile.windows
- README.md
- app.json
- db.sqlite3
- manage.py
- requirements.txt
- runtime.txt
- gettingstarted/
- …省略
- hello/
- …省略
Procfile | Herokuプロセスの起動コマンド |
---|---|
runtime.txt | Pythonのバージョン指定 |
requirements.txt | 依存パッケージのリスト |
Procfile
Procfileは、djangoアプリケーションを起動するために実行するコマンドを記述しておきます。Procfileの内容は、以下のとおりです。
web: gunicorn gettingstarted.wsgi --log-file -
Heroku上で実行するコマンドをProcfileに記載します。サンプルアプリでは、 web というコマンドが定義され、gunicornコマンドを実行しています。webコマンドを実行すれば、HerokuのHTTPルーティングスタックに接続されます。
runtime.txt
heroku上で使用するPythonのバージョンを記述します。ここではPython3.7.0です。
python-3.7.0
requirements.txt
herokuで使用するDjangoと、pipインストールする関連パッケージを記述します。requirements.txtに記述しておけば、アプリケーションのデプロイ時に自動的にインストールされます。
django gunicorn django-heroku
「Django-Heroku」を指定しておけば、全ての設定が自動的に行われます。「collectstatic」もデプロイ中に自動的に実行されます。「Django-Heroku」パッケージを使用することをお勧めします。これにより、すべての設定が自動的に行われます。
リリースフェーズをチェックして 、新しいリリースが本番環境にデプロイされる前にタスクを実行できるようにしてください。
herokuにアプリを作成
①herokuコマンドで、herokuにログインしておきます。Herokuアカウントの作成時に使用した電子メールアドレスとパスワードを入力すれば下記のようになります。
heroku login Enter your Heroku credentials. Email: adam@example.com Password (typing will be hidden): Authentication successful.
②herokuにアプリを作成します。
heroku create Creating app... done, ⬢ serene-caverns-xxxxx https://serene-caverns-xxxxx.herokuapp.com/ | https://git.heroku.com/serene-caverns-xxxxx.git
アプリケーションを作成すると、git remote(called heroku)も作成されます。また、自分のパソコンのローカルgitリポジトリに関連付けられます。
「Heroku serene-caverns-xxxxx」は、自動的に作られるあなたのアプリの名前です。パラメータを指定すれば、名前はあとからでも変更可能です(今回は省略)。
アプリをデプロイする
①先ほど作成したアプリをデプロイします。これで、herokuサーバ上にファイルが展開されます。
$ git push heroku master
以下のような実行結果が端末に表示されます。
Counting objects: 4, done. 〜 略 〜 remote: Compressing source files... done. remote: Building source: remote: remote: -----> Python app detected remote: Using supported version of Python 3.7 (python-3.7.0) remote: -----> Installing python-3.7.0 remote: -----> Installing pip To https://git.heroku.com/xxxxxxxxxxxxxxx.git * [new branch] master -> master
herokuアプリの実行
①以下のコマンドを実行します。
$ heroku ps:scale web=1
herokuを開く
①ブラウザで、herokuにアプリを作成で作成されたアプリのURLを開きます。
→https://serene-caverns-xxxxx.herokuapp.com/
以下のページが開けば成功です。
ローカルでDjangoアプリを起動
ローカルにあるDjangoアプリ(python-getting-started)を起動します。
①以下のコマンドでDjangoを起動します。
$ heroku local web
※以下のコマンドでも起動できます。簡易サーバです。
$ python manage.py runserver 0.0.0.0:5000
これから開発を進めるには?
herokuへデプロイし、実行まで完了したらいよいよ開発を行います。基本的には以下の繰り返しで行えます。
①ローカルにあるDjangoアプリ(python-getting-started)を変更します。
↓
②ローカルで起動して確認します。
$ cd $ heroku local web
↓
③変更されたファイルをローカルのgitリポジトリに追加します。
git add . #ローカルのgitリポジトリに追加 git commit -m "Demo" #リポジトリに変更をコミット
↓
④gitコマンドでhrokuにpushします。
$ git push heroku master
↓
⑤ブラウザで、アプリのURLを開きます。
→https://serene-caverns-xxxxx.herokuapp.com/
次回
このDjangoアプリをローカル(vagrant)で実行します。
- Python 114
- 制作 54
- RaspberryPi 41
- Django 40
- WordPress 40
- Linux 27
- VPS 22
- JavaScript 21
- PHP 20
- HTML・CSS 19
- AWS 16
- 仮想環境 15
- レスポンシブデザイン 13
- マイコン 11
- WEB全般 11
- 動画製作 9
- Webサービス 8
- 統合開発環境 8
- 機械学習 8
- PyCharm 7
- jQuery 7
- AfterEffects 7
- 起業・設立 7
- Django REST framework 6
- C# 6
- デザイン 6
- SEO 6
- pydata 6
- Visual Studio 5
- 数学 5
- 携帯サイト 5
- heroku 5
- Mac 5
- illustrator 5
- node.js 5
- Anaconda 5
- Nginx 4
- Jupyter Notebook 4
- インフラ 4
- Google Colaboratory 4
- symfony 4
- Webスクレイピング 3
- photoshop 3
- Go言語 3
- PC 3
- ツール 3
- Docker 3
- facebook 3
- 作業効率化 3
- データベース 3
- Cloud9 3
- コマンド 2
- micro:bit 2
- Kali Linux 2
- Webサーバー 2
- MariaDB 2
- ドローン 2
- コンテナ 2
- DaVinci Resolve 2
- ネットワーク 2
- Java 2
- movie 2
- PCDJ 2
- 音楽 2
- XSERVER 2
- Ansible 1
- Vue.js 1
- JSON 1
- Bootstrap 1
- バージョン管理システム 1
- SSL 1
- S3 1
- ムームードメイン 1
- ネットワーク 1
- アニメーション 1
- D3.js 1
- Rhino 1
- アニメ 1
- git 1
- windows 1
- アクセス解析 1
- スマートフォン 1
- アフィリエイトノウハウ 1
- 知識 1
- TypeScript 1
- 役立つ本・書籍 1
- データサイエンス 1
- ESP32 1
- AI 1
- ownCloud 1
- API 1