You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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项目

  1. 修改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解析环境变量。
  2. 安装生产依赖:
    pip install gunicorn dj-database-url whitenoise
    
  3. 生成依赖清单:
    pip freeze > requirements.txt
    
  4. 编写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

  1. 构建镜像并推送到Artifact Registry:
    gcloud builds submit --tag us-central1-docker.pkg.dev/your-gcp-project-id/django-repo/django-app
    
    (替换为你的GCP项目ID、区域和镜像名称)
  2. 部署到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

  1. 在Google Cloud控制台创建Cloud DNS区域,名称与你的域名一致。
  2. 复制Cloud DNS给出的4条NS记录,到GoDaddy域名管理后台,替换默认DNS服务器为这4条。
  3. 等待DNS生效(1-24小时),进入Cloud Run控制台,找到你的服务→「自定义域名」→「添加映射」。
  4. 选择你的域名,Google会自动生成免费SSL证书,等待证书颁发完成后,域名将指向Cloud Run服务。

方案B:App Engine(全托管,无需管理服务器)

配置Django项目

  1. 修改settings.py:
    • ALLOWED_HOSTS = ["your-domain.com", "your-gcp-project-id.appspot.com"]
    • 静态文件托管到Cloud Storage,安装django-storages:
      pip install django-storages google-cloud-storage
      
      配置:
      STATICFILES_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。
  2. 编写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

  1. 初始化gcloud:
    gcloud init
    
  2. 部署项目:
    gcloud app deploy
    

绑定自定义域名到App Engine

  1. 进入App Engine控制台→「设置」→「自定义域名」→「添加域名」。
  2. 按照提示添加TXT记录到Cloud DNS(或GoDaddy)验证域名所有权。
  3. 验证通过后配置域名映射,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:43:14