LAMP開発者のためのWindows Azure講座

第4回 Azure上でのMySQLの起動[その1]

この記事を読むのに必要な時間:およそ 3 分

EclipseでWorkerRoleプロジェクトを作成する

次に,MySQLをWorkerRoleで動作させるためのプロジェクトをEclipse PDTを使って作成してみましょう。

Eclipseを起動し,PHPのWebRoleを作成したときと同様に,⁠Windows Azure」メニューから,⁠Windows Azure PHP Project」を選択します。

図17 Windows Azure PHPプロジェクトを作成

図17 Windows Azure PHPプロジェクトを作成

プロジェクト名は,ここでは「Sample2」として「Next」を押します。

図18 プロジェクト名を入力してNext

図18 プロジェクト名を入力してNext

すると,次のような,WebRoleを設定する画面が表示されます。下部に「Enable MySQL」という項目がありますので,チェックを入れます。Role名はここでは「WebRole」とします。

図19 Enable MySQLにチェックを入れる

図19 Enable MySQLにチェックを入れる

そのまま「Next」を押すと,WorkerRoleを設定する画面が表示されます。

図20 WorkerRoleの設定画面

図20 WorkerRoleの設定画面

Role名を「WorkerRole」とし,MySQL Runtimeの場所に「C:\Program Files\MySQL\MySQL Server 5.5」を設定します。データベースサイズを1000MBとし,Rootパスワードに先ほど設定したパスワードを入力します。続けてNextを押すと,設定した各ロールの確認画面が表示されますので,⁠Finish」を押してプロジェクトを作成します。

図21 ロールの確認画面

図21 ロールの確認画面

しばらくすると,以下のような構成で,プロジェクトが作成されます。WebRoleとWorkerRoleが作成されているのが確認できます。

図22 WebRoleとWorkerRoleを含んだプロジェクト

図22 WebRoleとWorkerRoleを含んだプロジェクト

MySQLとphpMyAdminをプロジェクトに追加

続いて,WorkerRoleにMySQLを,WebRoleにMySQLを管理するツールである「phpMyAdmin」をそれぞれ追加していきます。

まず,Eclipse上で「Sample2_WorkerRole」を右クリックし,⁠mysql」フォルダを追加します。

図23 mysqlフォルダを追加

図23 mysqlフォルダを追加

次に,MySQLをインストールした「C:\Program Files\MySQL\MySQL Server 5.5」をExplorerで開きます。配下には,bin,data,include,lib,shareなどのフォルダがありますので,各フォルダをEclise内の「Sample2_WorkerRole」にドラッグ&ドロップするなどしてインポートします(Explorerを使ってワークスペースに設定している「C:\inetpub\wwwroot」内にコピーし,Eclise上でF5キーを押して再読み込みするかたちでもかまいません⁠⁠。いずれにしても,次のようなフォルダ構成にします。

図24 mysql配下にbinなどをインポートして追加

図24 mysql配下にbinなどをインポートして追加

なお,MySQLのデータディレクトリ(my.iniでのdatadir)は,デフォルトで「C:\ProgramData\MySQL\MySQL Server 5.5\data」になっています。

ローカルで追加したrootパスワードやデータベース,テーブルなどのデータをAzureにデプロイするには,C:\ProgramData\MySQL\MySQL Server 5.5\data配下のファイルを「Sample2_WorkerRole\mysql\data」にコピーする必要があります。

次に,WebRoleにphpMyAdminを追加します。

phpMyAdminのサイトにアクセスし,「phpMyAdmin-3.4.9-all-languages.zip」をダウンロードします。

図25 phpMyAdminをダウンロード

図25 phpMyAdminをダウンロード

ファイルを展開したら,フォルダ名をphpMyAdminに変更して,先ほどと同じように,Sample_WebRole配下にインポートします。

図26 WebRole配下にphpMyAdminをインポート

図26 WebRole配下にphpMyAdminをインポート

次に,phpMyAdminフォルダにある設定ファイルのサンプル「config.sample.inc.php」をコピーして「config.inc.php」を作成します。config.inc.phpを開いて,下記の「任意の文字列」の部分に,cookie認証に用いる文字列(salt)を入れておきます。

$cfg['blowfish_secret'] = '任意の文字列'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

また,ログイン時にサーバ名とポートを指定できるように,phpMyAdminのlibrariesフォルダにあるconfig.default.phpのAllowArbitraryServerをfalseからtrueに変更しておきます。

$cfg['AllowArbitraryServer'] = true;

ローカルでの動作とエラー確認

必要なファイルのダウンロードと構成は以上です。しかし,この状態のままではまともに動きません。php.iniやmy.ini,Eclipseでの設定などが必要になります。また,デプロイの際には,ServiceConfiguration.cscfgやServiceDefinition.cscfgの設定を変える作業も必要になります。

特にやっかいなのは,Eclipse PDTが提供している機能だけでは,MySQLなどの動作をこまかく設定できなかったり,パッケージを作成するときに自動で生成されるファイルに手直しが必要になったりすることです。

実際,Windows Azureメニューから「Run Windows Azure PHP Project in Development Fabric」を実行してみると,Eclipseのコンソールに(図27)のようなエラーが出力されます。

図27 エラー表示

図27 エラー表示

Error   : CloudServices41 : The entrypoint WorkerRole1.dll  is not a valid assembly. Please provide a relative path to the binary that implements the entrypoint.

また,Azure環境のエミュレータ「コンピュートエミュレータ」⁠ログや動作状況を確認できる)で確認すると,WebRole,WorkerRoleの各ロールは稼動しているものの,WorkerRoleがエラーを出し続けていることがわかります(図28⁠⁠。

図28 エミュレータ画面

図28 エミュレータ画面

次回は,設定ファイルの確認やエラーへの対処などを行ったうえで,実際にWindows Azureにデプロイして,WorkerRoleでMySQLを動作することを確認してみたいと思います。

著者プロフィール

齋藤公二(さいとうこうじ)

インサイト合同会社

『月刊Computerwold』『CIO Magazine』(IDGジャパン)の記者,編集者などを経て,2011年11月インサイト合同会社設立。エンタープライズITを中心とした記事の執筆,編集のほか,OSSを利用した企業Webサイト,サービスサイトの制作を担当する。