気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【OpenShift】OpenShiftへのDjangoアプリデプロイ手順(Windows)

www.openshift.com

クライアントツール(rhc)の導入

  1. Rubyのインストール(http://rubyinstaller.org/)
  2. gitのインストール(http://msysgit.github.io/)
  3. クライアントツール(rhc)のインストール
gem install rhc

クライアントツールのセットアップ

  • コマンドの実行
rhc setup
  • ログイン先のサーバーを聞かれるので、そのままEnter

  • Login to openshift.redhat.com:と聞かれるので自分のユーザIDを入力してEnter

Login to openshift.redhat.com: user@example.com
  • パスワードを入力してEnter
Password: password
  • パスワード省略するトークンを発行するかどうか聞かれるので、必要ならyes
OpenShift can create and store a token on disk which allows to you to access the server without using your password. The key is stored in your home directory and should be kept secret. You can delete the key at any time by running 'rhc logout'.
Generate a token now? (yes|no) yes
Generating an authorization token for this client ... lasts about 1 day
  • ssh接続のために公開鍵をアップロードするか聞かれるのでyes
Your public ssh key must be uploaded to the OpenShift server to access code.
Upload now? (yes|no) yes

Since you do not have any keys associated with your OpenShift account, your new key will be uploaded as the 'default' key

Uploading key 'default' from C:\Users\User1\.ssh\id_rsa.pub ... done
  • ドメインの指定を聞かれるので、好きな文字列を指定
Checking for a domain ... none

Your domain is unique to your account and is the suffix of the public URLs we assign to your applications. You may configure your domain here or leave it blank and use 'rhc domain create' to create a domain later. You will not be able to create applications without first creating a domain.

Please enter a domain (letters and numbers only) |<none>|: MyDomain
Your domain name 'MyDomain' has been successfully created


# ここで指定したドメインは以下のxxxxのところに使われる。
#appname-xxxx.rhcloud.com

Djangoのインストール

  • ログイン後の画面(Applications)で「Add Application...」ボタンを押下 f:id:rinne_grid2_1:20150523080113p:plain

  • 検索ボックスにDjangoを入力し、「Django」のリンクを選択 f:id:rinne_grid2_1:20150523080124p:plain

  • アプリケーション名やPythonバージョンを選択し、Create Applicationをクリック f:id:rinne_grid2_1:20150523080136p:plain

  • OpenShiftのアプリケーションリポジトリをローカルにクローン
    ※GitのURLは、rhc appsで確認できる

rhc apps
#appname @ http://appname-xxxxxxx.rhcloud.com/ (uuid: 555f1794500446189a0000b7)
#-----------------------------------------------------------------------------
#  Domain:     xxxxxxx
#  Created:    May 22  8:48 PM
#  Gears:      1 (defaults to small)
#  Git URL:    ssh://appname.xxxx.rhcloud.com/~/git/appname.git/
#  SSH:        xxxxx
#  Deployment: auto (on git push)

git clone ssh://appname.xxxx.rhcloud.com/~/git/appname.git/

Djangoディレクトリ構成の整理

前提:仮にDjangoアプリに以下の名前がついているとする

Djangoプロジェクト名:testproject
Djangoアプリ名:testapp

下記の構成にする

OpenShiftで作成したアプリ名
`-
  |-.git
  |-.openshift
  |-testproject
  |-testapp
  |-manage.py
  |-setup.py
  |-requirements.txt

・もともとあったwsgi.pyは削除
・testprojectの配下には、Djangoプロジェクト自体のurls.pyやwsgi.py、 settings.pyが入っている前提とする

  • requirements.txtに、必要なパッケージを記述
pip freeze > requirements.txt
#Djangoのバージョンを指定したい場合はここで指定。
#Django==1.x.x

MySQLのインストール

  • rhcコマンドの実行
rhc cartridge add mysql-5.5 -a appname
  • データベース情報の確認は、rhc appsで可能
rhc apps
  • settings.pyにMySQLのデータベース情報を追記
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME' : 'appname',    # 自分のアプリ名を指定
        'USER' : 'username',   # 自分のユーザー名を指定
        'PASSWORD' : 'password', # 自分のパスワードを指定
        'HOST': os.environ['OPENSHIFT_MYSQL_DB_HOST'],
        'PORT': os.environ['OPENSHIFT_MYSQL_DB_PORT'],
    }
}
  • requirements.txtにmysqlclientを追記
mysqlclient

デプロイ

  • 必要に応じて、setup.pyの中身を編集する
setup(name='YourAppName',
      version='1.0',
      description='OpenShift App',
      author='Your Name',
      author_email='example@example.com',
      url='http://www.python.org/sigs/distutils-sig/',
#      install_requires=['Django>=1.3'],
     )
  • wsgiアプリケーションの指定
    環境変数wsgi.pyの位置を指定する必要がある。
    ※testprojectの直下に、wsgi.pyが入っている前提(上記フォルダ構成を参照)
rhc set-env -a appname OPENSHIFT_PYTHON_WSGI_APPLICATION=testproject/wsgi.py
  • gitでDjangoアプリをOpenShiftにPush
git add . --all

git commit -m "commit comment"

git push

OpenShiftにssh接続し、syncdbコマンドを実行

rhc ssh

# OpenShift上に作成されたVirtualenvをアクティベート
source ${OPENSHIFT_HOMEDIR}/python/virtenv/venv/bin/activate

# 今回デプロイしたアプリケーションの場所に移動
cd $OPENSHIFT_REPO_DIR

# manage.pyがあるか確認しておく
ls -alt

# syncdbの実行
python manage.py syncdb --all

アプリケーションコンソール、もしくはrhc appsで、アプリケーションのURLがわかるので、 そちらに接続。 一番わかりやすいのはadmin画面に接続してみること。

rhc apps
#appname @ http://appname-xxxxxxx.rhcloud.com/ (uuid: 555f1794500446189a0000b7)
#-----------------------------------------------------------------------------
#  Domain:     xxxxxxx
#  Created:    May 22  8:48 PM
#  Gears:      1 (defaults to small)
#  Git URL:    ssh://appname.xxxx.rhcloud.com/~/git/appname.git/
#  SSH:        xxxxx
#  Deployment: auto (on git push)

admin画面が表示されればOK