If you haven’t heard, Azure’s App Service PaaS offering comes with a build in MySQL instance. See these blog posts for welcoming info:
- Announcing general availability for MySQL in-app
This is great because you can move any PHP solution (like WordPress) that uses MySQL to an Azure App Service instance. You could even use the free tier and host your blog or anything else at your likings.
Working with PHP and MySQL in Azure has its intricacies and definitely doesn’t have a lot of information.
This is a multi-part series with tips and solutions to roadblocks that I faced in dealing with the “MySQL in App” service.
- Part 1 – Overview and different interfaces to manage PHP (this post)
- Part 2 – Migrating a really large MySQL database to Azure’s “MySQL in App”
I was tasked with moving a pretty big PHP solution with a big database to Azure.
Here are some key bits of information that I were either not documented or I had a hard time figuring out.
Part 1 – Overview and different interfaces to manage PHP
Azure’s portal doesn’t have much, but it has a few crucial buttons worth knowing about. I will first explain the Kudu console, because it is a predecessor to tweaking PHP settings.
Kudu Console, aka Advanced Tools
You might be familiar with the Kudu project, a cool set of tools to manage your Azure App Instance. This is key to working with PHP and MySQL.
Access it through the App Service interface in portal.azure.com.
The Kudu UI is simple enough and has tons of useful information:
To access the console, go to the Debug console menu and click CMD or PowerShell, depending on what you need.
This gives you a neat console into the VM behind the App Service (yes, they are VM’s!).
Everything under C:\ is blocked, but you can do all you wish under D:\
An Azure App Service has PHP installed by default, and it has various versions available too. These are changeable in the Application Settings screen on the App Service:
The actual php.ini file is located in “D:\local\Config\PHP-5.5.38\php.ini” (or as per the version you are using). You can edit that, however it is a much better recommendation to do it the “right way” and create a “.user.ini” file. To do this, add a custom php.ini override file with the configurations you need, place it in your application root and deploy your application. Restart it so you force PHP to re-read its configuration.
Alternatively, you can place a “.ini” file on the D: drive, such as d:\home\site\ini, then add the ‘PHP_INI_SCAN_DIR’ configuration settings key in “App settings”:
Both will work. This is documented much better here: Configure PHP in Azure App Service Web Apps
Managing the MySQL service
You can manage the MySQL service through the Azure portal UI (very limited) or through the well-known phpMyAdmin interface. The Azure App Service comes with phpMyAdmin installed. Reach it through the difficult to see “MySQL in App” option and the “Manage” portal button/link, or through the following URL: https://[appserviceaddress].scm.azurewebsites.net/phpMyAdmin/ mine was https://blog-prod-01.scm.azurewebsites.net/phpMyAdmin/
You will be automatically logged in with an “azure” account.
And the not-so-visible Manage button:
You will reach the phpMyAdmin interface:
This is enough to get you going with basic PHP and MySQL management. My next post describes how to import large MySQL databases: Part 2 – Migrating a really large MySQL database to Azure’s “MySQL in App”