Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Ejecuta Django en el entorno estándar de App Engine

Las apps de Django que se ejecutan en el entorno estándar de App Engine escalan dinámicamente según el tráfico.

En este instructivo, suponemos que estás familiarizado con el desarrollo web de Django. Si eres nuevo en el desarrollo de Django, te recomendamos que escribas tu primera app de Django antes de continuar. En este instructivo, los modelos de la app representan encuestas con preguntas, y podrás interactuar con los modelos mediante la Consola del administrador de Django.

Este instructivo requiere Python 3.7.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyecto

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita las Cloud SQL Admin API.

    Habilita la API

  5. Instala e inicializa el SDK de Cloud.

Accede a gcloud

Adquiere credenciales nuevas para usar la API de Administrador de Cloud SQL:

gcloud auth application-default login

Descarga y ejecuta la app

Una vez que completes los requisitos, descarga y ejecuta la app de muestra de Django. En las siguientes secciones se te guiará a través de la configuración, ejecución e implementación de la app.

Cómo clonar la app de Django

El código de la app de muestra de Django está en el repositorio GoogleCloudPlatform/python-docs-samples en GitHub.

  1. Puedes descargar la muestra como un archivo ZIP y extraerlo o clonar el repositorio en tu máquina local:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

  2. Ve al directorio que contiene el código de muestra:

Linux/macOS

  cd python-docs-samples/appengine/standard_python3/django

Windows

  cd python-docs-samples\appengine\standard_python3\django

Configura tu entorno local

Cuando se implementa, tu aplicación usa el proxy de Cloud SQL integrado en el entorno de App Engine para comunicarse con tu instancia de Cloud SQL. Sin embargo, para probar tu aplicación de manera local, debes instalar y usar una copia local del proxy en tu entorno de desarrollo.

Más información sobre el proxy de Cloud SQL

Para realizar tareas de administrador básicas en la instancia de Cloud SQL, puedes usar el cliente PostgreSQL.

Cómo instalar el proxy de Cloud SQL

Descarga y, luego, instala el proxy de Cloud SQL. El proxy de Cloud SQL se conecta a tu instancia de Cloud SQL cuando se ejecuta de manera local.

Linux de 64 bits

  1. Descarga el proxy de autenticación de Cloud SQL:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
    chmod +x cloud_sql_proxy
    

Linux de 32 bits

  1. Descarga el proxy de autenticación de Cloud SQL:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
    chmod +x cloud_sql_proxy
    

macOS de 64 bits

  1. Descarga el proxy de autenticación de Cloud SQL:
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
    
  2. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
    chmod +x cloud_sql_proxy
    

macOS de 32 bits

  1. Descarga el proxy de autenticación de Cloud SQL:
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
    
  2. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
    chmod +x cloud_sql_proxy
    

Windows de 64 bits

Para descargar el proxy de autenticación de Cloud SQL, haz clic con el botón derecho en https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe y selecciona Guardar vínculo como. Cambia el nombre del archivo por cloud_sql_proxy.exe.

Windows de 32 bits

Para descargar el proxy de autenticación de Cloud SQL, haz clic derecho en https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe y selecciona Guardar vínculo como. Cambia el nombre del archivo por cloud_sql_proxy.exe.

Imagen de Docker del proxy de autenticación de Cloud SQL

Para mayor comodidad, el equipo de Cloud SQL mantiene varias imágenes de contenedor que poseen el proxy de autenticación de Cloud SQL para que lo usen nuestros clientes. Para obtener más información sobre estas imágenes, consulta el repositorio del proxy de autenticación de Cloud SQL en GitHub. Puedes extraer la última imagen a tu máquina local usando Docker mediante el siguiente comando:
docker pull gcr.io/cloudsql-docker/gce-proxy:1.19.1

Otro SO

Para otros sistemas operativos que no se incluyen aquí, puedes compilar el proxy de Cloud SQL Auth desde la fuente.

