Moving a live website from shared hosting to a VPS looks scary the first time, but it does not have to mean outages, broken emails, or SEO drops. With the right resource planning, traffic analysis and a structured migration plan, you can switch your production traffic over calmly while users keep browsing, buying and logging in without noticing anything changed underneath. At dchost.com we regularly help customers take this exact step when shared hosting limits start to bite: CPU throttling, memory errors, slow admin panels, or strict limits around background jobs and custom services. In this guide, I will walk through how we plan VPS resources based on real traffic, how we prepare a new server, and the exact order of migration and DNS changes that allow you to move with effectively zero downtime. If you are currently on shared hosting and wondering whether you can upgrade your infrastructure without breaking your site, this article is for you.
İçindekiler
- 1 Why Move from Shared Hosting to a VPS?
- 2 Step 1: Analyse Your Current Usage on Shared Hosting
- 3 Step 2: Plan VPS Resources Based on Real Data
- 4 Step 3: Prepare the New VPS Properly
- 5 Step 4: Design a Zero‑Downtime Migration Strategy
- 6 Step 5: Perform the Migration Step‑by‑Step
- 6.1 1. Full backup on shared hosting
- 6.2 2. Initial file transfer to VPS
- 6.3 3. Database migration
- 6.4 4. Update application configuration
- 6.5 5. Configure SSL/TLS on the VPS
- 6.6 6. Preview the site on the VPS without changing DNS
- 6.7 7. Final incremental sync
- 6.8 8. DNS cutover to the VPS
- 6.9 9. Monitor closely after the switch
- 7 Step 6: Handling Email, DNS and Rollback Options
- 8 After Migration: Optimisation and Next Steps
- 9 Conclusion: Calm, Predictable Migration from Shared Hosting to VPS
Before planning the migration, it is worth being clear about why you are moving and what you expect from the VPS.
Shared hosting means dozens or even hundreds of customers share the same server resources. It is affordable and convenient, but it also comes with strict limits and less control. A VPS (Virtual Private Server) gives you your own slice of CPU, RAM, disk and networking with root access and the ability to configure nearly everything as you wish.
Typical reasons we see for moving from shared hosting to a VPS include:
- Performance bottlenecks: Slow TTFB, admin panels timing out, or “resource limit reached” errors during traffic spikes.
- Need for custom software: Background workers, queues, search engines, Node.js processes or custom daemons that simply cannot run on classic shared hosting.
- Security and isolation: Stronger separation from other customers, OS-level firewalls, custom security hardening and the freedom to choose your own stack.
- Predictable scaling: Ability to upgrade vCPU, RAM or disk as your business grows without changing your entire platform.
If you want a friendly comparison of hosting types, including where shared hosting ends and VPS really starts to shine, you can also read our article “The Friendly, Real-World Comparison of Web Hosting Types”.
A calm, zero‑downtime migration starts with knowing what you are running today. Guessing VPS specs almost always leads to either overpaying or hitting new limits again a few weeks later.
Measure real CPU, RAM and I/O usage
On most shared hosting panels (especially cPanel or DirectAdmin), you will find “Resource Usage” or “CPU and Concurrent Connections” charts. Over a 7–30 day window, look for:
- CPU: How often do you hit 100% of your allowed CPU? Are there clear peaks around campaigns, newsletters or specific hours of the day?
- Memory (RAM): Check for memory faults or “limit reached” messages. This helps estimate what your PHP workers and database actually need.
- I/O (disk throughput): Spikes during backups, imports, exports or image-heavy pages indicate that faster disks (e.g. NVMe) will make a real difference.
If you often see “resource limit reached” or similar errors, you may find our article “How to Avoid the ‘Resource Limit Reached’ Error on Shared Hosting” helpful for interpreting what those limits practically mean.
Understand traffic volume and patterns
Next, analyse how much traffic you actually serve:
- Visits/users per day: Use tools like AWStats, Webalizer or your analytics (Matomo, Google Analytics, etc.) to see daily and hourly patterns.
- Bandwidth: Measure GB/month transferred. This helps determine whether your VPS bandwidth quota is sufficient.
- Peak concurrency: Look at the busiest hour and estimate how many concurrent users and requests you handle.
For a deeper, formula-based approach, especially if you host multiple sites or a busy store, we have a dedicated article on how to estimate traffic and bandwidth needs on shared hosting and VPS.
Application-specific signals
Beyond raw traffic, look at how your application behaves:
- Database load: Does your host complain about slow queries or excessive CPU from MySQL/MariaDB?
- Cache usage: Are you using full-page cache, object cache (Redis/Memcached), or is everything hitting PHP and the database directly?
- Background work: Cron jobs, queue workers, scheduled imports/exports and reporting tasks all consume CPU and RAM.
Write these findings down. They will directly influence your VPS sizing.
Step 2: Plan VPS Resources Based on Real Data
Armed with traffic and resource data, you can now size a VPS that is powerful enough without wasting budget. At dchost.com, we always recommend leaving reasonable headroom instead of running at 90–100% utilization all day.
vCPU (virtual CPU)
Translate your shared hosting CPU usage into VPS vCPUs:
- Light sites: Small corporate site or blog (up to ~50k visits/month) usually works well with 1–2 vCPUs, assuming good caching and optimized code.
- Busy WordPress/WooCommerce or medium apps: Online stores, learning platforms, or membership sites often need 2–4 vCPUs, especially if they process orders, logins, and dynamic content.
- Heavier workloads or multiple sites: If you run several active sites, an API and background workers, 4+ vCPUs provide room for growth.
If you use PHP‑based apps, our article on how much CPU, RAM and bandwidth a website needs gives practical sizing examples.
RAM (memory)
RAM is where under-sizing hurts quickly: PHP processes, databases and caches all live here.
- 1–2 GB RAM: Enough for a single small site with light database usage, carefully tuned PHP limits and minimal background tasks.
- 4 GB RAM: A comfortable baseline for a typical WordPress + WooCommerce or small SaaS app, with room for object cache and higher PHP limits.
- 8+ GB RAM: Recommended if you host multiple busy sites, intensive reporting, or you rely on in-memory caches (Redis) and search engines (Elasticsearch/OpenSearch, Meilisearch, etc.).
Compare these rough guidelines with your current usage charts. If your shared plan reports that you frequently hit memory limits, err on the higher side.
Disk type, size and IOPS
On VPS, you choose both capacity and disk type.
- Type: Prefer SSD or NVMe. NVMe drives deliver much higher IOPS (input/output operations per second), which directly improves database-heavy workloads.
- Size: Add up your existing usage (files + databases + emails) and add at least 50–100% headroom for logs, backups, staging copies and growth.
- Performance: If you expect frequent imports, backups or many small database writes, prioritize NVMe VPS plans.
We covered this topic in depth in our NVMe VPS hosting guide, including what IOPS and IOwait numbers really mean in practice.
Bandwidth
Take your monthly bandwidth figure from shared hosting and add a safety margin:
- If you use 200 GB/month today, plan for at least 300–400 GB/month.
- If you are close to 1 TB/month, choose a plan with a clear buffer above that, especially if you expect campaigns or international traffic growth.
If you serve heavy images or downloads, consider combining your VPS with a CDN later to offload static assets.
IPv4, IPv6 and IP reputation
Your VPS will have at least one dedicated IPv4 address and often IPv6 as well. If you send transactional email (order confirmations, password resets) directly from the VPS, you must plan email DNS (SPF, DKIM, PTR) and warm up the IP reputation carefully. We will touch on email in the migration steps.
Step 3: Prepare the New VPS Properly
Once you have selected a suitable VPS plan at dchost.com, the next goal is to turn that blank instance into a ready, secure and tested environment before a single DNS record changes.
Choose OS and control panel
For most web workloads we recommend a stable Linux distribution such as AlmaLinux, Rocky Linux, Debian or Ubuntu. Your choice may be influenced by:
- Compatibility with your control panel (cPanel, DirectAdmin, Plesk, etc.).
- Your existing knowledge or your team’s experience.
- Long-term support (LTS) requirements.
If you prefer managing everything over SSH, our guide on running a VPS without a control panel over SSH only walks through a complete stack setup.
Apply basic security hardening
Security must be in place before you copy production data:
- Create a non-root user with sudo privileges.
- Configure SSH keys, disable password logins, and change the default SSH port if appropriate.
- Enable a firewall (UFW, firewalld or nftables) allowing only necessary ports (SSH, HTTP/HTTPS, panel ports).
- Update the OS and packages; remove unused services.
We maintain a step-by-step hardening checklist in our article “The Calm, No‑Drama Guide: How to Secure a VPS Server (For Real People)”. It is a good companion while preparing the new machine.
Install and tune the web stack
Match the stack of your shared hosting as closely as possible to reduce surprises:
- Web server: Apache, Nginx or LiteSpeed/OpenLiteSpeed, depending on your preference and application requirements.
- PHP: Install the same major version (e.g. 8.1 vs 8.2) you use on shared hosting, then plan an upgrade later once migration is stable.
- Database: MySQL, MariaDB or PostgreSQL, again matching versions as closely as possible.
- Caching: Configure OPcache, and if your application supports it, Redis or Memcached for object caching.
Also replicate key PHP settings such as memory_limit, max_execution_time and upload_max_filesize. We explain how to tune these safely in our article on choosing the right PHP memory_limit, max_execution_time and upload_max_filesize.
Benchmark before migration
With the stack ready, perform quick benchmarks to verify that the VPS delivers expected performance for CPU, disk and network. This helps spot misconfigurations (e.g. throttled CPU, slow storage tier) before they affect production. Our new VPS checklist for benchmarking CPU, disk and network walks through practical tools and what numbers to look for.
Step 4: Design a Zero‑Downtime Migration Strategy
Now that the new VPS is ready, the focus shifts to how to move your site. The high-level strategy is always the same:
- Reduce DNS TTLs in advance.
- Take a full backup on shared hosting.
- Copy files and databases to the VPS.
- Test everything via a temporary host mapping or preview domain.
- Do a final incremental sync.
- Switch DNS and monitor.
We have a separate checklist-style article on moving from shared hosting to a VPS with zero downtime. In this guide, we will go deeper into the resource planning and traffic-related reasoning behind each step.
Lower DNS TTLs early
TTL (Time To Live) is how long resolvers cache your DNS records. When you change the A record of your domain to point to the VPS, you want that change to propagate fast.
- At least 24–48 hours before migration, lower the TTL on your main A/AAAA records (and possibly MX if email is affected) from values like 3600–86400 seconds to 300 seconds or even 120 seconds.
- Wait for the old TTL to expire so that the shorter TTL is actually used by resolvers.
Our article “The TTL Playbook for Zero‑Downtime Migrations” explains how to plan these TTL changes so cutover feels almost instant.
Plan around your traffic patterns
Look at your analytics to find the naturally quietest period for your site:
- For B2B apps, this is usually late night in your main customer timezone.
- For B2C/e‑commerce, very late night or early morning tends to be calmer.
Schedule the final sync and DNS cutover inside this window so that fewer active sessions are affected and cache warm‑up hits are manageable.
Decide what moves together
For many projects, the safest path is to move only the web application and database first, keeping some services (e.g. email) where they are for a while. That reduces the blast radius if something unexpected happens.
- Scenario A – Web + DB only: Move the website and database to VPS, keep email at the current provider and update only A/AAAA records.
- Scenario B – Full move: Web, database and email all move to the VPS or to a new mail platform simultaneously; DNS changes include MX, SPF and others.
Scenario A is simpler and has fewer dependencies. Scenario B needs more detailed testing of email deliverability, PTR records and spam filters.
Step 5: Perform the Migration Step‑by‑Step
With planning complete, it is time to move real data. The exact tooling can differ depending on your control panel, but the sequence below works reliably in most situations.
Before touching anything, take a complete backup on your shared hosting account:
- All website files (public_html or relevant document roots).
- All databases (via phpMyAdmin export, panel backup tools or command line).
- Email accounts and mailboxes (if you plan to move email now).
Store this backup off‑server (not only on the same shared host). This is your safety net in case you need to roll back quickly.
2. Initial file transfer to VPS
Next, copy files from shared hosting to the VPS:
- For control panel to control panel moves (e.g. cPanel to cPanel), use built‑in transfer tools or full account backups.
- For manual moves, use SFTP, rsync over SSH, or archive (tar/zip) + download/upload.
Place the files in the correct document root on your VPS (often /home/username/public_html for panel setups or a custom directory under /var/www for manual stacks).
3. Database migration
Export your database from shared hosting and import it into the VPS database server:
- Use
mysqldumpfor MySQL/MariaDB or panel tools like phpMyAdmin export. - Create a database and user with the same name or adjust your application configuration later.
- Import via command line or management panel.
After import, run a quick check:
- Connect with a DB client (phpMyAdmin, Adminer or CLI) and verify tables and row counts match the source.
- Check character set and collation to avoid encoding issues.
4. Update application configuration
Point your application to the new database and ensure URLs and paths are correct:
- Update
wp-config.php(for WordPress),.env(for Laravel) or respective config files with new DB host, name, user and password. - Ensure file paths, log directories and cache directories exist and are writable.
- Configure email sending (SMTP settings) if you are changing how you send mail.
5. Configure SSL/TLS on the VPS
To avoid browser warnings during testing, set up SSL on the VPS:
- If your domain already has a certificate, you can either reissue it for the new server or temporarily use a separate hostname (like
vps.yourdomain.com) with its own certificate. - Consider using Let’s Encrypt or another CA with automated renewal (ACME clients).
Once DNS is cut over, ensure HTTPS redirects and HSTS settings are correctly applied to avoid mixed content or redirect loops.
6. Preview the site on the VPS without changing DNS
Before the world sees the new server, you should be able to browse it privately:
- Use a temporary hostname (
vps.yourdomain.com) pointing to the VPS IP and configure the virtual host to respond to both this and the final domain. - Alternatively, edit your local
hostsfile on your computer so thatyourdomain.comresolves to the VPS IP while everyone else still sees the old host.
Test thoroughly:
- Homepage, product pages, blog posts, search and filters.
- Login, registration, checkout and forms.
- Admin panel performance.
- File uploads, downloads and image galleries.
7. Final incremental sync
Between your initial copy and the final cutover, new data appears on the old server: new orders, comments, uploads, etc. To avoid losing them:
- Put the application into a short maintenance window (few minutes) on shared hosting during low traffic.
- Take a fresh database dump and import it on the VPS, replacing the earlier copy.
- Sync changed files (e.g.
wp-content/uploads) again with rsync or SFTP.
Once this final sync is complete, keep the old site in maintenance mode so no new data is written there.
8. DNS cutover to the VPS
Now you point your domain to the new VPS:
- Update A/AAAA records for your main domain and important subdomains to the VPS IP.
- If you moved email, update MX, SPF (TXT), DKIM (TXT/record) and PTR (Reverse DNS via your VPS provider) as needed.
Because you lowered TTL earlier, most users will start hitting the VPS within a few minutes. Some ISPs may cache a bit longer, but with proper TTL planning, the overlap period is short.
9. Monitor closely after the switch
For the first few hours after DNS cutover, watch:
- Server CPU, RAM, disk I/O and network traffic to confirm your sizing assumptions.
- Application logs and error logs for PHP, Nginx/Apache and the database.
- Key user flows (logins, checkouts, API endpoints).
If you set up monitoring and uptime checks (e.g. with Prometheus, Grafana, Uptime Kuma), this is where they pay off. Our article on VPS monitoring and alerts can help you put basics in place.
Step 6: Handling Email, DNS and Rollback Options
Email and DNS details often cause the small issues people remember from migrations. A bit of extra planning here avoids most surprises.
Option A: Keep email where it is (simpler)
If your current email setup works well, consider keeping MX records pointing there for now:
- Only change A/AAAA records for
yourdomain.comandwwwto the VPS. - Leave MX, SPF (if generic) and other mail records unchanged.
- Configure your web app on the VPS to send mail using SMTP via the existing email provider.
This reduces the number of moving parts during the main migration. You can always move email later with a dedicated plan.
Option B: Move email to the VPS (more complex)
If you decide to host email on the VPS as well:
- Set up mail services (Postfix/Exim + Dovecot or panel-managed equivalents).
- Configure SPF, DKIM and DMARC records for your domain.
- Request or configure a proper PTR (Reverse DNS) record for the VPS IP; our guide on PTR (Reverse DNS) records explains why this matters for email delivery.
- Migrate existing mailboxes via IMAP sync tools or email migration features in your control panel.
Monitor bounces and spam folder placement carefully after the switch and warm up gradually if you send large volumes of email.
Rollback plan
Even with careful planning, you should have a way back:
- As long as you keep the old hosting account active and its data intact, you can temporarily point DNS back to the old IP if something critical appears.
- Because you froze writes on the old host at cutover time, any new data after cutover lives only on the VPS; if you roll back, document exactly which data may be missing so you can manually reconcile it later.
In practice, with a tested VPS and a clean final sync, full rollbacks are rarely needed. But having a documented path reduces stress for everyone involved.
After Migration: Optimisation and Next Steps
Once your site runs stably on the VPS, you can start using the flexibility that made you move in the first place.
Optimise performance
- Enable and tune caching: Full-page caching (Nginx FastCGI cache, LiteSpeed Cache, Varnish) plus object caching (Redis) can drastically reduce CPU load.
- Tune PHP-FPM and OPcache: Adjust process counts,
pm.max_children, and OPcache configuration for your concurrency level. - Database tuning: Increase InnoDB buffer pool size, tune query cache (if used) and examine slow query logs.
Strengthen security and backups
- Regular updates: Keep OS and packages patched, especially web server, PHP and database.
- Automated backups: Set up daily offsite backups with proper retention. The classic 3‑2‑1 strategy (3 copies, 2 media, 1 offsite) is still the gold standard.
- Monitoring and alerts: Monitor resource usage trends to know when it is time to scale the VPS up again.
Plan for future scaling
As your traffic grows further, a single VPS may evolve into:
- A larger VPS with more vCPU/RAM.
- Separate VPSs for web and database tiers.
- Load-balanced clusters with multiple web nodes behind a reverse proxy.
The resource and traffic analysis habits you built for this migration will be invaluable for those next steps.
Moving from shared hosting to a VPS without downtime is absolutely realistic if you treat it as a structured project instead of a last-minute emergency. Start by understanding your current resource usage and traffic patterns so your new VPS at dchost.com is sized correctly with some breathing room. Prepare the server carefully: choose a stable OS, configure the web stack, harden security and benchmark performance before any DNS changes. Then execute a disciplined migration: lower TTLs, take full backups, copy files and databases, test via hosts file or preview domains, run a final incremental sync, and only then flip DNS while monitoring closely.
The reward is a faster, more flexible and more controllable hosting environment where you are no longer boxed in by shared hosting limits. If you would like help selecting the right VPS plan, fine‑tuning your configuration or planning a more advanced architecture (high availability, separate database servers or future colocation), our team at dchost.com is ready to assist. With the right preparation, your visitors will never notice that anything changed—except that your site suddenly feels faster and more reliable.
