Azure Migration

Managed WordPress hosting for sites running on Azure App Service.

App Service is a deployment target rather than a server. Your configuration is in the portal, your uploads are on a mount, and there is no box to take a copy of.

App Settings read outMounted uploads collectedFree migration
Free migrationConfig extractedPersistent storageDaily backupsFree SSL24/7 support
Platform, not server

Where an App Service site actually keeps things.

Everything that would normally be in a file on a server is somewhere else, which is exactly what makes the export unusual.

Configuration in App Settings

Database credentials, salts and feature flags are injected as environment variables from the portal. wp-config.php reads them, so the file itself contains none of the values you need.

Read from the portalRewritten as real config

A flexible server holding the data

Azure Database for MySQL runs separately with its own firewall rules and enforced TLS, so the export is taken there rather than from the app.

Uploads on mounted storage

Media commonly sits on an Azure Files share mounted into the app, because the app's own filesystem is not somewhere to keep anything you want to survive a restart.

A deployment slot doing staging

Slots are how App Service does staging, and a slot has its own settings. Which slot is actually serving production gets confirmed before anything is copied.

Front Door in front of everything

Caching, WAF rules and custom routing are frequently configured in Azure Front Door or CDN, which sees traffic long before WordPress does.

Migration

Read the portal, then take the copy.

An App Service export that starts with the filesystem gets a site that cannot connect to its own database, because none of the credentials are in the files.

  • App Settings exported before anything else
  • MySQL flexible server dumped with TLS enforced
  • Mounted file share collected
  • Slots and Front Door rules confirmed
App Settings
Extracted
31 keys
MySQL
Flexible server
exported
File share
Uploads collected
11.2 GB
DNS cutover
Awaiting your go-ahead
scheduled
Performance

No cold starts, no scaling rules to write.

App Service scales when you configure it to. The difference here is that the tuning is already done and there is no plan tier deciding whether PHP has enough memory.

Free
migration, done by us
No
scaling rules to author
14
edge regions
MagicWP129 ms
App Service basic tier760 ms
Uploads over a mounted share430 ms

Illustrative comparison of a page load before and after the move. Your numbers depend on tier, slot configuration and storage layout.

Configuration

What we change when a site arrives from Azure

The theme here is that App Service deliberately keeps state out of the application, so the migration has to go and find it.

SettingWhat we doWhy
Configuration valuesApp Settings read from the portal and written into real configurationApp Service injects credentials and salts as environment variables, so wp-config.php on disk holds only references and a filesystem copy produces a site that cannot reach its own database.
DatabaseExported from Azure Database for MySQL with its TLS requirement honouredThe flexible server sits behind its own firewall and refuses unencrypted connections, so an export attempted the usual way is rejected before it starts.
UploadsCollected from the mounted Azure Files shareApp Service treats the application filesystem as disposable, so media is kept on a mounted share that a deployment package or a slot swap never contains.
Deployment slotsProduction slot confirmed before the export is takenStaging on App Service is a slot with its own settings, and copying the wrong one produces a migration of a site nobody was visiting.
Front Door rulesCaching, WAF and routing behaviour recreated at our edgeFront Door handles those requests before App Service is involved, so the rules are invisible to WordPress and vanish silently when the endpoint is decommissioned.
Plans

Simple, transparent pricing.

Every plan includes free migration, daily backups, SSL and 24/7 support.

MonthlyYearly
Starter
For personal sites, blogs, and portfolios.
$20/mo
Billed $240 yearly · save $60
  • 1 WordPress site
  • 10 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Support tickets
Start free trial
Pro★ Most popular
For growing businesses and busy stores.
$80/mo
Billed $960 yearly · save $240
  • 5 WordPress sites
  • 50 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Priority support tickets
Start free trial
Enterprise
For agencies and high-traffic platforms.
$250/mo
Billed $3000 yearly · save $600
  • 20 WordPress sites
  • 200 GB NVMe disk
  • Free SSL
  • Daily backups
  • One-click deployment
  • Dedicated support
Start free trial
FAQ

Questions, answered.

My wp-config.php has no database credentials in it. Is that normal?
On App Service, yes. Credentials arrive as environment variables from App Settings and wp-config.php only references them, which is why the settings are exported from the portal before anything else.
How do you export Azure Database for MySQL?
Directly from the flexible server, honouring its firewall rules and its requirement for encrypted connections. An export attempted without TLS is refused outright rather than failing partway.
Where are my uploaded images?
Almost certainly on a mounted Azure Files share rather than in the app itself. App Service treats the application filesystem as disposable, so a deployment package will not contain them and they have to be collected from the share.
I use deployment slots. Which one do you migrate?
Whichever is actually serving production, confirmed with you first. Slots carry their own settings, and copying a staging slot by mistake produces a faithful migration of a site nobody was using.
What replaces Front Door?
Our edge, with the caching, WAF and routing rules recreated. Those behaviours run before App Service ever sees the request, so they are not in any site export and disappear when the endpoint goes away.

Stop deploying WordPress like an application.

Free migration, configuration recovered from the portal, and storage brought back with it.