Crea una instancia de Cloud SQL

  1. Crea una instancia de Cloud SQL para MySQL de segunda generación.

    Asigna a la instancia el nombre polls-instance o uno similar. Es posible que esto tarde algunos minutos. Cuando la instancia esté lista, aparecerá en la lista de instancias.

  2. Usa el SDK de Cloud para ejecutar el comando siguiente en el que [YOUR_INSTANCE_NAME] representa el nombre de tu instancia de Cloud SQL:
    gcloud sql instances describe [YOUR_INSTANCE_NAME]

    En el resultado, toma nota del valor que se muestra para [CONNECTION_NAME].

    El valor [CONNECTION_NAME] tiene el formato [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].

Inicializa tu instancia de Cloud SQL

  1. Inicia el proxy de Cloud SQL con el valor [CONNECTION_NAME] del paso anterior.

    Linux/macOS

    ./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

    Windows

    cloud_sql_proxy.exe -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

    Reemplaza [YOUR_INSTANCE_CONNECTION_NAME] por el valor [CONNECTION_NAME] que registraste en el paso anterior.

    En este paso, se establece una conexión entre tu computadora local y tu instancia de Cloud SQL a fin de realizar pruebas locales. Mantén el proxy de Cloud SQL en ejecución durante todo el tiempo que realices pruebas locales en tu aplicación.

  2. Crea un usuario y una base de datos de Cloud SQL de la manera siguiente:

    Cloud Console

    1. Crea una base de datos nueva mediante Cloud Console para tu instancia de Cloud SQLpolls-instance. Por ejemplo, puedes usar el nombre polls.
    2. Crea un usuario nuevo mediante Cloud Console para tu instancia de Cloud SQLpolls-instance.

    Cliente MySQL

    1. En una pestaña independiente de la línea de comandos, usa el cliente MySQL o un programa similar para conectarte a la instancia. Cuando se te solicite, usa la contraseña raíz que configuraste.
      mysql --host 127.0.0.1 --user root --password
    2. Crea las bases de datos, los usuarios y los permisos de acceso necesarios en tu base de datos de Cloud SQL mediante los comandos siguientes. Reemplaza [MYSQL_USER] y [MYSQL_PASSWORD] por el nombre de usuario y la contraseña que deseas usar.
      CREATE DATABASE polls;
      CREATE USER '[MYSQL_USER]' IDENTIFIED BY '[MYSQL_PASSWORD]';
      GRANT ALL ON . TO '[MYSQL_USER]';

Realiza las configuraciones de la base de datos

  1. Abre mysite/settings.py para edición.

    1. A fin de ayudar a configurar la conexión a la base de datos para la implementación de App Engine y las pruebas locales, configura <your-database-user> y <your-database-password> con el nombre de usuario y la contraseña que creaste antes en el paso Crea una instancia de Cloud SQL.

    2. Obtén los valores para tu instancia:

      gcloud sql instances describe [YOUR_INSTANCE_NAME]
      
    3. En el resutado, copia el valor connectionName que se usará en el paso siguiente.

    4. Configura <your-cloudsql-connection-string> como connectionName del paso anterior.

    5. Configura [YOUR-DATABASE] como el nombre que elegiste durante el paso Inicializa la instancia de Cloud SQL.

  2. Cierra y guarda settings.py.

Ejecuta la app en tu computadora local

  1. Para ejecutar la app de Django en tu computadora local, configura un entorno de desarrollo de Python que incluya Python, pip y virtualenv.

  2. Crea un entorno aislado de Python e instala las dependencias:

    Linux/macOS

    virtualenv env
    source env/bin/activate
    pip install -r requirements.txt
    

    Windows

    virtualenv env
    env\scripts\activate
    pip install -r requirements.txt
    

  3. Ejecuta las migraciones de Django para configurar tus modelos:

    python manage.py makemigrations
    python manage.py makemigrations polls
    python manage.py migrate
    
  4. Inicia un servidor web local:

    python manage.py runserver
    
  5. En tu navegador, ve a http://localhost:8000.

    http://localhost:8000
    

    La página muestra el siguiente texto: “No hay encuestas disponibles”. El servidor web de Django que se ejecuta en tu computadora proporciona las páginas de la app de muestra.

  6. Presiona Control+C para detener el servidor web local.

