如何将Django项目指向谷歌云平台中已购买的自定义域名?
解决方法:将Django项目部署到自定义GoDaddy域名
核心前提说明
Cloud Storage的静态网站托管仅支持纯静态内容,无法运行Django这类动态后端应用,因此必须切换到Google Cloud的计算类服务(推荐Cloud Run或App Engine)部署Django,再将自定义域名绑定到该服务。
步骤1:停用Cloud Storage静态网站服务
- 打开Cloud Storage控制台,找到你的域名同名bucket,进入「网站配置」页面,关闭静态网站托管功能。
- 保留该bucket,后续可用于存储Django的静态/媒体文件。
步骤2:选择部署方案并部署Django
方案A:Cloud Run(无服务器,轻量灵活,适合多应用Django)
配置Django项目
- 修改
settings.py:ALLOWED_HOSTS = ["your-domain.com", "*.run.app"](*.run.app为Cloud Run临时域名,后续会替换)- 静态文件配置:
STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR / 'staticfiles' - 媒体文件配置(如需):
MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR / 'media' - 替换数据库为Cloud SQL(PostgreSQL/MySQL,禁止使用SQLite),用
dj-database-url解析环境变量。
- 安装生产依赖:
pip install gunicorn dj-database-url whitenoise - 生成依赖清单:
pip freeze > requirements.txt - 编写
Dockerfile:FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . # 收集静态文件到staticfiles目录 RUN python manage.py collectstatic --noinput # 用gunicorn启动服务 CMD ["gunicorn", "--bind", "0.0.0.0:8080", "your-project-name.wsgi:application"]
构建并部署到Cloud Run
- 构建镜像并推送到Artifact Registry:
(替换为你的GCP项目ID、区域和镜像名称)gcloud builds submit --tag us-central1-docker.pkg.dev/your-gcp-project-id/django-repo/django-app - 部署到Cloud Run:
部署完成后会得到临时gcloud run deploy django-app --image us-central1-docker.pkg.dev/your-gcp-project-id/django-repo/django-app --platform managed --region us-central1 --allow-unauthenticated*.run.app域名,先测试是否能正常访问Django项目。
绑定自定义域名到Cloud Run
- 在Google Cloud控制台创建Cloud DNS区域,名称与你的域名一致。
- 复制Cloud DNS给出的4条NS记录,到GoDaddy域名管理后台,替换默认DNS服务器为这4条。
- 等待DNS生效(1-24小时),进入Cloud Run控制台,找到你的服务→「自定义域名」→「添加映射」。
- 选择你的域名,Google会自动生成免费SSL证书,等待证书颁发完成后,域名将指向Cloud Run服务。
方案B:App Engine(全托管,无需管理服务器)
配置Django项目
- 修改
settings.py:ALLOWED_HOSTS = ["your-domain.com", "your-gcp-project-id.appspot.com"]- 静态文件托管到Cloud Storage,安装
django-storages:
配置:pip install django-storages google-cloud-storageSTATICFILES_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage' GS_BUCKET_NAME = 'your-domain-bucket-name' STATIC_URL = f'https://storage.googleapis.com/{GS_BUCKET_NAME}/static/' - 数据库配置同上,使用Cloud SQL和
dj-database-url。
- 编写
app.yaml:runtime: python311 entrypoint: gunicorn -b :$PORT your-project-name.wsgi:application env_variables: DATABASE_URL: "postgres://db-user:db-password@//cloudsql/your-gcp-project-id:us-central1:db-instance-name/db-name" SECRET_KEY: "your-django-secret-key" DEBUG: "False" handlers: - url: /static static_dir: staticfiles/ - url: /.* script: auto
部署到App Engine
- 初始化gcloud:
gcloud init - 部署项目:
gcloud app deploy
绑定自定义域名到App Engine
- 进入App Engine控制台→「设置」→「自定义域名」→「添加域名」。
- 按照提示添加TXT记录到Cloud DNS(或GoDaddy)验证域名所有权。
- 验证通过后配置域名映射,Google自动生成SSL证书,完成后域名指向App Engine服务。
步骤3:优化静态/媒体文件(可选)
- 如果使用Cloud Run,将收集好的静态文件上传到之前的bucket:
修改gsutil cp -r staticfiles/* gs://your-domain-bucket/static/settings.py的STATIC_URL为bucket的静态文件地址,再配合Cloud CDN加速访问。
步骤4:测试访问
等待DNS和SSL证书生效后,直接访问自定义域名,即可看到Django项目页面,替代原静态HTML。
内容的提问来源于stack exchange,提问作者Fred Myers
相关产品推荐
相关产品推荐

