Pick the cloud shape before you copy anything
Moving a site to cloud hosting means choosing a cloud shape, copying files and the database to the new instance, syncing changes twice, issuing SSL, then switching DNS with a TTL short enough to roll back. Keep the old server running for a week. The database is the part that needs the second sync.
Cloud is a shape, not a brand. A brochure site gains nothing from a root server, and a Node app cannot run on a shared cPanel plan. Pick the row that matches what the site actually is today.
| Shape | Fits | You manage | WebJi® price |
|---|---|---|---|
| Shared cPanel | Brochure site, blog, small store | Files, database, mail | From ₹300 a month |
| Cloud instance | Store or app that needs its own CPU and RAM | The application; the host runs the machine | Cloud Entry, ₹5,900 a month |
| Root cloud VPS | Custom daemons, Docker, Node, cron-heavy work | OS, firewall, backups, patches | Cloud Business or Pro |
| Private or dedicated cloud | Compliance, steady heavy load | Contract scope | Quoted by email |
Prices above are per month and before 18% GST. If the current site fits the first row, a cloud migration is a purchase you do not need yet.
Audit what the site depends on
The audit is what stops a migration from becoming an outage. Copy the versions, not just the files: a site built on PHP 7.4 will fatal on a PHP 8.3 image before the home page finishes rendering.
- PHP version and modules:
php -vandphp -m. Note anything non-standard. - Cron and workers:
crontab -l, plus systemd units or queue workers the app needs. - Disk and database size:
du -sh public_html, and the table sizes in phpMyAdmin. - DNS: A, AAAA, CNAME, MX, TXT (SPF, DKIM), and the TTL on each record.
- Outbound services: SMTP provider, payment webhooks, external APIs bound to the server IP.
Anything that names the old IP has to change. That includes firewall allow-lists at a payment gateway and SPF records that name a mail server by address.
Snapshot the source and test the restore
A backup you have never restored is a guess. Take the archive, restore it once on the new machine, and only then start the real copy.
- On the old server, create a full archive of the document root and a database dump, and download both.
- Provision the cloud instance, then restore the archive into a staging folder, not the live path.
- Import the dump into a scratch database, point a copy of the config at it, and load the site by IP.
- Delete the staging copy or keep it as the rollback reference. Do not leave two configs in one folder.
You know the backup is real when the staging copy loads with images, stylesheets and a working login. If it fails here, it would have failed after the cutover with visitors watching.
Copy files and the database to the cloud server
rsync is better than a download and upload for one reason: run it twice and the second pass moves only what changed. The database needs its own path because it cannot be rsynced while open.
- Sync the files:
rsync -aHAX --numeric-ids --info=progress2 -e "ssh -p 22" /home/USER/public_html/ root@NEW-IP:/var/www/example. com/ - Dump on the old server:
mysqldump --single-transaction --quick --routines --triggers -u USER -p DBNAME | gzip > db.sql.gz - Import on the new one:
gunzip -c db.sql.gz | mysql -u USER -p DBNAME - Set ownership and permissions:
chown -R www-data:www-data /var/www/example.com, folders 755, files 644. - Update the config file with the new database host, user and password, then load the site by IP.
Keep the same domain name through the test and no URL search-replace is needed. The site sees its real hostname from the hosts file, so links and redirects behave normally.
Sync the delta and freeze writes
Between the first copy and the cutover, the old site keeps taking orders and comments. The delta sync closes that gap: stop writes, copy again, then take a second database dump.
- Put the application in maintenance or read-only mode. On WordPress that is
wp maintenance-mode activate. - Run the same rsync command again with
--deleteso files removed on the old server disappear on the new one. Check the destination path before you press enter. - Take the second dump and import it over the first. This is the copy that carries the last orders.
- Compare a row count and the newest order ID or comment ID on both sides. They must match exactly.
- Lift maintenance on the new server only, and leave the old one read-only until the week is over.
A shop that cannot close for even ten minutes can keep the cart read-only instead of taking the whole site down. The sync is the same; the customer simply sees a paused checkout.
Issue SSL before the cutover
A Let's Encrypt HTTP-01 challenge fails while DNS still points at the old server, because the validation request never reaches the new machine. Plan for that instead of discovering it at midnight.
- DNS-01: add the
_acme-challengeTXT record at the DNS provider and issue withcertbot certonly --manual --preferred-challenges dns -d example.com -d www.example.com. This works before the switch. - Copy the existing certificate and private key from the old server if it is a paid certificate you already own. The hostname is the same, so the pair stays valid.
- Issue after the switch only if a browser warning for a few minutes is acceptable. It is not, for a store.
Check the new machine before DNS moves: openssl s_client -connect NEW-IP:443 -servername example.com should return the certificate for your domain, not a self-signed default.
Cut DNS over with a rollback plan
Lower the TTL to 300 seconds a day before the change, then switch the A record. A short TTL is the difference between a rollback that takes minutes and one that takes a day.
- Record the current answers:
dig +short A example.com,dig +short AAAA example.comanddig +short NS example.com. - Take a snapshot of the new instance immediately before the switch, so a bad deploy can be rolled back at the disk level.
- Change the A record to the new IP, or move the nameservers if the whole zone is moving. The nameserver guide covers the registrar side.
- Verify from two resolvers:
dig +short example.com @1.1.1.1anddig +short example.com @8.8.8.8. - Keep the old server running and paid for a week. Cancel only after mail, forms, cron and logins have all worked for seven days.
To roll back, point the A record at the old IP and wait one TTL. If customers wrote data on the new server in the meantime, dump that database back to the old one after the DNS change, or restore the instance snapshot if the machine itself is the problem.
What cloud hosting costs on WebJi
WebJi® Cloud Entry is ₹5,900 a month for 2 vCPU, 8 GB RAM and 100 GB storage, before 18% GST. Cloud Business is ₹7,900 for 4 vCPU, 16 GB and 250 GB, and Cloud Pro is ₹11,900 for 8 vCPU, 32 GB and 500 GB.
| Plan | Specs | Price (₹/month) |
|---|---|---|
| Cloud Entry | 2 vCPU · 8 GB RAM · 100 GB storage | 5,900 |
| Cloud Business | 4 vCPU · 16 GB RAM · 250 GB storage | 7,900 |
| Cloud Pro | 8 vCPU · 32 GB RAM · 500 GB storage | 11,900 |
Move up a row when CPU or RAM stays above about 70% at normal traffic, not because a migration is happening. The cloud hosting page lists what each plan includes, and the migration service, ₹700 one-time for one domain with files and up to five databases, covers the copy if you would rather not run the commands. SSL is on the certificate page. Free migration is subject to terms and approval.
Frequently Asked Questions
Do I need cloud hosting for a small website?
No. A brochure site or a small blog is cheaper and simpler on shared cPanel hosting from ₹300 a month before GST. Cloud pays off when traffic spikes, a custom runtime is needed, or the site needs its own CPU and memory.
How much downtime does a cloud migration need?
One TTL for DNS, plus the minutes the site is in maintenance mode for the delta sync. With a 300-second TTL and a read-only cart, most customers see no error at all.
Why does SSL fail before the DNS change?
An HTTP-01 challenge asks the certificate authority to fetch a file from your domain, and DNS still points at the old server. Use a DNS-01 TXT record, or copy the existing certificate and key, then the new machine is ready before the switch.
How do I move the database without losing orders?
Freeze writes, dump with --single-transaction, import, and compare the newest order ID on both sides. The second dump after the freeze is the one that carries the last orders, so do not skip it.
What is the rollback plan if the cloud server fails?
Point the A record back at the old IP, which is still running and paid. Restore the instance snapshot if the machine is broken, and dump any data written on the new server back to the old one.
How long should I keep the old server?
A week after the DNS change. That covers mail, cron, forms and the one plugin that only runs on Sundays. Take a final backup before you cancel, because a closed account is not a backup.