Usa la Consola del administrador de Django

  1. Crea un superusuario. Debes especificar un nombre de usuario y una contraseña.

    python manage.py createsuperuser
    
  2. Inicia un servidor web local:

    python manage.py runserver
    
  3. En tu navegador, ve a http://localhost:8000/admin.

    http://localhost:8000/admin
    
  4. Accede al sitio del administrador con el nombre de usuario y la contraseña que usaste cuando ejecutaste createsuperuser.

Implementa la app en el entorno estándar de App Engine

  1. Para recopilar todo el contenido estático en una carpeta, mueve todos los archivos estáticos de la app a la carpeta que especifica STATIC_ROOT en settings.py:

    python manage.py collectstatic
    
  2. Para subir la app, ejecuta el siguiente comando desde el directorio python-docs-samples/appengine/standard_python3/django de la app en la que se encuentra el archivo app.yaml:

    gcloud app deploy
    

    Espera a que aparezca el mensaje que informa que la actualización se completó.

Visualiza la ejecución de la app en Google Cloud

Con el siguiente comando, se implementa la app como se describe en app.yaml y se establece la versión recién implementada como la versión predeterminada, lo que hace que entregue todo el tráfico nuevo.

  • En el navegador, ingresa la siguiente URL:

    https://PROJECT_ID.REGION_ID.r.appspot.com

    Reemplaza los siguientes elementos:

Un servidor web que se ejecuta en el entorno estándar de App Engine entrega tu solicitud.

Si actualizas la app, implementarás la versión actualizada mediante el mismo comando que usaste para implementarla. La implementación crea una versión nueva de tu app y la promueve a la versión predeterminada. Se conservan las versiones anteriores de la app. Todas estas versiones de la app son recursos facturables. Para reducir costos, borra las versiones no predeterminadas de tu aplicación.

Para obtener información acerca de cómo borrar las versiones no predeterminadas de tu app, consulta Limpiar.

Producción

Cuando estés listo para entregar tu contenido en producción, en mysite/settings.py, cambia la variable DEBUG a False.

Comprende el código

La app de muestra de Django se creó con las herramientas estándar de Django.

  • Con los siguientes comandos, se crea el proyecto y la app de encuestas:

    django-admin startproject mysite
    
    python manage.py startapp polls
    
  • El archivo settings.py contiene la configuración de tu base de datos de SQL: El código en settings.py usa la variable de entorno GAE_APPLICATION para determinar si la app se ejecuta en App Engine o en tu computadora local:

    • Cuando la app se ejecuta en App Engine, se conecta al host de MySQL mediante el socket Unix /cloudsql.
    • Cuando la app se ejecuta en la computadora local, se conecta al host de MySQL mediante el TCP, que necesita un nombre de usuario y una contraseña.
    if os.getenv('GAE_APPLICATION', None):
        # Running on production App Engine, so connect to Google Cloud SQL using
        # the unix socket at /cloudsql/<your-cloudsql-connection string>
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'HOST': '/cloudsql/[YOUR-CONNECTION-NAME]',
                'USER': '[YOUR-USERNAME]',
                'PASSWORD': '[YOUR-PASSWORD]',
                'NAME': '[YOUR-DATABASE]',
            }
        }
    else:
        # Running locally so connect to either a local MySQL instance or connect to
        # Cloud SQL via the proxy. To start the proxy via command line:
        #
        #     $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306
        #
        # See https://cloud.google.com/sql/docs/mysql-connect-proxy
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',
                'HOST': '127.0.0.1',
                'PORT': '3306',
                'NAME': '[YOUR-DATABASE]',
                'USER': '[YOUR-USERNAME]',
                'PASSWORD': '[YOUR-PASSWORD]',
            }
        }
  • El archivo app.yaml contiene información de configuración para la implementación en App Engine. Este archivo app.yaml especifica que App Engine entrega archivos estáticos desde el directorio static/:

    runtime: python39
    
    handlers:
    # This configures Google App Engine to serve the files in the app's static
    # directory.
    - url: /static
      static_dir: static/
    
    # This handler routes all requests not caught above to your main app. It is
    # required when static routes are defined, but can be omitted (along with
    # the entire handlers section) when there are no static files defined.
    - url: /.*
      script: auto