Windows Azure is the Mircrosoft cloud computing solution. One thing that might come as a surprise is that is specifically intended to run php applications (well, it runs .net too, even java). Long story short, we got introduced to the azure platform during the JumpIn! Camp. The project to get phpBB running on the Azure platform started right there – now it’s showing results.
The prequisite for deploying on Azure is the new support for the native MSSQL driver, which was contributed by Microsoft.
However, a few issues had to be tackled to actually run phpBB in the cloud, namely:
- SQL Azure is not quite the same as SQL Server and requires a few tweaks
- Files (uploads) can’t be stored on the local file system, but have to be shared among all instances
- A few oddities of the Azure platform, especially regarding values reported by the webserver
To expand a bit on the issues: SQL Azure requires primary (“clustered”) keys on all tables, something the default phpBB schema does not deliver. On the flip side, the phpBB MSSQL schema includes partition clauses, which are not supported on Azure. Long story short: it needs a different schema. Files cannot be stored locally in a multi-server environment – for instance a cloud – but have to be shared between all instances. This required a few patches to the phpBB core. Finally, Azure includes a load balancer, which reports an incorrect – internal – port via the ‘SERVER_PORT’ variable. This had to be corrected.
All of these changes can be found in my azure branches of my fork at github: http://github.com/kellanved/phpbb3/tree/feature/azure_blob_storage and http://github.com/kellanved/phpbb3/tree/bug/9725
So, how to use these? The answer is:
- Download the source from the bug/9725 branch
- Create a SQL Azure database
- Add a firewall rule to allow your own machine to connect to the SQL Azure database
- Start the phpBB installation, using the bug/9725 branch on your local machine
- Use the credentials of the SQL Azure database during the install
- Add the line define(‘AZURE_INSTALL’, true); to the config.php file
- Delete the install directory
- Create an Azure package with the phpBB installation you had locally
- Deploy the package on Azure
- Add a firewall rule to SQL Azure to allow your phpBB instance to connect with the database
Congrats, you’re running phpBB on Azure.