I have been working with Microsoft Open Technologies Inc. for the past several months on their brand new web presence. It officially launched a couple weeks ago and is still a work in progress with many cool expansions in the works. Channel 9 has a monthly show called Web Camp TV that recently featured Jaffe Worley ( the man behind the frontend ) and myself ( infrastructure and backend ) discussing implementation details. It gives a rare insight into how a big corporation goes about setting up a corporate website. Some of the technologies that were used include:
WebMatrix is a free web development tool produced by Microsoft. WebMatrix is a complete development environment that not only provides a code editor, it also creates a new private instance of IIS Express to debug your project in, and downloads any dependencies your project may need, I.E. SQL Server Express, MySQL, PHP, etc.
I was asked what I thought of WebMatrix, however I have not spent a lot of time with it. I was working on a project that utilizes Windows Azure Web Sites and the App Gallery install of phpBB with another fellow. He was handling all the coding while I was administering the site through the web interface. I am now also coding for the site so I figured this is the perfect time to take WebMatrix for a spin..
Right off the bat I can tell you that if you are using Windows Azure Web Sites WebMatrix is a nice go to tool. WebMatrix is integrated with the Windows Azure Portal. Select your site from the Portal and there is a "WEBMATRIX" button on the toolbar. I did not have WebMatrix installed prior to starting this process. One-click of the button and WebMatrix was installed for me via Web Platform Installer.
Clicking the “WEBMATRIX” button automatically downloads the publish settings and sets up the WebMatrix environment for your project. Because WebMatrix understands phpBB it even pulled the PHP and SQL Server dependencies! The files and database were copied to my local machine. I am now able to interact with the phpBB web site through WebMatrix as an exact replica of the production website.
WebMatrix even has a nifty tool that alerts you if you attempt to make changes to project core files.
I made a few changes and clicked Run. My default browser opened and I was able to poke around the website as if it was running live. Satisfied that all seemed to be in working order, I clicked the Publish button a few minutes later. WebMatrix did a comparison of the files on the server to the local files to let me know which had changed. I could selectively choose which files to publish and which to retain. Even cooler, WebMatrix has an option to push back the entire database.
WebMatrix also supports code insight, or “Intellisense”, which is handy for finding class and function documentation throughout a project.
What is my verdict on WebMatrix? It seems to have matured into a great tool that is highly useful for web developers. Using Windows Azure Web Sites, or the WebMatrix Gallery you can, with a few clicks, have one of many popular open source content management systems (such as WordPress, Drupal, Joomla!) setup and running. The Publish feature eliminates the need for any additional applications to send files to the server. Additionally the automatic check of the server for changed files is very handy at ensuring only the proper files get uploaded or changed. Drawbacks? It currently only supports the Windows operating system.
Moving forwards I have a feeling WebMatrix will become my web code editor of choice, especially when working on Windows Azure related projects.
I have been receiving several requests each week for information on migrating WordPress from an existing (usually a local development copy) installation to Windows Azure, so I decided to write up a quick post on how to accomplish this just for you!
The power of the scaffold
The Microsoft Open Source Technologies Inc. (A wholly owned Microsoft subsidiary. Formerly Interoperability Bridges inside of Microsoft proper) team has built some great scaffolds that help you get your website up and running quickly, one of those scaffolds specifically sets up a WordPress website. Go grab the scaffold off of Github at:
There are now two paths to get your existing WordPress files into the Windows Azure project using the scaffold. At this point if your WordPress installation is located on an external storage you will need to make a local copy.
Let the scaffold handle it
The scaffold has a built-in parameter that will attempt to copy your local installation files into the project that is being created. The parameter syntax is as follows:
You can read more about using this parameter in the existing tutorial at:
If for some reason the source parameter does not work for you, or did not completely import your site files, you can always perform this step manually. Make sure that you have run the scaffold and created the Windows Azure project though as it sets up some necessary plugins and configuration.
Let's make some assumptions at this point, and I will do so using Windows path structures as this is the largest and most likely audience reading this.
Existing WordPress install: C:\mysite
Windows Azure WordPress project: C:\wazwp
Here are the steps you will take to get the files over:
Open a file browser to C:\mysite
Open a file browser to C:\wazwp\WebRole
Copy the files from inside C:\mysite\wp-content to C:\wazwp\WebRole\wp-content
That should do it! Try not to mess with any of the core files if you do not have to (You _really_ should not have to).
What about my data?
This is where things get a little sticky. Normally I would tell you to simply visit Tools -> Export in wp-admin on the existing site and Tools -> Import on the live Windows Azure site, and that works great, however if you have heavily customized plugins, widgets, etc you will lose all the settings. If that is ok for your situation then do it. Quick, simple, works beautifully.
Chances are that you have a lot of other settings you want to keep also, so in this case I would recommend using a product like Backup Buddy that can export and import everything on your site. Be sure that you have setup the Windows Azure Storage plugin BEFORE running backup buddy. Any new files created or uploaded to your WordPress site need to be in the centralized Windows Azure Storage account or you risk breaking your website when you attempt to scale out.
That's all folks!
Follow the steps in the above linked tutorial to create an uploadable package and you should be staring at a shiny new WordPress installation running in Windows Azure in a few minutes! Now go find those visitors and take advantage of the massive scaling power of the Windows Azure cloud!
Good luck in your endeavors, post a comment below if I made a goof in the article or something is not working as expected and I will try to help out
If you are looking for information on hosting WordPress on Windows Azure there have been a lot of WordPress tutorials popping up in blogs lately. Unfortunately many(most) of these posts contain misinformation, error, or are out of date. The good news is that the Microsoft Interoperability team hosts an official tutorial on deploying WordPress on Windows Azure. This tutorial is the best resource available because it is written by the people who work with Windows Azure on a daily basis and who maintain the WordPress related projects for Windows Azure.Unfortunately their website does not rank well in search engines so I am posting a link to it myself to help visibility. Please please please read this tutorial. If you have questions or find bugs you can report them on the Github issue tracker or directly on the tutorial page using Disqus
These days PHP works well on Windows Azure, and there are some great tools available in the Windows Azure SDK for PHP that will help you build, package and deploy your applications. Even though there are some excellent tools available in the PHP SDK they still require a good amount of effort and complexity to properly get from your PHP application running locally in Windows Azure. With that in mind I set out to create a tool that takes the headache out of getting your existing PHP application off your hard drive and into Windows Azure with paz. paz is a simply packaging and deployment tool for PHP projects on Windows Azure. Simply give it the path to your project and let the magic happen. In a few short seconds you will have either a project running in a local Windows Azure development environment or a package ready to be uploaded to Windows Azure itself. The following is an example of a command that will create a deployment package:
paz -in path/to/sources
After the command runs you will be able to find the package in path/to/sources/build.
paz is still in the infant stages but if you are doing work around Windows Azure with PHP I highly encourage you to check out this simple and easy to use tool. Send me some feedback on Github with bugs, likes, dislikes and feature requests. I also highly encourage you to read the tutorials put out by the Microsoft Interoperability Team about PHP on Windows Azure on the AzurePHP website