======================================== Windows Azure SQL データベースを使用する ======================================== ここでは、Windows Azure SQL データベースを作成してLinux仮想マシン上の Djangoアプリケーションから使用する方法について説明します。 Windows Azure SQL データベースの作成 ==================================== アプリケーションから接続するデータバースサーバと、アプリケーションデータを格納する データベースを作成します。作成の方法についてはクラウドサービスの場合と同様ですので、詳細は :doc:`../../cloudservices/setup_sql_database` を参照ください。 Microsoft ODBC Driver 11 for SQL Serverのインストール ===================================================== RedHat系のLinuxディストリビューション向けに提供されている `Microsoft ODBC Driver 11 for SQL Server`_ を利用することで、 Linux仮想マシン上のPythonアプリケーションからWindows Azure SQL データベースを 操作することが可能ですので、その導入の手順について以下に説明します。 なお以降の手順でもインストールのためのコマンド実行が続きますので、 仮想マシンのコマンドライン上で予めrootユーザに交代しておいてください。 .. _Microsoft ODBC Driver 11 for SQL Server: http://www.microsoft.com/en-us/download/details.aspx?id=36437 開発ツールのインストール ------------------------ この先で説明する手順ではWindows Azure SQL データベース接続用 ドライバのビルドを行いますが、管理ポータルの仮想マシンギャラリーより 作成したCentOSには、ビルドに必要なC言語コンパイラやライブラリ、 ヘッダファイルが含まれていませんので、まずはそれらの開発ツールを導入します。 最初に、実行中のLinux仮想マシンのカーネルバージョンを確認します。 以下のコマンドを入力することで、Linuxカーネルのバージョンが表示されます。 .. code-block:: console # yum list kernel 次にyumパッケージマネージャの設定ファイル ``/etc/yum.conf`` をvimエディタ等で開き、 ファイル中に記述されているカーネル関連のパッケージをインストール対象から 除外する設定を、以下のように一時的にコメントアウトします。 :: #exclude=kernel* 続いて以下のコマンドを入力し、先に確認したLinuxカーネルのバージョンと 同一のバージョン番号を持つヘッダファイルのパッケージ(kernel-headers)をインストールします。 以下のコマンド例ではバージョン「2.6.32-279.14.1.el6.openlogic」の ヘッダファイルパッケージをインストールしています。 .. code-block:: console # yum install kernel-headers-2.6.32-279.14.1.el6.openlogic ヘッダファイルのインストールが完了したら、 ``/etc/yum.conf`` を再度テキストエディタで開き、 上記の手順の中で行ったカーネル関連パッケージ除外設定のコメントアウトを解除して 再び有効化してください。 :: exclude=kernel* Linuxカーネルのヘッダファイルを導入したことで C言語コンパイラや必要な各種ライブラリも導入可能な状態となりましたので、 続けてそれらのパッケージもインストールします。 仮想マシンのコマンドラインより以下のコマンドを実行してください。 .. code-block:: console # yum install gcc gcc-c++ glibc libgcc libstdc++ libuuid krb5-libs openssl python-devel 以上で開発ツールのインストールは完了です。 ODBCドライバマネージャのインストール ------------------------------------ 次に、以下の一連のコマンドを実行してODBCドライバマネージャをインストールします。 なお下記コマンド内の **xxxxx.xxxx.xxxxx** の部分については実行する環境でそれぞれ異なります (直前のコマンド実行結果として表示されます)。 .. code-block:: console # 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 SQL Server ODBCドライバのインストール ------------------------------------- 最後に、以下の一連のコマンドを実行してSQL Server ODBCドライバをインストールします。 .. code-block:: console # 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" 以上でドライバのインストールは完了です。 アプリケーションのデータベースの設定 ==================================== アプリケーションで実装するモデルクラスのバックエンドとしてWindows Azure SQL データベースを使用するための 各種ライブラリをインストールします。インストールの方法はクラウドサービス用のアプリケーション開発の場合と同様です。 pyodbc/django-pyodbc-azureのインストール ---------------------------------------- :doc:`create_application` で作成したvirtualenvがコマンドライン上でアクティベートされていることを確認のうえ、 まず以下のコマンドを実行してpyodbcをインストールします。 .. code-block:: console # easy_install -Z pyodbc 次に以下のコマンドを実行してdjango-pyodbc-azureをインストールします。 .. code-block:: console # pip install django-pyodbc-azure アプリケーションとデータベースの同期 ------------------------------------ Djangoプロジェクト内の ``settings.py`` を開いてデータベース設定を記述のうえ、 アプリケーションで実装するモデルクラスとデータベースの同期を行います。 設定ファイルを編集すれば、あとは一般的なDjangoアプリケーション開発手順の通り、 アプリケーションでモデルクラスを実装し、その内容をデータベースに同期するという流れとなります。 設定する内容はクラウドサービス用のアプリケーション開発の場合と同様です。 :doc:`../../cloudservices/setup_sql_database` の内容に従って ``settings.py`` を編集、 またadminアプリケーションも有効化のうえ、データベースの同期コマンドを実行してください。 なおドライバ名('OPTIONS' - 'driver')については、Microsoft ODBC Driver 11 for SQL Serverの場合は 「ODBC Driver 11 for SQL Server」と記述してください。 .. image:: images/setup_sql_database/197.png :width: 436 :height: 284 SQL Server ODBCドライバとともにコマンドライン版のSQL Serverクライアントアプリケーション ( ``sqlcmd`` )も併せてインストールされます。データベースの同期が完了後、以下のコマンドを入力して SQL データベースサーバへの接続を確認してみてください。[サーバ名]、[データベース名]、 [ログインID]、[パスワード]には、データベース作成時に管理ポータルで指定した内容を入力します。 .. code-block:: console $ 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の実行結果が表示されます。 .. image:: images/setup_sql_database/196.png :width: 436 :height: 284 静的ファイルの配置 ------------------ :doc:`../../cloudservices/serve_static_files` で説明した通り、 DjangoアプリケーションをWebサーバ上で実行する場合は、アプリケーションで使用する静的ファイルを Webサーバ上の適切な場所に配置する必要があります。ここでもクラウドサービスのときと 同様の構成で静的ファイルを配置しますので、まずは上記ページの内容に従い、 ``settings.py`` にあるSTATIC_ROOTとSTATIC_URLの記述内容を変更してください。 次に、 :doc:`create_application` で作成したファイル ``/etc/httpd/conf.d/mysite.conf`` の先頭に、 以下の1行を追記して保存します。 :: Alias /mysite/static/ /var/www/mysite/static/ 最後にDjangoプロジェクトのディレクトリに移動して静的ファイルを収集のうえ、Webサーバを再起動します。 .. code-block:: console # mkdir static # python manage.py collectstatic # service httpd restart ここまでの変更を反映したら、WebブラウザでLinux仮想マシンのDjango管理サイトにアクセスして確認してみてください。 .. image:: images/setup_sql_database/198.png :width: 445 :height: 312