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 se da por hecho que estás familiarizado con el desarrollo web de Django. Si eres nuevo en el desarrollo de Django, te recomendamos trabajar con cómo escribir 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
- Accede a tu Cuenta de Google.
Si todavía no tienes una cuenta, regístrate para obtener una nueva.
-
En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.
-
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.
- Habilita las Cloud SQL Admin API.
- 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.
Puedes descargar la muestra como un archivo ZIP y extraerla o clonar el repositorio en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
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
- Descarga el proxy con el siguiente comando:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
- Haz que el proxy sea ejecutable con el siguiente comando:
chmod +x cloud_sql_proxy
Linux de 32 bits
- Descarga el proxy con el siguiente comando:
wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
- Haz que el proxy sea ejecutable con el siguiente comando:
chmod +x cloud_sql_proxy
macOS de 64 bits
- Descarga el proxy con el siguiente comando:
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
- Haz que el proxy sea ejecutable con el siguiente comando:
chmod +x cloud_sql_proxy
macOS de 32 bits
- Descarga el proxy con el siguiente comando:
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
- Haz que el proxy sea ejecutable con el siguiente comando:
chmod +x cloud_sql_proxy
Windows de 64 bits
Para descargar el proxy, 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 porcloud_sql_proxy.exe
.
Windows de 32 bits
Para descargar el proxy, 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 porcloud_sql_proxy.exe
.
Imagen del proxy de Docker
Para mayor comodidad, el equipo de Cloud SQL mantiene varias imágenes de contenedor que contienen el proxy 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 Cloud SQL en GitHub. Puede extraer la última imagen a su máquina local usando Docker mediante el siguiente comando:docker pull gcr.io/cloudsql-docker/gce-proxy:1.19.1
Otro SO
En el caso de otros sistemas operativos que no se incluyen aquí, puedes compilar el proxy desde la fuente.Crea una instancia de Cloud SQL
- <a{: class="internal" l10n-attrs-original-order="href,track-type,track-name,track-metadata-position,track-metadata-end-goal,class,target" l10n-encrypted-href="swy1Ju7ZCFYcdSM5eWXif6UZVxTWFRvKZQskpFkH9Tzmsov9Tn44Y7Li5Oo7JOUB" target="_blank" track-metadata-end-goal="createInstance" track-metadata-position="body" track-name="internalLink" track-type="python" }="">
Crear una instancia de Cloud SQL para MySQL de segunda generación
Asigna a la instancia el nombre
</a{:>polls-instance
o uno similar. Es posible que esto tarde algunos minutos. Cuando la instancia esté lista, aparecerá en la lista de instancias. - 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
- 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.
- Crea un usuario y una base de datos de Cloud SQL de la manera siguiente:
Cloud Console
-
Crea una base de datos nueva mediante Cloud Console para tu instancia de Cloud SQL
polls-instance
. Por ejemplo, puedes usar el nombrepolls
. - Crea un usuario nuevo mediante Cloud Console para tu instancia de Cloud SQL
polls-instance
.
Cliente MySQL
-
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
-
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]';
-
Crea una base de datos nueva mediante Cloud Console para tu instancia de Cloud SQL
Realiza las configuraciones de la base de datos
Abre
mysite/settings.py
para edición.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.Obtén los valores de tu instancia:
gcloud sql instances describe [YOUR_INSTANCE_NAME]
En el resutado, copia el valor
connectionName
que se usará en el paso siguiente.Configura
<your-cloudsql-connection-string>
comoconnectionName
del paso anterior.Configura
[YOUR-DATABASE]
como el nombre que elegiste durante el paso Inicializa la instancia de Cloud SQL.
Cierra y guarda
settings.py
.
Ejecuta la app en tu computadora local
Para ejecutar la app de Django en tu computadora local, configura un entorno de desarrollo de Python que incluya Python,
pip
yvirtualenv
.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
Ejecuta las migraciones de Django para configurar tus modelos:
python manage.py makemigrations python manage.py makemigrations polls python manage.py migrate
Inicia un servidor web local:
python manage.py runserver
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.
Presiona
Control+C
para detener el servidor web local.
Usa la Consola del administrador de Django
Crea un superusuario. Debes especificar un nombre de usuario y una contraseña.
python manage.py createsuperuser
Inicia un servidor web local:
python manage.py runserver
En tu navegador, ve a http://localhost:8000/admin.
http://localhost:8000/admin
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
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
ensettings.py
:python manage.py collectstatic
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 archivoapp.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:
PROJECT_ID
: el ID del proyecto de Google CloudREGION_ID
: Un código que App Engine asigna a la app
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 ensettings.py
usa la variable de entornoGAE_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.
- Cuando la app se ejecuta en App Engine, se conecta al host de MySQL mediante el socket Unix
El archivo
app.yaml
contiene información de configuración para la implementación en App Engine. Este archivoapp.yaml
especifica que App Engine entrega archivos estáticos desde el directoriostatic/
: