Any automatic/faster deployment for multiple static websites ?


  • Hi,

    I have about 30 different static websites in HTML format. Basically, each website is a folder on my local drive, and it contains the HTML pages inside it, So I have 30 folders.

    My problem precisely and concisely has two parts, which are as follows:

    Part(1)- Deploying all these Websites:
    Is there any way for automatic deployment? Is there any script or code for automating the process of publishing in the cloud to Azure?

    I think it is infeasible to manually repeat the following steps 30 times:

    a. create a "blank cloud service".
    b. Add the HTML in the WebRole.
    c. Right Click on the WebRole, select “publish”.
    d. logging to Azure.
    e. Uploading the cspck and cscfg

    Any idea about automating the publishing process?

    Part(2)- What is the best way of deploying a static web site on Windows Azure ?
    I have read an article recommending that the efficient way of deploying static website could be using only the Azure Blob Storage. Especially this approach saves money, Because there is no need to provision a web role to run the static website, instead the static website is running from the Azure Blob Storage itself and in turn saving charges required for running a web role: (

    So what do you think and recommend ? Please remember that I have 30 different static websites, and I want each one of them has it own unique URL. I want to use only one subscription but still I want each static website in the cloud has its own address.

    I would greatly appreciate any input regarding the two aforementioned issues (Part1 & Part2).

    27 สิงหาคม 2553 8:42



  • 1) You can automate the creation, package and deployment of the site(s). You'll need to do some digging into the exact contents of the project files for a web role, as well as the cloud service project and how its constructed. Then create a powershell cmdlet (or use whatever tool is easiest for you) to create the necessary files. Finally, leverage the existing powershell cmdlets to call cspack and handle the deploy of your site(s) to Azure. However, at this time you'll need to manually create the individual services to deploy via the Windows Azure developer portal (I don't believe the API extends to creating the services). Additionally, you will likely need to contact MSFT to get your default subscription altered so that you can add all 30 services (can't recall what the current limit is).

    2) Yes this can also be done. But if you want 30 unique URL's, you'll want to create an individual azure storage account for each site. Then you can use any Azure Storage tool to handle the upload of each site to Azure Storage.

    • ทำเครื่องหมายเป็นคำตอบโดย Alvaro-Azure 31 สิงหาคม 2553 12:26
    27 สิงหาคม 2553 9:44
  • Could you please give me your feedback on the following comments:

    1) Thanks for explaining, but actually that sounds as writing the whole thing from scratch, I really wonder how come the deployment of multiple websites isn't considered.

    2) Why should I create 30 individual Azure storage account (One for each site)?
    I was thinking about creating 30 containers inside my Blob Storage, So that each container contains 1 static website. What do you think?

    As for the URL, I want each container (Each static website) has its own URL, and I think this possible as I understood from (, So, What is your take on that?

    However this leads me to another question which is:

    3) Assume that I have 30 static websites that are stored inside 30 containers inside my Blob Storage under my subscription. So many end users are visiting these 30 static websites, So how the performance would be?

    27 สิงหาคม 2553 11:47
  • 1) not entirely from scratch, but some significant portions, yes. and Azure isn't currently targetting a reseller type model (where you're sub-hosting sites). At least not in the manner you're trying to accomplish. Aside from deployment, its also lacking the ability to track individual accessing/traffic. At least outside of parsing IIS access logs.

    2) You'll have URL's, but they'll all share the same root domain. So you'll need to do some tricks with the DNS names if you want them to be more distinquishable. Splitting into different storage accounts just makes this management a tad easier and since you're charged for total space used and not the number of storage accounts, why not take the path of least resistance.

    3) To maintain performance in Azure Storage, you'll want to properly partition your containers. Azure Storage will throttle connections based on partition traffic. However, even with the proper partitioning approach, you'll still run into IO throttling because you don't have any caching mechanism in place. Depending on your scalability needs, there are different things considerations.

    • ทำเครื่องหมายเป็นคำตอบโดย Alvaro-Azure 31 สิงหาคม 2553 12:26
    27 สิงหาคม 2553 11:55
  • 1) Fully understood – Thanks.

    2) You said: “Splitting into different storage accounts just makes this management a tad easier and since you're charged for total space used and not the number of storage accounts, why not take the path of least resistance.” That is absolutely excellent idea. I thought I'll be charged based on the number of storage accounts. However, Do you know how many accounts am I allowed to have under 1 subscription? Also, could you please provide me info about some of the tricks with the DNS names to have some distinguishable URLs ?

    3) Could you guide me how to properly partition my containers? Also, How can I improve the performance by caching mechanism, please provide me more info on this matter?

    27 สิงหาคม 2553 12:24
  • Earlier this year, the number of hosted services per Azure subscription was capped at 6 (it used to be 20) - see this post for more details.

    At that time, the number of hosted storage accounts was capped at 5 per Azure subscription. I don't think that's changed.

    In either case, you can contact Microsoft to ask for more services or storage accounts. Depending on how much you ask for, there might be some type of credit check involved.

    • ทำเครื่องหมายเป็นคำตอบโดย Alvaro-Azure 31 สิงหาคม 2553 12:26
    27 สิงหาคม 2553 13:06
  • David covered #3.

    For 2... hopefully this covers all you need to know on the subject:

    • ทำเครื่องหมายเป็นคำตอบโดย Alvaro-Azure 31 สิงหาคม 2553 12:25
    27 สิงหาคม 2553 13:11