Migrate Your Moodle Site to Google Cloud: Step-by-Step Guide
You can migrate your Moodle site to Google Cloud to leverage its scalability and reliability, ensuring minimal downtime for your users.
Migrating your Moodle site means transferring your website files, database, and configuration settings from your current server to a new, robust environment on Google Cloud Platform.
This guide walks you through the essential steps, from setting up a Google Compute Engine instance (often running Ubuntu 22.04 LTS) to exporting your Moodle data and configuring services like Apache, PHP, and MySQL on the cloud.
By following these clear instructions, you’ll achieve a smooth and efficient transition, keeping your learning platform available throughout the entire process.
Migrate your Moodle site by preparing a Google Cloud Compute Engine instance, exporting your Moodle files and database, and then configuring the new server environment with matching software versions. This process ensures a smooth transition with minimal downtime.
Taking inventory of a Linux server before migration
Taking inventory of your current Linux server is the first step before you migrate to a new one, making sure your new setup matches what you have now.
These are what you’ll need to gather from your current server:
- Web server and version number
- Database server and version number
- PHP and related modules
- Other servers and services and how they’re configured
If you’re running an Apache web server, use the commands below to determine what version is installed on Ubuntu Linux.
apache2 -v
For more detailed version checks and steps to install a specific version of Apache, read the post below:
How to check and install specific Apache versions on Ubuntu Linux
If running an Nginx web server, use the commands below to determine what version is installed on Ubuntu Linux.
nginx -v
For more detailed version checks and steps to install a specific version of Nginx, read the post below:
How to check and install specific Nginx versions on Ubuntu Linux
To check what version of PHP is installed and how to install a specific version on Ubuntu Linux, read the post below:
How to check and install specific PHP versions on Ubuntu Linux
Whether you’re running MySQL or MariaDB, the post below shows you how to determine which version of MySQL or MariaDB runs on Ubuntu Linux.
How to find what version of MySQL or MariaDB runs on Ubuntu Linux
How to set up and connect to your Google Cloud server
After taking inventory, you’ll set up your Google Cloud server, which is a virtual machine called Compute Engine, and learn how to connect to it right from your browser.
Your Google Cloud server, called Compute Engine, lets you connect to your virtual machine (VM) instance right from your browser window within the Google Cloud Console using SSH.
SSH from the browser supports the following:
- Web browsers
- The latest version of Google Chrome
- Firefox
- Microsoft Edge
- Microsoft Internet Explorer 11 and later
- Safari 8 and later. Note that Safari in private browser mode is not supported.
- Virtual machine configurations
- All Linux VM images are natively available in Google Cloud.
Google Cloud offers all Linux VM images right out of the box, so you won’t need any extra software or browser extensions. Log in to your Google Cloud Console and navigate to Menu > Compute Engine > VM instances.
From the list of virtual machine instances, click SSH in the row for the instance you want to connect to.

You can also click an instance’s name and then SSH from the instance details page to open an SSH terminal window.
This will connect you to your Ubuntu Linux instance, ready for you to run commands.

