コマンドラインで頑張ってみた結果

自分用メモ。Webロール用。

set PATH=c:\Program Files\Windows Azure SDK\v1.4\bin;%PATH%

set PACKPATH="C:\temp\CSPack"
set CSDEF="deploypackage\ServiceDefinition.csdef"
set OUT=/out:deploypackage\sample.cspkg
set SITES=/sitePhysicalDirectories:RoleFiles;Web;%PACKPATH%\RoleFiles
set ROLE=/role:Web;%PACKPATH%\RoleFiles;bin\Role.dll /rolepropertiesFile:Web;deploypackage\role.txt

cd %PACKPATH%
cspack %CSDEF% %OUT% %SITES% %ROLE%

パスはこんな感じにしておいてください。

CSPack
├─DeployPackage
│      MakeDeploypackage.bat
│      role.txt
│      ServiceDefinition.csdef

└─RoleFiles
    │  Web.config
    └─bin
           startup.cmd
           role.dll

実行する場合はWindows Azure SDK Command Promptからやるのがいいです。
ただ下記の環境変数があれば普通のコマンドプロンプトでもいけそうですけどね。

ServiceHostingSDKInstallPath=C:\Program Files\Windows Azure SDK\v1.4\

ちなみにCSPackには隠された12番目の理論 コマンドライン引数 /noencrypt があります。
*.cspkgを証明書を使った暗号化しないのでCSPack関連のファイルだけ別PCに持って行ってパッケージングするときに便利。(SDKのインストールしたくない場合とか)
※でもまぁ非公式なので使わないほうがいいですね。

しかし綺麗なコマンドじゃないですな。

Windows Azure SDK 1.4 refresh でWindows Azure Connect Endpointの接続が失敗する

さとうなおきさんのツイートより。

Windows Azure SDK 1.4 Refreshを使用してWindows Azure Connectを有効にしたサービスパッケージをデプロイしてもWindows Azure Connectに繋がらない問題があるようです。

FixしたSDKがリリースされているので、一度Windows Azure SDKをアンインストールして再度インストールする必要がるようです。

Windows Azure Connect Team Blog > Windows Azure SDK 1.4 refresh

1) Windows Azure SDKをアンインストールします。

2) http://www.microsoft.com/windowsazure/getstarted/default.aspx ここから再度SDKをセットアップします。(Web Platform Installer経由です)

※再インストール後もバージョンかわってなさそうです…

ということでWindows Azure Connectを利用される方は注意しましょう。

Windows Azure SDK のインストール

以前のWindows Azure SDKはいろいろ面倒な手順を踏む必要がありました。

例えばIISの機能を入れたりSQL Server入れたり、SDKを入れたり…

どれぐらい手間かは「ハマらない&安心な Windows Azure SDK 1.3 のセットアップ方法(waりとnaはてな日記)」「Windows Azure SDKのインストールについて(waりとnaはてな日記)」を参照頂ければよくわかるかと思います。

※設定もれがあるとちゃんと動作しなかったりも痛いですね。

うえー面倒くせーという、そんなあなたもおいらも朗報。

Web Platform Installer を使えば簡単に解決です。
※但しOSのバージョンやエディション等の要件はクリアしておく必要があります。

一発で全部入ります!!(※全部無償でやる場合)

Windows Azure SDK 1.4 Refresh

MIXでアナウンスされていたWindows Azure SDK 1.4のRefresh(SDK 1.4.1)がリリースされました。

このアップデートでは、IIS環境に対し簡単にWebアプリを発行できるWeb Deployment Tool (Web配置ツール)が統合され、簡単にWindows Azure上のWeb RoleにWebアプリケーションを配置できるようになりました。

但しいくつか制限があります。

  • Web配置はシングルインスタンス(1インスタンス)のみ対応できます。
  • このツールを使用したシナリオはテストや開発時を想定しています。
  • Web配置ツールを使用した際の更新ファイル等はサービスパッケージデプロイ後のロールインスタンス上のファイルを直接更新するので永続化されません。最終的にはサービスパッケージを作成し、Windows Azure上へデプロイする必要があります。
  • Web配置用にInputEndpointを1つ消費します(リモートデスクトップ接続も必須です)

あくまで開発者がテストや開発の際のWindows Azure上へのデプロイの手間を軽減させるための機能と考えたほうがいいでしょう。でも便利ですね。

続きを読む

Windows Azure Traffic Manager

MIX11でアナウンスのあったWindows Azure Traffic Manager (CTP)がActiveになってました。
Windows Azure Traffic ManagerはWindows Azure Virtual Networkカテゴリに属する新しい機能です。(他にはWindows Azure Connect等が含まれます)

何をするものかというと、ホストサービス間をまたがってWeb Roleの負荷分散やフェイルオーバー、ラウンドロビンを行うことができます。

※詳細はWindows Azure Traffic Manager Configuration Guidを参照ください。(今時点で一番詳しいドキュメントです)
このドキュメントに動作原理やトラフィックの流れなど、全部書いてます。

続きを読む

Windows Azure アプリケーションの構成とか

Windows Azureのアプリケーションを作る際、どのようにロールを構成してエンドポイントを設定して…というのは結構悩みどころかなという気がするんですが皆様いかがでしょうか。

