Notes from Windows Azure Websites by Matt Milner
- Application load balancer
- Content + configuration in shared storage
- http://<account>.azurewebsites.net
Publishing
- FTP, Web Deploy, Continues integration
- Use EnableCodeMigrations to create the db and seed some default data
- Use a publishing profile (import on web publish)
- One ftp location even though you have multiple instances.
Pricing Models
- Free only up to 10 sites, multi-tenant, limited dns entries, outbound data limits, throttles on cpu and memory usage.
- Shared is multi-tenant, per site/instance charges, custom domain names, unlimited outbound charged separately.
- Reserved is vm-size with 1-3 instances, up to 100 sites.
Monitoring
Counters: CPU, Data in/out, Http Errors, Requests
Diagnostics: Error pages, Logging, IIS logs, Failed request
Team Foundation Service
Setup publishing: Authorize and create build definition
Build: Publish to azure on succesful build
Local Git Repository
Setup publishing: Create repository on azure websites
Push: Push to git repository initiates build on azure
Build: Deploy to azure on succesful build
Solution
- Make sure your dlls are correctly referenced (use nuget)
- Correct your Web.Release.config (use preview transformation)
- .gitignore (packages/ bin/ obj/ *.suo *.csproj.user)
Azure
- Setup Git Publishing
- git remote add fooazurealias https://<account>/foo.git
- git push fooazurealias master
Hosted Git Repository
Codeplex, GitHub, BitBucket
Setup publishing: Create repo on azure, authenticate hosted with oauth
Push: Push to hosted, will post notification to azure, azure will clone repo
Link your Azure website to a specific branch on github.com
Windows Azure PowerShell
get-module
get-command -module azure
$mgmtCert = get-item cert:\\currentuser\my\$mgmtCertThumbprint
Set-AzureSubscription -SubscriptionName KensCloud -SubscriptionId $subscriptionID -Certificate $mgmtCert
Select-AzureSubscription -SubscriptionName KensCloud
get-azurewebsite
get-azurelocation
New-AzureWebsite -Location "West US" -Name "fooNew"
$site = get-azurewebsite -Name fooNew
$site
$site.HttpLoggingEnabled = $true
$site.RequestTracingEnabled = $true
$site.NumberOfWorkers = 3
$site | Set-AzureWebsite
Node.js
npm install azure-cli
node azure account download
node azure account import c:\foo\foo.cer
del c:\foo\KensCloud-11-11-2011-credentials.publishsettings
node azure site create KensNode
node azure site browse KensNode