目次

前のトピックへ

2.2. アプリケーションを作成する

次のトピックへ

3. Webサイト編

このページ

2.3. Windows Azure SQL データベースを使用する

ここでは、Windows Azure SQL データベースを作成してLinux仮想マシン上のDjangoアプリケーションから使用する方法について説明します。

2.3.1. Windows Azure SQL データベースの作成

アプリケーションから接続するデータバースサーバと、アプリケーションデータを格納するデータベースを作成します。作成の方法についてはクラウドサービスの場合と同様ですので、詳細はWindows Azure SQL データベースを使用するを参照ください。

2.3.2. Microsoft ODBC Driver 11 for SQL Serverのインストール

RedHat系のLinuxディストリビューション向けに提供されているMicrosoft ODBC Driver 11 for SQL Serverを利用することで、Linux仮想マシン上のPythonアプリケーションからWindows Azure SQL データベースを操作することが可能ですので、その導入の手順について以下に説明します。なお以降の手順でもインストールのためのコマンド実行が続きますので、仮想マシンのコマンドライン上で予めrootユーザに交代しておいてください。

2.3.2.1. 開発ツールのインストール

この先で説明する手順ではWindows Azure SQL データベース接続用ドライバのビルドを行いますが、管理ポータルの仮想マシンギャラリーより作成したCentOSには、ビルドに必要なC言語コンパイラやライブラリ、ヘッダファイルが含まれていませんので、まずはそれらの開発ツールを導入します。

最初に、実行中のLinux仮想マシンのカーネルバージョンを確認します。以下のコマンドを入力することで、Linuxカーネルのバージョンが表示されます。

# yum list kernel

次にyumパッケージマネージャの設定ファイル/etc/yum.confをvimエディタ等で開き、ファイル中に記述されているカーネル関連のパッケージをインストール対象から除外する設定を、以下のように一時的にコメントアウトします。

#exclude=kernel*

続いて以下のコマンドを入力し、先に確認したLinuxカーネルのバージョンと同一のバージョン番号を持つヘッダファイルのパッケージ(kernel-headers)をインストールします。以下のコマンド例ではバージョン「2.6.32-279.14.1.el6.openlogic」のヘッダファイルパッケージをインストールしています。

# yum install kernel-headers-2.6.32-279.14.1.el6.openlogic

ヘッダファイルのインストールが完了したら、/etc/yum.confを再度テキストエディタで開き、上記の手順の中で行ったカーネル関連パッケージ除外設定のコメントアウトを解除して再び有効化してください。

exclude=kernel*

Linuxカーネルのヘッダファイルを導入したことでC言語コンパイラや必要な各種ライブラリも導入可能な状態となりましたので、続けてそれらのパッケージもインストールします。仮想マシンのコマンドラインより以下のコマンドを実行してください。

# yum install gcc gcc-c++ glibc libgcc libstdc++ libuuid krb5-libs openssl python-devel

以上で開発ツールのインストールは完了です。

2.3.2.2. ODBCドライバマネージャのインストール

次に、以下の一連のコマンドを実行してODBCドライバマネージャをインストールします。なお下記コマンド内のxxxxx.xxxx.xxxxxの部分については実行する環境でそれぞれ異なります(直前のコマンド実行結果として表示されます)。

# cd /usr/local/src
# wget http://download.microsoft.com/download/B/C/D/BCDD264C-7517-4B7D-8159-C99FC5535680/RedHat6/msodbcsql-11.0.2270.0.tar.gz
# tar xzvf msodbcsql-11.0.2270.0.tar.gz
# cd msodbcsql-11.0.2270.0
# ./build_dm.sh --download-url=ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.0.tar.gz
# cd /tmp/unixODBC.xxxxx.xxxx.xxxxx/unixODBC-2.3.0
# make install

2.3.2.3. SQL Server ODBCドライバのインストール

最後に、以下の一連のコマンドを実行してSQL Server ODBCドライバをインストールします。

# cd /usr/local/src/msodbcsql-11.0.2270.0
# ./install.sh verify
# ./install.sh install
# odbcinst -q -d -n "ODBC Driver 11 for SQL Server"

以上でドライバのインストールは完了です。

2.3.3. アプリケーションのデータベースの設定

アプリケーションで実装するモデルクラスのバックエンドとしてWindows Azure SQL データベースを使用するための各種ライブラリをインストールします。インストールの方法はクラウドサービス用のアプリケーション開発の場合と同様です。

2.3.3.1. pyodbc/django-pyodbc-azureのインストール

アプリケーションを作成するで作成したvirtualenvがコマンドライン上でアクティベートされていることを確認のうえ、まず以下のコマンドを実行してpyodbcをインストールします。

# easy_install -Z pyodbc

次に以下のコマンドを実行してdjango-pyodbc-azureをインストールします。

# pip install django-pyodbc-azure

2.3.3.2. アプリケーションとデータベースの同期

Djangoプロジェクト内のsettings.pyを開いてデータベース設定を記述のうえ、アプリケーションで実装するモデルクラスとデータベースの同期を行います。設定ファイルを編集すれば、あとは一般的なDjangoアプリケーション開発手順の通り、アプリケーションでモデルクラスを実装し、その内容をデータベースに同期するという流れとなります。

設定する内容はクラウドサービス用のアプリケーション開発の場合と同様です。Windows Azure SQL データベースを使用するの内容に従ってsettings.pyを編集、またadminアプリケーションも有効化のうえ、データベースの同期コマンドを実行してください。なおドライバ名(’OPTIONS’ - ‘driver’)については、Microsoft ODBC Driver 11 for SQL Serverの場合は「ODBC Driver 11 for SQL Server」と記述してください。

../../../_images/197.png

SQL Server ODBCドライバとともにコマンドライン版のSQL Serverクライアントアプリケーション(sqlcmd)も併せてインストールされます。データベースの同期が完了後、以下のコマンドを入力してSQL データベースサーバへの接続を確認してみてください。[サーバ名]、[データベース名]、[ログインID]、[パスワード]には、データベース作成時に管理ポータルで指定した内容を入力します。

$ sqlcmd -S [サーバ名].database.windows.net -d [データベース名] -U [ログインID]@[サーバ名] -P [パスワード]
1> select name from sys.tables
2> go
1> select * from auth_user
2> go

同期が正しく完了していれば、以下のようにSQLの実行結果が表示されます。

../../../_images/196.png

2.3.3.3. 静的ファイルの配置

静的ファイルを供給するで説明した通り、DjangoアプリケーションをWebサーバ上で実行する場合は、アプリケーションで使用する静的ファイルをWebサーバ上の適切な場所に配置する必要があります。ここでもクラウドサービスのときと同様の構成で静的ファイルを配置しますので、まずは上記ページの内容に従い、settings.pyにあるSTATIC_ROOTとSTATIC_URLの記述内容を変更してください。

次に、アプリケーションを作成するで作成したファイル/etc/httpd/conf.d/mysite.confの先頭に、以下の1行を追記して保存します。

Alias /mysite/static/ /var/www/mysite/static/

最後にDjangoプロジェクトのディレクトリに移動して静的ファイルを収集のうえ、Webサーバを再起動します。

# mkdir static
# python manage.py collectstatic
# service httpd restart

ここまでの変更を反映したら、WebブラウザでLinux仮想マシンのDjango管理サイトにアクセスして確認してみてください。

../../../_images/198.png