Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitchesTo move a running Drupal site from Acquia to a VPS, transfer and verify three separate payloads: the Drupal application code, the database, and user-uploaded files. Build and test the VPS while Acquia remains live, then perform a short content freeze, take a final database and file sync, switch DNS, and keep Acquia available for rollback. That is the practical answer to “How do I move my Drupal site off Acquia?”, “How do I migrate Drupal to a VPS without downtime?”, and “How do I copy an Acquia database and files to a new server?”
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
A truly zero-downtime guarantee is not possible without measuring the site, its integrations, and DNS behavior. The runbook below is designed for a short, controlled write freeze with no planned outage for visitors: every critical function is tested on the VPS before traffic is sent there, and the old environment remains recoverable until the new one completes a normal production cycle.
As an Amazon Associate I earn from qualifying purchases.
What actually moves from Acquia to the VPS
A Drupal installation is not one export file. Treat the migration as three payloads with different transfer and verification methods.
| Payload | What it contains | How to move it | What to verify |
|---|---|---|---|
| Application code | Drupal core, contributed and custom modules, themes, Composer files, libraries, and deployment scripts | Check out the same Git commit or deploy the same release archive, then run Composer with the project lockfile | Core and module versions, enabled extensions, document root, PHP extensions, and file ownership |
| Database | Content, users, roles, taxonomy, configuration stored in the database, queues, and state | Create a compressed Drush or mysqldump export, transfer it securely, import it into the VPS database, and rebuild caches |
Row counts or sampled content, login, permissions, forms, and database connectivity |
| Uploaded files | Public media, image styles, private files, and any multisite-specific files directories | Use rsync, SCP, or SFTP while preserving timestamps and permissions | File counts, representative media URLs, image styles, and private-file access controls |
Acquia’s migration guidance follows this separation and says the target should be verified before DNS cutover. A database dump does not contain the files directory, and copying files does not include content or configuration stored in the database.
#1 Best Overall
- Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
- Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
- Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
- Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
- 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
Start with an inventory and a rollback plan
Do this work before provisioning production DNS or scheduling a freeze. The inventory becomes the acceptance checklist for the VPS and exposes dependencies that are easy to miss in a simple code-and-database copy.
Record versions and deployment inputs
- Drupal core version, PHP version, database engine and version, web server, Composer version, and the exact Composer lockfile.
- Enabled modules, themes, custom code, patches, libraries, and the Git commit or release archive currently running on Acquia.
- Required PHP extensions, CLI tools, image-processing libraries, and any operating-system packages used by modules.
- Public and private files paths, multisite directory names, file counts, total sizes, and the largest individual files.
Map scheduled and external services
- Cron commands, queue workers, scheduled imports, payment or identity integrations, webhooks, search services, analytics, and monitoring.
- Outbound mail configuration, sender domains, DKIM and SPF records, SMTP credentials, bounce handling, and any relay or API limits.
- TLS certificates, HTTP-to-HTTPS redirects, canonical hostnames, robots rules, CDN or reverse-proxy behavior, and all A and AAAA records.
- Acquia hooks, environment variables, service definitions, filesystem assumptions, and deployment-time scripts that will not exist on a plain VPS.
Write down the migration decision points
- The agreed content-freeze start and end times, who can approve the DNS change, and who owns rollback.
- The maximum acceptable data-loss window for last-minute writes, if any. For a site with orders, registrations, or editorial activity, plan a final dump during the freeze rather than relying on an earlier copy.
- Where encrypted backups, database dumps, and secrets will be stored, and who can retrieve them if the VPS fails.
- The exact conditions for aborting: failed authenticated access, broken forms or uploads, missing private files, database errors, mail failure, or any security-control regression.
Size the VPS against Drupal’s real requirements
Choose the operating system and VPS capacity from measured traffic, concurrency, module load, search requirements, storage growth, and geography. A provider or plan cannot be called suitable from a price or CPU label alone.
Drupal and database minimums
| Component | Minimum or guidance | Qualification |
|---|---|---|
| PHP for Drupal 11 | PHP 8.3 | Drupal.org lists PHP 8.3 as the Drupal 11 minimum; confirm that every contributed module supports the selected PHP release. |
| MySQL for Drupal 11 | MySQL 8.0 | Use InnoDB and verify character-set and collation compatibility with the existing database. |
| MariaDB for Drupal 11 | MariaDB 10.6 | This is the stated minimum; check module and hosting support before choosing MariaDB over MySQL. |
| PHP memory | 64 MB minimum; 128–256 MB is common in production | The minimum is a Drupal requirement, not a recommendation for a busy site. Modules, image processing, Composer operations, and concurrent PHP workers may require more. |
| RAM for Composer | 1 GB minimum cited in Drupal’s Drupal 10/11 requirements overview | Large dependency graphs can need additional temporary memory. Composer may be run in a build environment rather than on the smallest production VPS. |
Allocate storage for the operating system, code, database, public and private files, logs, temporary files, backups, and growth. Keep enough free space for an uncompressed database import and at least one rollback copy; a disk that is just large enough for today’s files can fail during the migration itself.
Managed versus self-managed operations
A managed VPS can provide patching, backups, monitoring, and support, while a self-managed VPS gives you direct control but leaves those duties with your team. Compare both choices on the same operational axes.
| Decision axis | Questions to answer |
|---|---|
| Runtime support | Can the service run the required PHP, database, web-server, and PHP-extension versions for the Drupal release? |
| Backups and restore | Are database and file backups automated, encrypted, retained long enough, and restorable to a separate environment? |
| Security operations | Who applies OS and database patches, configures the firewall, rotates credentials, and responds to vulnerabilities? |
| Performance | What storage I/O, CPU limits, network throughput, and burst rules apply under PHP, search, backup, and import workloads? |
| Network and location | Are IPv4 and IPv6 available as needed, and is the region close enough to users and external services? |
| Scaling | Can you increase RAM or CPU, add separate workers or a database node, and expand storage without an unplanned outage? |
| Support and cost | What response time is included, and what is the total monthly cost after backups, monitoring, traffic, storage, and managed services? |
Build and secure the VPS before importing anything
- Install a supported Linux-like production environment. Apply current security updates, create a non-root administrative account, disable direct root login where appropriate, and restrict SSH to approved keys or networks.
- Install the web server and PHP runtime. Use Apache or Nginx with the PHP version required by the site. Install every PHP extension used by Drupal and its modules, not just the extensions present in a minimal PHP package.
- Install the database engine. Create a dedicated database and least-privilege user. Use InnoDB, set a compatible UTF-8 character set and collation, and restrict database network access to the application or private network.
- Configure the firewall and TLS path. Expose only required services, obtain a certificate for the eventual hostname and temporary test hostname, and configure HTTPS redirects after confirming that health checks and proxy headers are correct.
- Create filesystem boundaries. The web process should write only to directories Drupal requires, such as public files, private files, and temporary storage. Keep code, secrets, database dumps, and private files outside a publicly served document root.
- Set up observability. Enable web-server, PHP, database, system, and Drupal logs; configure disk, memory, load, certificate-expiry, and backup alerts before the cutover.
Do not point production DNS at an untested server. Build the complete stack first, including cron, queue workers, search connectors, mail, backups, and log rotation.
Rank #2
- 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
- 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
- Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
- 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
- What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Deploy the Drupal code and dependencies
Use the same release that Acquia runs
Check out the exact Git commit or unpack the exact release archive deployed on Acquia. A migration is not the time to update Drupal core, modules, PHP, or the Composer lockfile; perform upgrades as a separate, tested change.
Free tools Windows power users keep installed
One-click scans. No signup required.
- Place the project outside the public web root if the project uses the recommended Composer layout.
- Run Composer with the committed lockfile, for example
composer install --no-dev --optimize-autoloaderwhen that matches the project’s established production workflow. - For a
drupal/recommended-projectlayout, set the web server’s document root to the project’sweb/directory, not the repository root. - Install matching PHP extensions and verify that the CLI PHP version used by Drush is the same major and minor version as the web process.
- Set ownership and permissions so the web process can write to required files directories but cannot modify application code or read protected secrets.
Run the site’s normal deployment checks before importing content: verify that Drupal can bootstrap from the new codebase, that Drush resolves the correct site, and that Composer did not omit a required production package.
Transfer public, private, and multisite files
Copy web/sites/default/files and every private or multisite files directory identified in the inventory. Acquia’s database documentation also identifies SFTP, SCP, and rsync as valid transfer methods.
- Make a first bulk copy while Acquia remains online. With rsync, preserve permissions, timestamps, symbolic links where appropriate, and partial-transfer recovery; use an encrypted transport.
- Keep private files outside the public web root. Configure the web server so a guessed URL cannot download a private document.
- Record source and destination file counts and total sizes. Compare representative images, documents, image styles, and files with non-ASCII names.
- Repeat rsync during the final freeze to capture files uploaded or generated since the first copy. Do not delete destination files until you are certain the source path is complete and the destination is the intended directory.
- Check that the destination user and group can read files and that Drupal can create derivatives, temporary files, and new uploads.
Export and import the database
Create a consistent source dump
Use the source environment’s Drush alias when available. Acquia documents this compressed pattern:
drush @[source] sql:dump --gzip --result-file=../mysite.sql
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #3
- Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
- Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
- Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
- Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
- What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.
The resulting compressed dump must be transferred securely and retained as a rollback artifact. If Drush is unavailable, use a database-native export from a host with network access to the source database, for example:
mysqldump --single-transaction --default-character-set=utf8mb4 -u DATABASE_USER -p DATABASE_NAME | gzip > mysite.sql.gz
Use an export method supported by the source subscription and database engine. Permissions, database size, and available disk space vary by Acquia subscription and site; a very large database may require a longer freeze or a staged/delta strategy approved by the team operating it.
Create the destination database and import
- On the VPS, create the database with the required character set and collation, then create a dedicated application user with only the privileges Drupal needs.
- Copy the dump over an encrypted channel and verify its checksum before importing.
- Import the compressed dump, for example
gzip -dc mysite.sql.gz | mysql -u DATABASE_USER -p DATABASE_NAME. Monitor disk space, import errors, and the database server log. - Set the destination connection in
settings.php, then rundrush crfrom the correct Drupal site directory to rebuild caches. - For a multisite, pass the correct site URI to Drush when selecting the database. A successful import into the wrong site database can look like missing content rather than an obvious failure.
Compare table counts or sampled nodes, users, taxonomy terms, and recent revisions with the source. Treat a successful SQL exit code as necessary but not sufficient: application-level checks are still required.
Replace Acquia-specific settings and secrets
Search both settings.php and deployment configuration for assumptions that were valid only on Acquia. Replace them deliberately rather than copying the source file unchanged.
Rank #4
- Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
- Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
- Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
- Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
- Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Database, paths, and host controls
- Replace Acquia database credentials, hostnames, ports, sockets, and driver options with the VPS database array.
- Set the public files path and private files path to the directories created on the VPS. Confirm that private storage is not under the public document root.
- Set
trusted_host_patternsfor the production hostname and any temporary test hostname. Do not use a wildcard merely to make testing convenient. - Generate or securely transfer the site’s hash salt; never publish it in a repository or reuse a value from an unrelated site.
- Configure reverse-proxy and HTTPS settings only when the VPS actually sits behind that proxy. Incorrect proxy trust settings can produce redirect loops or incorrect client IPs.
- Move API keys, SMTP credentials, search credentials, and other secrets to protected environment files or the VPS secret store. Keep them out of Git and out of web-accessible directories.
Remove platform-only assumptions
Delete Acquia-specific service definitions, paths, environment variables, deployment hooks, cache backends, and cron wrappers that have no equivalent on the VPS. Replace them with explicit systemd services, cron entries, queue workers, or managed services that you can monitor and restart.
Check base URL behavior in redirects, generated links, email templates, and canonical metadata. A temporary hostname should not become the canonical production URL or be emitted in outbound mail.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Handle Drupal configuration management carefully
A database copy brings the active Drupal configuration stored in the database along with content and users. Configuration-managed projects also keep exported YAML in version control, so the correct workflow depends on how the project is maintained.
- If the VPS is meant to reproduce the running Acquia state, import the database first, inspect the active configuration, and avoid an automatic synchronization that would overwrite it.
- If the project’s established deployment process is to deploy exported YAML, check out the matching configuration and run
drush config:importonly after taking a backup and confirming that the import is intentional for this release. - Review configuration split or environment-specific overrides for database names, hostnames, mail, search, caching, and file paths.
- Never run a blanket configuration import on production simply because it succeeds on a staging copy. Compare the change set and preserve any content-created configuration that the project intentionally allows.
Test the VPS with a temporary hostname
Before changing public DNS, point a temporary hostname or a local hosts-file entry at the VPS. Use the production-like HTTPS certificate and keep the test hostname out of search indexes and canonical URLs.
Application and content checks
- Run Drupal status checks and confirm PHP, database, file-system, cron, and trusted-host reports are clean.
- Open anonymous pages, authenticated pages, administrative screens, user profiles, and editorial workflows. Test roles and permissions with accounts that represent real users.
- Submit every important form, including validation errors, file attachments, multi-step forms, and confirmation emails.
- Upload new media, generate image styles, download a private file as an authorized user, and confirm that an unauthorized user receives a denial rather than the file.
- Compare sampled nodes, revisions, taxonomy, menus, blocks, views, translations, and media against Acquia.
Operational and integration checks
- Run cron and queue workers manually, then confirm their scheduled execution and logs. Check that jobs do not run simultaneously on Acquia and the VPS during the final handover.
- Exercise search indexing and queries, external APIs, webhooks, payment or identity callbacks, and any signed-request validation.
- Send test mail through the production relay or API. Verify sender, reply-to, DKIM or SPF alignment where applicable, delivery, and bounce handling.
- Check redirects, canonical URLs, robots rules, sitemap output, HTTPS certificates, security headers, and CDN or reverse-proxy cache behavior.
- Inspect PHP, web-server, database, and Drupal logs while making requests. Resolve permission errors, missing extensions, deprecation messages, and slow queries before cutover.
- Run a cache rebuild with
drush cr, then test both a cold request and a cached request. Confirm that authenticated responses are not served from an anonymous cache.
Keep a written pass/fail result for every check. A page that renders is not proof that cron, mail, private files, search, or permissions work.
Best Value
- 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
- Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
- Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
- HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
- What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Plan the DNS cutover for a short write freeze
Lower DNS TTL in advance
Lower the authoritative DNS TTL to 5–10 minutes a few days before the change, as Acquia recommends. This reduces the time that resolvers may retain the old address, but it cannot force every client, ISP, or intermediary to refresh immediately.
Perform the final synchronization
- Announce the freeze and disable editorial, registration, commerce, or other write paths at the agreed time. Keep read-only pages available on Acquia.
- Run a final database dump from Acquia. Transfer and import it into the VPS, then set the final database connection and run
drush cr. - Run a final rsync of public and private files to capture uploads and generated files created since the first transfer.
- Re-run the highest-risk checks: login, forms, uploads, private-file access, search, cron, mail, redirects, and HTTPS. Check that no temporary hostname appears in generated links.
- Change the A and AAAA records to the VPS addresses. Record the exact time, previous values, new values, and person who approved the change.
Keep rollback possible
Leave Acquia serving or immediately recoverable while DNS propagates and through at least one normal production cycle. Watch requests reaching both environments, new submissions, error rates, queue execution, mail, disk space, and database health.
If a critical check fails, restore the previous DNS records, reopen writes on Acquia, and document any writes made on the VPS so they can be reconciled. Do not destroy the source database or files until the rollback window has passed. Once the VPS is stable and backups have been tested, raise the TTL to a normal value.
Troubleshoot the failures that commonly stop a migration
| Symptom | Likely cause | Fix |
|---|---|---|
| White screen, 500 error, or bootstrap failure | Missing PHP extension, incompatible PHP version, bad ownership, or a module that was not deployed | Read PHP and Drupal logs, compare loaded extensions and versions with Acquia, run Composer from the correct project root, and correct permissions. |
| Database connection error | Wrong host, port, socket, credentials, database name, TLS setting, or firewall rule | Test the credentials from the VPS, verify the database user’s allowed host, inspect the server log, and confirm that settings.php is the file used by the selected site. |
| Content is missing or the wrong site appears | Dump imported into the wrong database or wrong multisite URI selected | Check the active database name and Drush URI, inspect known node and user records, and repeat the import into the correct database. |
| Images return 404 or cannot be generated | Files were not copied, the files path is wrong, or the web process lacks write access for image styles | Compare file counts and paths, test the configured public directory, fix ownership, and rebuild one representative image style. |
| Private documents are publicly downloadable | Private files directory is inside the document root or the web server bypasses Drupal access checks | Move private storage outside the public root and test an unauthenticated request directly and through the application. |
| Redirect loop or wrong scheme in links | Reverse-proxy trust or HTTPS settings do not match the VPS network path | Correct proxy configuration, trusted headers, and Drupal base URL behavior; test direct and proxied requests. |
| Cron, queues, or search stop running | Acquia scheduler or worker definitions were not recreated | Create and monitor VPS cron and worker services, verify the command’s site URI, and prevent duplicate execution during handover. |
| Mail is delayed or rejected | SMTP/API credentials, DNS authentication, outbound restrictions, or sender reputation changed | Use the intended relay, verify credentials and DNS records, inspect relay responses, and monitor bounces before enabling all production mail. |
| Intermittent old and new content after DNS change | Resolver and CDN caches still contain the previous address or response | Use the reduced TTL, purge caches where appropriate, monitor both environments, and do not assume all clients switch simultaneously. |
Operate the VPS after the move
Migration is complete only when the VPS can be operated safely without Acquia-specific support. Schedule tested database and file backups, define retention and off-site copies, and perform a restore drill to a separate environment. Keep Drupal, PHP, the database, the operating system, and contributed modules patched through a documented change process.
Continue monitoring HTTP status and latency, PHP worker saturation, database connections and slow queries, queue depth, cron completion, disk and inode usage, certificate expiry, backup freshness, mail delivery, and security logs. Review alerts daily during the first production week and after every significant traffic or module change.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Do not decommission Acquia immediately. Retain the final dump, file snapshot, configuration, DNS history, and rollback notes for the period required by your recovery policy. Remove old credentials only after confirming that no active integration still depends on them, then rotate any secret that was exposed during the migration process.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




