Deploying Django Application on GCP — Google App Engine with Cloud SQL and Custom Domain Mapping

Vishal Bulbule
4 min readJun 5, 2024

--

Introduction

Deploying a Django application can sometimes be a daunting task, especially when integrating with cloud services like Google App Engine and Cloud SQL. To help developers navigate this process, I’ve created a comprehensive video tutorial that walks you through each step — from setting up your local environment to mapping a custom domain. This blog post will summarize the key points covered in the video and provide you with additional resources to get your Django app up and running on Google Cloud Platform.

Topics Covered

  • Build and Test Django App in Local
  • Setting up Google App Engine
  • Deploy Django App on Google App Engine
  • Connecting Django to Cloud SQL (MySQL)
  • Mapping a custom domain to your app
  • Common Issues

Watch the Tutorial

Detailed Steps

1. Build and Test Django App Locally

Before deploying, it’s crucial to make sure your Django application works perfectly in a local environment. This involves setting up your development server, configuring your database, and ensuring all dependencies are installed.

Use steps mentioned in GitHub Readme file to setup local Django App.

https://github.com/vishal-bulbule/Django-Google-app-engine

2. Setting Up Google App Engine

Google App Engine is a powerful platform that allows you to run your web applications on Google’s infrastructure. In this step, you’ll create a new project in the Google Cloud Console, enable the necessary APIs, and configure your app for deployment.

3. Deploy Django App on Google App Engine

Deploying your app involves creating an `app.yaml` configuration file, preparing your application for deployment, and using the `gcloud` command-line tool to deploy your app to App Engine.

4. Connecting Django to Cloud SQL (MySQL)

Integrating your Django application with Cloud SQL ensures that your data is stored in a reliable, managed SQL database. This step covers setting up a Cloud SQL instance, configuring your Django settings, and migrating your database schema.

5. Mapping a Custom Domain to Your App

To give your application a professional touch, you’ll map a custom domain to your Google App Engine app. This involves verifying your domain, setting up DNS records, and configuring SSL certificates.

Related Links

For more detailed information, check out these resources:
- [Google Cloud App Engine Documentation](https://cloud.google.com/appengine/docs/legacy/standard/python/mapping-custom-domains)
- [Django Documentation](https://docs.djangoproject.com/)

Common Issues

Issue-1

502 Bad Gateway

This is generic error check exact error in Google Cloud Log explorer using App Engine log navigation.

Error in Logs

File “<frozen importlib._bootstrap>”, line 1030, in _gcd_import File “<frozen importlib._bootstrap>”, line 1007, in _find_and_load File “<frozen importlib._bootstrap>”, line 984, in _find_and_load_unlocked ModuleNotFoundError: No module named ‘main’

Solution

The error message you’re seeing indicates that the Django application deployed on Google App Engine is trying to import a module named main, but it cannot find it. This typically happens when the entry point to the application is not correctly configured. Create main.py pointing ti wsgi application.

from  notes_project.wsgi import application
app = application

Issue-2

Error

DisallowedHost at /Invalid HTTP_HOST header: 'noteapp-dot-tt-dev-001.uc.r.appspot.com'. You may need to add 'noteapp-dot-tt-dev-001.uc.r.appspot.com' to ALLOWED_HOSTS.

Solution

Update Django Settings.py to allow all traffic

Issue-3

Error -

OperationalError at /notes(2002, "Can't connect to local MySQL server through socket '/cloudsql/tt-dev-001:us-central1:noteapp-mysql' (2)")

Solution

Provide Cloud SQL Client Role to App Engine default service Account.

Conclusion

Deploying a Django application on Google App Engine with Cloud SQL and a custom domain might seem challenging at first, but with the right guidance, it becomes a manageable task. I hope this tutorial helps you deploy your Django applications with confidence. If you find the video helpful, please like, comment, and subscribe to my YouTube channel for more tutorials on web development and cloud computing.

Stay tuned for more guides and tutorials!

--

--