Install LAMP or LEMP on the new server before migration
To prepare your new Google Cloud server for Moodle migration, you need to install a web server stack like LAMP or LEMP, making sure it has the same software as your old server.
Your goal is to make sure the new Google server has all the same servers and software packages as your current one. We’ve listed some helpful posts to guide you through installing essential software like Apache (a web server), Nginx (another web server), MySQL, MariaDB (database management systems), and PHP (a scripting language).
Some other posts that you may want to use when installing LAMP or LEMP on Ubuntu Linux.
- How to install Apache on a Google Cloud server (alternative to Nginx)
- How to install Nginx on a Google Cloud server (alternative to Apache)
- How to install PHP on a Google Cloud server
- How to install MySQL or MariaDB database server
You can use the posts above to install the same servers and packages you have installed on your current server. However, install specific packages on your new server using the identical posts mentioned above.
Once all the packages are installed, you can transfer content from your current server to the new one.
Configure your new Google server similar to your current server
Before migrating Moodle, you’ll configure your new Google server to be almost the same as your current one, especially matching web server settings and directory structures.
Make sure the web server (Apache or Nginx) settings are the same on both your old and new servers. This includes matching the directory structure and the content of your Virtual Host or Server blocks.
- Apache directory: /etc/apache2/
- Nginx directory: /etc/nginx/
Your PHP configuration should also be identical to your current server’s PHP settings. Use the post above to install a specific PHP version and all the modules on your current server.
- PHP directory: /etc/php/
Your MySQL or MariaDB configurations should also closely match your current server’s. Validate each file, directory, and other data to ensure your new server is no different from your current server before migration.
- MySQL / MariaDB directory: /etc/mysql/
Once you have that done, you can continue with the migration process.
Back up current server data and database before migration
With your new server ready, the next step in Moodle migration is to back up all your current website content and database information so you can move it safely.
First, you need your Moodle website content and database content. Back up the website content as well as the content in the database.
Before you back up your current server, it’s crucial to stop all changes. This prevents new data from being added after the backup is complete, ensuring data integrity.
To back up Moodle content, log on to your server via SSH if you have access. Once on your current server SSH console, run the commands below to back up your Moodle content, usually found at: /var/www/html/.
When you run the commands below, your Moodle content will create a backed-up file named current-server-backup.tar.
sudo tar -cvf current-server-backup.tar /var/www/html/Next, back up your database content. Again, you need to use the root account or an account with full access to the database you wish to back up.
To backup all databases on the server, run the commands below:
sudo mysqldump -u username –p --all-database > all_databases_backup.sqlIn addition, a file named all_databases_backup.sql should also be created in the current working directory.
You should now have two files: current-server-backup.tar and all_database_backup.sql.
Copy the current server’s content to the Google Cloud server
At this point, you should be ready to copy the current server’s content over to your new server. There are many ways to get the tar and SQL data files to the new server.
You can use the rsync command from the new server by SSHing into it and using a command similar to the one shown below (remember to change the host names as needed).
While connected to your Google Cloud console, run the commands below to connect to your current server and copy over the backed-up content.
rsync -avz user@old-server.com:/home/<username>/all_database_backup.sql rsync -avz user@old-server.com:/home/<username>/current-server-backup.tar
You could also use SCP to copy your files securely; the syntax looks like this:
scp user@old-server.com:/home/<username>/all_database_backup.sql /home/username/ scp user@old-server.com:/home/<username>/current-server-backup.tar /home/username/
If you can’t get the files using SSH, then you can use the wget command to download the files to your new Google Cloud server.
You must copy the files to the current server web server root directory to be able to use the commands below.
cd ~ wget http://old-web-site.com/all_database_backup.sql wget http://old-web-site.com/current-server-backup.tar
Once the files are copied to your new server, continue below to extract them and import the database content into your database server.
Restore the current server’s content to the Google Cloud server
After backing up your Moodle site, you’ll restore that content to your new Google Cloud server by extracting files and importing your database.
tar -xvf current-server-content.tar sudo cp -rf /var/www/html/ /var/www/html/
Next, run the commands below to import the database content to your servers.
sudo mysql -u root -p < all_database_backup.sql
By now, your Google server should have all the same server software and database content as your current one. Next, run the commands below to set up the current permissions to match the server.
Validate that all configurations on your current server match your new Google Cloud server. Once all have been validated, restart your web server.
sudo systemctl restart nginx sudo systemctl restart apache2
If you get an error, make sure to resolve it.
Update your DNS and point your domain to your new Google server IP address
Before making your Moodle site live on Google Cloud, you’ll test by updating your computer’s host file and then update your domain’s DNS records to point to the new server’s IP address.
Once your local test is successful, log in to your DNS provider portal and update the DNS A record to point to your new server IP address.
If everything works, you can continue fine-tuning your new server to ensure everything is configured correctly.
That should do it!
Conclusion:
This post showed you how to migrate a Moodle website to a Google Cloud server. Please use the comment form below if you find any errors above or have something to add.
Was this guide helpful?
About the Author
Richard
Tech Writer, IT Professional
Richard, a writer for Geek Rewind, is a tech enthusiast who loves breaking down complex IT topics into simple, easy-to-understand ideas. With years of hands-on experience in system administration and enterprise IT operations, he’s developed a knack for offering practical tips and solutions. Richard aims to make technology more accessible and actionable. He's deeply committed to the Geek Rewind community, always ready to answer questions and engage in discussions.
No comments yet — be the first to share your thoughts!