Native Apps At The Client & Cloud

Srinivasan Sundara Rajan

Subscribe to Srinivasan Sundara Rajan: eMailAlertsEmail Alerts
Get Srinivasan Sundara Rajan: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Related Topics: Cloud Computing, Web 2.0 Magazine, Open Source Journal

Cloud Computing: Article

Host WordPress Blogging Platform on Windows Azure Cloud

We read stories about running SugarCRM and Microsoft ERP software running on cloud; here is how WordPress can run on Azure

Microsoft Azure services platform is a comprehensive offering that enables enterprises build full scale applications that leverage the advantages of the Cloud computing paradigm.  A useful analogy is to compare Windows Azure to conventional on-premise operating systems. Conventional operating systems manage basic storage, devices, and run applications. Windows Azure provides the same functionality within Microsoft's datacenters which are built to provide cloud computing. In order to provide a runtime environment for custom applications, Windows Azure's Fabric Controller manages a datacenter of servers to provide compute power.

As an open platform, Windows Azure offers choices to developers. It allows them to use multiples languages (.NET, PHP, Ruby, Python or Java) and development tools (Visual Studio or Eclipse) to build applications which run on Windows Azure and/or consume any of the Windows Azure platform offerings from any other cloud or on premise platform. With its standards-based and inter operable approach, the Windows Azure platform supports multiple Internet protocols including HTTP, XML, SOAP and REST -key pillars of data portability.

PHP being one of the popular languages for web application development, release of PHP Azure SDK has opened up a new possibility for PHP developers.  While PHP on Azure is an obvious choice to consider for new application development, it is even possible to migrate existing PHP-MySQL applications to SQL Azure based azure platform to leverage the benefits of Microsoft's cloud infrastructure. This story showcases how to migrate WordPress blogging platform onto windows azure cloud.

Pre-requisites
First step is to create a windows azure account at http://www.microsoft.com/windowsazure/, if you don't have one already.  There is a free Azure platform trial offer going on till September, 2011 with 750 hours of computing power, 20GB storage and 1GB SQL Azure database.  Subscribe for a Azure Platform and a SQL Azure development accelerator cores via Microsoft online services portal.   Once subscription is active,        windows azure platform portal shows account details at https://windows.azure.com/.  Next step is to setup a storage account from this portal by selecting a URL and a region.

Download following software:

Choose php_sqlsrv_53_nts_vc9.dll, for it matches our PHP version, VC9 x86 Non Thread Safe.  Then, rename php-5.3.6-nts-Win32-VC9-x64 to php and Put the driver into ext folder inside php.   Extract the windows azure storage plugin to the plugins folder in wp-content of wordpress.

Configuration
Create a visual studio project by selecting new project -> CGI Web role under cloud templates. Add php and wordpress folders to Visual studio project structure. You need to configure PHP, Wordpress, Web role and Azure in next steps before package creation and deployment.

PHP Configuration
Rename php-development.ini to php.ini. Click to Open php.ini, look up extension_dir and change its value to "./ext". It indicates the extension directory of PHP. Add a new entry for sql azure extension as "extension = php_sqlsrv_53_nts_vc9.dll "to php.ini. Also, look up ;extension=php_curl.dll, and remove its comment .Because the azure plugin depends on Curl module.

 

WordPress Configuration

Rename wp-config-sample.php to wp-config.php which is the configuration file of Wordpress. Open it, fill the database connection information as shown below:

These details can be obtained from the azure portal

Web Role Configuration

Open Web.roleConfig, in the application element, change the fullPath attribute to "%RoleRoot%\approot\php\php-cgi.exe" and set the arguments attribute to an empty string.

Open Web.config in PHP_WebCgiRole project,locate the system.webServer section and insert the following (highlighted in red) configuration:

<system.webServer>
...
<modules>
...
</modules>
<handlers>
...
</handlers>

<defaultDocument enabled="true">
<files>
<add value="index.php" />
</files>
</defaultDocument>

</system.webServer>

In the <handlers> section, Change the path attribute of the FastCGI Handler to the string "*.php" to indicate that this handler should process any request for documents with this extension. Next, change the script`Processor attribute to the value"%RoleRoot%\approot\php\php-cgi.exe".

 

Azure Configuration

Go to Servicedefinition.csdef  and remove below section.  This is to fix HTTP 500 Internal Server Error in CGI Web Role when using Azure Cloud Tools 1.3

Go to ServiceConfiguration.cscfg, for settingsname , change value from

<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />

To

<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=Name;AccountKey=Key" />

Account Name & Key can be obtained from Azure storage Portal

Packaging
Open configuration of WebCGIRole1 by right clicking and selecting properties option.   Set instance count to more than two so that application tier will be multi-tenant, which is the most important feature of a SaaS application.

Now, Select WindowsAzureProject and Publish.  Create a Service Package Only option and press OK.  Packaging process creates two files, one configuration file and another deployment package.  Now we are ready to deploy the package to azure hosting account.

Deployment
On Windows Azure portal, create a hosting account by providing: Service name,URL Name,Region,Stage/Production,Deployment Name, Package and Configuration File as shown below:

Once the deployment is complete,  WordPress installation page will open up for further actions

Once the installation is complete, you can login and start posting content to wordpress blog.  Access live blog here http://wp-azure.cloudapp.net/

Conclusion
This tutorial explained a tested process for configuring all components for hosting a WordPress blog on windows azure platform.  If you are using a hosted WordPress blog and if you are paying fixed infrastructure cost, consider migrating it to azure cloud platform and enjoy the pay as you go benefits of a cloud infrastructure.

Reference

More Stories By Abdul Jaleel Kavungal

Solution Architect at Mahindra Satyam