• My first steps using PHP with Microsoft Azure

    I’m thinking about migrating to the cloud for years, e.g. after attending Microsofts Visual Studio Evolution 2012. As a .net developer I would of course prefer Microsoft Azure over Amazon Web Services (AWS), Heroku and lots of others.

    But Cloud has a big disadvantage for me: As I’m doing all this in my freetime, I want to have a certain limit for the total costs per month. With dedicated hardware I have fixed limit. If there is too much traffic, website is down. Ok, that’s bad, but it’s even worser if I have to pay a monthly bill of hundreds of Euros for my free projects. During the talk on the Visual Studio Evolution with some experts from Microsoft they showed a new price calculator, nevertheless it did not meet my expectations. Of course the cloud is only for professionals, needing the scalability, CDN etc. but I’d prefer to have a small solution for a small fee so freetime developers could test and build up their knowledge.

    Azure Info Day 2015

    Microsoft offers free Info Days / TechCamps for several products, e.g. Windows 10, Web Development and also Cloud and Azure. So I joined the Cloud and Azure Info Day at Microsoft Cologne on 18. August 2015 to see what’s new. (Reminder if I will go to MS Cologne somewhen again: Cologne offers parking lots for just 4 € per day and it includes the streets around Microsoft Cologne. It was easy to get free space around 08:30 so no need to go to a parking garage).

    Malte Lantin and Peter Kirchner showed a rough overview about Azure. Of course it’s not possible to go into too much details on a one day training but at least they convinced me to give Azure a try. Maybe the main reason was the 170 € free trial budget for the first month after registration? Or maybe the generally free options so I thought about migrating my PHP webspace Fussball im FreeTV?

    Grav CMS on Azure

    Ok, so I registered and have some free Azure resources now. As written before, I’m using Grav CMS for Fussball im FreeTV. So that should be easy to migrate: Create a new PHP webapp, upload the files, done! And as expected, it just took minutes to get it running. But unexpectedly, the website on Azure takes 15 – 30 seconds to display, while the one on hardware takes just 2-3 seconds….? Additionally the Azure site does not display the next appointments for whatever reason. But that should not be the reason for the delay as far as I see. So I tried to upgrade Grav to the latest version (from 0.9.37 to 0.9.39…. shouldn’t make a big difference). Using the new admin panel I only get ‘Invalid Ajax Request’. Switching to the configuration tab shows error messages like these:

    rename(D:/[mypath]/cache//tmp/Grav-55e4017684489/grav-update/assets/,D:/[mypath]/assets): The specified path is invalid. (code: 161)

    As I just wanted to enable the cache (I’ve described before why I’ve disabled it), this seemed to work successfully. But now I could not even access my website anymore due to the following error:

    D:/[mypath]/assets does not exist

    Of course I could now upload all the files via FTP again and do the upgrade manually, but I decided to stop testing for multiple reasons:

    • Did not work out of the box (appointments are not displayed)
    • Was very slow (and I’m sure an update would not fix it)
    • I don’t want to spend much time on PHP
    • I prefer to use Azure with .net technologies

    What else to do

    Hmmm… so now I have 170 € test budget and just 2-3 weeks to spend them. So I HAVE to use it 😉 I’ll start with migrating another project which includes an ASP.net and a MS SQL database. The database already exists on my local MS SQL Server, so I want to migrate / deploy / import / sync it to Azure as easy as possible. I’ll check how to do this and will post another blog post soon.

Leave a comment

If you want to share your opinion, leave a comment.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">