先日紹介したWindows Azure Toolkit for Windows Phone 7を実際に使ってみました。
※ Windows Phone Developer Toolsも入れておきましょう。
先日紹介したWindows Azure Toolkit for Windows Phone 7を実際に使ってみました。
※ Windows Phone Developer Toolsも入れておきましょう。
Windows Azure あるある:
せっかくデプロイしたのに「何かがおかしくて」BusyとAbortedを繰り返す
とまぁこういう状況を何とかデバッグするための小ネタです。
厳密ではないですが、ある程度の切り分けはできるんじゃないかな~的な。
※しばやん氏にASP.NET MVCだけでいいよと指摘頂いたので修正 (2011/05/29) 指摘ありがとうございます。
チャック全開兄者からパスが来たので、試してみます。
Visual Studio 2010でASP.NET MVC3 プロジェクトで開発する場合、本番環境に配置する為のアセンブリを追加したり、Binフォルダに一緒にコピーするように設定したりすごく面倒です。
特にWindows Azure上でASP.NET MVC3なWebアプリを展開する場合、気を付けないとアセンブリ不足で動作しないで凹むとかしょっちゅうです。中にはVisual Studio向けAzureプロジェクトテンプレートにMVC3を追加したり、いろいろされてる方もいらっしゃるようです。
でも面倒くさいですね(
NuGetで入るならまだしも。。
ということで、そのうち正式にWindows Azure SDKがASP.NET MVC3に対応すると思いますが、それまでのつなぎな手法を今日は紹介しておきます。
自分用メモ。
●PHP5.3とWinCacheのインストール (要Full IIS)
@echo off sc config wuauserv start= demand md appdata cd appdata cd .. 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 xcopy php.ini "%programfiles(x86)%"\php\v5.3 /Y xcopy php_memcache.dll "%programfiles(x86)%"\php\v5.3\ext /Y net start w3svc
●アプリケーションプールのアイドルタイムアウトをゼロにする (要Full IIS)
@echo off %windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00
●IISが特定のIPアドレスからの接続だけアクセス許可するように制限を付ける (要Full IIS)
@echo off start /w pkgmgr /iu:IIS-IPSecurity %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/ipSecurity /allowUnlisted:True /commit:apphost %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/security/ipSecurity /+"[ipAddress='192.168.96.0',subnetMask='255.255.255.0',allowed='True']" /commit:apphost
●ファイル共有用にWindowsファイアウォールの設定を変更し、共有フォルダを作成する
@echo off netsh firewall set service type=fileandprint mode=enable profile=Current address=10.0.0.0/8 scope=custom net share appdata=%RoleRoot%\ /GRANT:yourusername(ex:RDP user),FULL
●IISの動的ファイルの圧縮を有効にする(特定のMIMETypeに対して) (要Full IIS)
@echo off %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/json',enabled='True']" /commit:apphost %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/atom+xml',enabled='True']" /commit:apphost %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/xml',enabled='True']" /commit:apphost %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/atom%2bxml;charset=utf-8',enabled='True']" /commit:apphost
自分用メモ。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を有効にしたサービスパッケージをデプロイしても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はいろいろ面倒な手順を踏む必要がありました。
例えばIISの機能を入れたりSQL Server入れたり、SDKを入れたり…
どれぐらい手間かは「ハマらない&安心な Windows Azure SDK 1.3 のセットアップ方法(waりとnaはてな日記)」「Windows Azure SDKのインストールについて(waりとnaはてな日記)」を参照頂ければよくわかるかと思います。
※設定もれがあるとちゃんと動作しなかったりも痛いですね。
うえー面倒くせーという、そんなあなたもおいらも朗報。
Web Platform Installer を使えば簡単に解決です。
※但しOSのバージョンやエディション等の要件はクリアしておく必要があります。
一発で全部入ります!!(※全部無償でやる場合)
MIXでアナウンスされていたWindows Azure SDK 1.4のRefresh(SDK 1.4.1)がリリースされました。
このアップデートでは、IIS環境に対し簡単にWebアプリを発行できるWeb Deployment Tool (Web配置ツール)が統合され、簡単にWindows Azure上のWeb RoleにWebアプリケーションを配置できるようになりました。
但しいくつか制限があります。
あくまで開発者がテストや開発の際のWindows Azure上へのデプロイの手間を軽減させるための機能と考えたほうがいいでしょう。でも便利ですね。
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のWebRoleでFull IIS利用時、Application Poolの動作アカウントを変更したい場合ロールが起動してIISの構成が終わった後で設定しないと変更したように見えません。