2017年4月27日木曜日

DjangoアプリをHerokuへデプロイ

前回からの続き。

下記のDjangoチュートリアルでやったことの続きを書いて行きます。
Django Girls Tutorial

前回作成したDjangoアプリのHerokuへのデプロイからです。

HerokuとはPaaS(platform as a service)を提供している会社のサービス。
アプリケーションを実行するための環境を提供してくれます。

CentOSを使用していたので、ここはかなり苦労しました。
何故かHeroku公式インストール手順通りやってもうまくいかず・・。
なので、Heroku CLIのインストールはチュートリアルとは違う内容でやっています。

デプロイ -----------------------------------------------------------------------
Herokuを使うために必要ないくつかのパッケージをインストール
    $ pip install dj-database-url gunicorn whitenoise

requirements.txtを作成 (djangogirlsディレクトリに)
    $ pip freeze > requirements.txt
requirements.txt編集、以下を追加 (Herokuで動かすために必要な1行)
(バージョンはチュートリアル通りじゃなく2.6.2を入れてみた)
    psycopg2==2.5.4

Procfile作成し以下を入力
(どのコマンドを実行してウェブサイトをスタートするかHerokuに伝える)
    $ vi Procfile
    web: gunicorn mysite.wsgi

runtime.txt作成
(Herokuに使っているPythonのバージョンを伝える)
    $ echo python-3.5.3 >> runtime.txt

mysite/local_settings.py(ローカル環境で動かすための設定を追加する)
    $ vi mysite/local_settings.py
    import os
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

    DEBUG = True

mysite/settings.py設定変更 最終行に以下を追加
    $ vi mysite/settings.py
    import dj_database_url
    DATABASES['default'] = dj_database_url.config()

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

    ALLOWED_HOSTS = ['*']

    STATIC_ROOT = 'staticfiles'

    DEBUG = False

    try:
        from .local_settings import *
    except ImportError:
        pass

mysite/wsgi.py修正 最終行に以下を追加
    $ vi mysite/wsgi.py
    from whitenoise.django import DjangoWhiteNoise
    application = DjangoWhiteNoise(application)

Heroku CLIのインストール
    $ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    $ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
    $ echo '# Ruby 設定(HerokuCLIで使用する)'  >> ~/.bash_profile
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
    $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
    $ . ~/.bash_profile
    $ rbenv --version                       # Ruby仮想環境のバージョン確認
    $ rbenv install 2.3.1                   # Rubyのインストール
    $ rbenv versions                        # インストール済みRubyの確認
    $ rbenv global 2.3.1                    # Rubyのバージョン選択
    $ rbenv version                         # カレントディレクトリで有効な Ruby バージョン確認
    $ gem update --system                   # gem のアップデート
    $ gem install rails --no-rdoc --no-ri   # Railsインストール、たぶんやらなくていい
    $ wget https://cli-assets.heroku.com/branches/stable/heroku-linux-amd64.tar.gz
    $ tar -xvzf heroku-linux-amd64.tar.gz
    $ sudo mv heroku /usr/local/
    $ echo '' >> ~/.bash_profile
    $ echo '# HerokuCLIの設定' >> ~/.bash_profile
    $ echo 'export PATH="/usr/local/heroku/bin:$PATH"' >> ~/.bash_profile

.gitignoreファイルを作成して以下の内容を記述する。(djangogirlsで行う)
    myvenv
    __pycache__
    staticfiles
    local_settings.py
    db.sqlite3
    *.py[co]

Gitリポジトリ作成
    $ git init
        Initialized empty Git repository in ~/djangogirls/.git/
    $ git config user.name "Your Name"
    $ git config user.email you@example.com

gitコマンド
    変更されたファイルの一覧を表示
    $ git status
    作業ディレクトリ内の変更をステージングエリア(次回コミットの対象)に追加
    $ git add -A .          ($ git add -p インタラクティブなステージングセッションを開始 ファイルの一部を選択してステージできる)
    $ git commit -m "My Django Girls app"

アプリケーション名を決める(すでに使われている名前は使用できない)
    今回はアプリケーション名の指定なしで作成(自動でつけてくれる)
    $ heroku create <アプリケーション名>
        https://guarded-everglades-99999.herokuapp.com/
        https://git.heroku.com/guarded-everglades-99999.git
    変更したい場合は以下のコマンドで変更できる。
    $ heroku apps:rename the-new-name

Herokuにアプリケーションをデプロイ
    $ git push heroku master
        Verifying deploy.... done.

Herokuのウェブプロセスを起動
    $ heroku ps:scale web=1

Webブラウザで以下のURLにアクセス (まだheroku上にDBを設定していないのでエラーになる)
    https://<アプリケーション名>.herokuapp.com/
    https://<アプリケーション名>.herokuapp.com/admin

herokuへのDBのセットアップ
    $ heroku run python manage.py migrate
    $ heroku run python manage.py createsuperuser

デプロイ完了!

またまた長くなるので・・。

0 件のコメント:

コメントを投稿