単純にSQL Azure(DB)+Webサーバーx n 台あればいいYO!という構成だと(インフラ的なところで)悩むところはあまりないのですが、Worker Role絡んだり、WebフロントエンドとバックエンドとDBと…とかになってくると意外とはまりそうですね。ええ、はまってますとも。

ということで今日はWindows Azureの構成とパッケージング、エンドポイントあたりをダラダラと考察したいと思います。

続きを読む

Windows Azure Platform Training Kit April 2011 Update

リリースされてました。

変更点は以下の通りです。

  • [New] Authenticating Users in a Windows Phone 7 App via ACS, OData Services and Windows Azure lab
  • [New] Windows Azure Traffic Manager lab
  • [New] Introduction to SQL Azure Reporting Services lab
  • [Updated] Connecting Apps with Windows Azure Connect lab updated for Connect refresh
  • [Updated] Windows Azure CDN lab updated for CDN refresh
  • [Updated] Introduction to the AppFabric ACS 2.0 lab updated to the production release of ACS 2.0
  • [Updated] Use ACS to Federate with Multiple Business Identity Providers lab updated to the production release of ACS 2.0
  • [Updated] Introduction to Service Bus lab updated to latest AppFabric portal experience
  • [Updated] Eventing on the Service Bus lab updated to latest AppFabric portal experience
  • [Updated] Service Remoting lab updated to latest AppFabric portal experience
  • [Updated] Rafiki demo updated to latest AppFabric portal experience
  • [Updated] Service Bus demos updated to latest AppFabric portal

Azure AppFabricまわりのアップデートが多いですね。
追加された、OData・ACS経由のWindows Phone7のユーザー認証のHOLと、Traffic Managerに関するHOLは熱いですね。

個人的にはTraffic Managerに興味ありありです。
DC跨った分散配置が標準機能として提供されるんですからねー。HOLのドキュメント見ただけでわくわくしますね。はやくActiveにならないかな。

Windows Azure News from MIX11

Windows Azure Team Blogに記載があったMIX11で発表されたWindows Azure関連のニュースです。
超適当翻訳。

============

新しい機能とサービス

  • アップデートされたWindows Azure SDKには、WebサイトやWebアプリケーション、IIS Webサーバーへのデプロイや管理、移行をシンプルに行えるWeb Deployment Toolが含まれます。
    この新しいツールはVisual Studio 2010とWeb Platform Installerに統合されます。
    このアップデートは後日提供されます。
  • Windows Azure AppFabric Access Control Serviceがアップデートされました。企業のディレクトリとWebのIdentitiesを統合することでWindows Azureアプリケーションにシングルサインオンを提供します。
  • Windows Azure AppFabric Cachingサービスは30日以内にリリースされます。Windows AzureやSQL Azureのパフォーマンスを向上させることができます。
  • Windows Azure Traffic ManagerをCTPとして提供します。この新しいサービスは、Windows Azureの利用者/顧客が簡単に、複数の地域にまたがっているアプリケーションのパフォーマンスのバランスを取ることができます。
  • Windows Azure Content Delivery Network (CDN)のプレビュー版によりIIS Smooth Streaming機能が提供され、開発者はIIS Smooth Streamingエンコードされたビデオを、Windows Azure Storageアカウントに配置しiOSやAndroid 3.1(Honeycomb)、Silverlightクライアントに配信することができます。

…書いてて http://sqlazure.jp/b/windows-azure/495/ に翻訳があがってたのでそちら参照でw(オファーの話は面倒)

Windows Azure Traffic Manager はベータプログラムから申し込めます。

急ぎはこんなもんかな。

Windows Azure + PHP

Windows Azure上でPHPを動作させる場合、以前ならphp-cgi.exeも一緒にアプリケーションに含めたりしてたと思います。

でもWindows Azure SDK 1.3以降ではスタートアップタスクも利用できるし、Full IIS機能が使えるのでPHPも含めてIIS+FastCGI+PHPな環境にしたいですよね。

ということでおなじみのWebPICmdLineを利用してPHPをインストールするスタートアップタスクです。

@echo off
sc config wuauserv start= demand
md "%~dp0appdata"
reg add  "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d "%~dp0appdata" /f
webpicmdline /Products: PHP53 /AcceptEula
webpicmdline /Products: wincache53 /AcceptEula
reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /f
net start w3svc

ついでにPHPのアクセラレータとしても利用できるWincacheも入れてます。
※WincacheをインストールするとどうもIISが止まるようなのでサービス開始のコマンドも入れてます。

後は以下のようにサービス定義ファイル(.csdef)でタスクを呼び出すようにします。
<Startup>
    <Task commandLine="InstallPHP.cmd"  executionContext="elevated" taskType="simple" />
</Startup>

これでアプリケーションの開発者は純粋にPHP部分だけに注力できますね。

ロールのエントリポイントも別途起こせるのと、CSPackを利用すれば大分Windows Azure固有の部分を減らせる=PHP開発者がすぐにWindows Azure アプリケーションを開発できるんじゃないかなーと思います。

参考: How to Configure IIS Components in Windows Azure (MSDN)

追記。Windows Azure Command-line Tools for PHPなるものがあるので、こんな苦労しなくてもいいかも知れませんね。\(^o^)/