Usa el servidor de desarrollo local

Google Cloud CLI incluye un servidor de desarrollo local (dev_appserver.py). Puedes usar el servidor de desarrollo local para simular que se ejecuta tu aplicación en App Engine de producción y acceder a los servicios en paquetes de App Engine.

El entorno simulado aplica algunas restricciones de zonas de pruebas, como importaciones de módulos de PHP 5 y funciones restringidas del sistema; pero no otras, como tiempos de espera de solicitud o cuotas.

El servidor de desarrollo local simula los servicios que proporcionan las bibliotecas en el SDK de App Engine, incluidos Datastore, Memcache y lista de tareas en cola, cuando realizas estas tareas de forma local. Cuando tu aplicación se ejecuta en el servidor de desarrollo, puedes hacer llamadas remotas a la API para la infraestructura de producción cuando usas los extremos HTTP de la API de Google.

Ejecuta el servidor de desarrollo local

Una vez creado el archivo de configuración app.yaml para tu app, puedes iniciar el servidor de desarrollo local con el comando dev_appserver.py a fin de ejecutar la app de forma local.

Para iniciar el servidor de desarrollo local, sigue estos pasos:

  1. En el directorio que contiene el archivo de configuración app.yaml, ejecuta el comando dev_appserver.py. Si Python 2 no es el intérprete predeterminado en tu sistema, debes ejecutar python2 dev_appserver.py para asegurarte de que se use el intérprete de Python 2.

    Windows/macOS

    Especifica la ruta del directorio a tu app, por ejemplo:

      dev_appserver.py [PATH_TO_YOUR_APP]
    

    Como alternativa, puedes especificar el archivo de configuración de un servicio específico, como en el ejemplo siguiente:

      dev_appserver.py app.yaml
    

    Para cambiar el puerto, debes incluir la opción --port:

      dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]
    

    Linux/cust. php-cgi

    Si usas Linux o quieres usar una versión personalizada de php-cgi, debes especificar la ruta del directorio a php-cgi:

    1. Compila tu propia versión de la extensión de PHP en App Engine en tu máquina local.

    2. Inicia el servidor de desarrollo local con las opciones --php_executable_path y --php_gae_extension_path:

       dev_appserver.py --php_executable_path=[PATH_TO_PHP_CGI] --php_gae_extension_path=[PATH_TO_APPENGINE_EXTENSION] app.yaml
      

      donde --php_executable_path es la ubicación del intérprete de PHP que usas y donde --php_gae_extension_path es la ubicación del archivo gae_runtime_module.so que compilaste en el paso anterior.

    ¿No funciona dev_appserver.py?

    Para obtener más información sobre las opciones del comando dev_appserver.py, consulta Opciones del servidor de desarrollo local.

  2. El servidor de desarrollo local ahora ejecuta y recibe solicitudes. Puedes visitar http://localhost:8080/ en tu navegador web para ver la aplicación en acción.

    Si especificaste un puerto personalizado con la opción --port, recuerda abrir el navegador en ese puerto.

Si deseas detener el servidor local desde la línea de comandos, presiona las siguientes teclas:

  • En macOS o Linux: Control+C
  • En Windows: Control+Break

Especifica los ID de aplicación

Si deseas acceder a tu ID de app en el servidor local, por ejemplo, para falsificar una dirección de correo electrónico, usa la función AppIdentityService::getApplicationId. Si deseas obtener el nombre de host de la app en ejecución, usa la función AppIdentityService::getDefaultVersionHostname.

Detecta el entorno de ejecución de la aplicación

Si deseas determinar si el código se ejecuta en producción o en el servidor de desarrollo local, puedes verificar el valor de la variable de entorno de SERVER_SOFTWARE.

if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0){
  echo 'Local development server';
} else {
  echo 'Production';
}

Almacenar datos

App Engine para PHP admite leer y escribir en Cloud Storage mediante la API de transmisiones de PHP. Puedes leer y escribir en Cloud Storage especificando un URI de Cloud Storage (gs://) cuando usas cualquier función de PHP que admita la implementación de transmisiones de PHP, como fopen, fwrite o file_get_contents.

El servidor de desarrollo local emula esta funcionalidad mediante la lectura y escritura en archivos locales temporales que se conservan entre solicitudes.

Explora Datastore local

Si tu app escribió datos en Datastore local mediante el servidor de desarrollo local, puedes examinarlos desde Development Console de forma local.

Para explorar Datastore local, sigue estos pasos:

  1. Inicia el servidor de desarrollo.

  2. Ingresa al Visualizador de Datastore desde Development Console de forma local. La URL es http://localhost:8000/datastore.

  3. Observa el contenido de tu Datastore local.

Usa el servicio de usuarios

App Engine proporciona un Servicio de usuarios para simplificar la autenticación y la autorización de tu aplicación. El servidor de desarrollo local simula el comportamiento de las Cuentas de Google con sus propias páginas de acceso y salida. Mientras se ejecuta en el servidor de desarrollo local, las funciones createLoginURL y createLogoutURL muestran las URL de /_ah/login y /_ah/logout en el servidor local.

Usa el correo

El servidor de desarrollo local puede enviar correos electrónicos para llamar al servicio de correo de App Engine mediante el servidor SMTP o una instalación local de Sendmail.

Usa SMTP

Para habilitar la asistencia de correo con un servidor SMTP, invoca dev_appserver.py de la manera siguiente:

dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

En el ejemplo anterior, debes configurar las opciones --smtp_host, --smtp_port, --smtp_user y --smtp_password con tus propios valores.

Usa Sendmail

Para habilitar la asistencia de correo con Sendmail, invoca dev_appserver.py de la manera siguiente:

dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

El servidor local usará el comando sendmail para enviar mensajes de correo electrónico con la configuración predeterminada de tu instalación.

Usa la recuperación de URL

Cuando tu aplicación usa la API de recuperación de URL para realizar una solicitud HTTP, el servidor de desarrollo local realiza la solicitud directo desde tu computadora. El comportamiento de recuperación de URL en el servidor local puede diferir de la producción de App Engine si usas un servidor proxy para acceder a sitios web.

Depura localmente con XDebug

Si tienes un depurador que es compatible con el depurador de XDebug y tienes el módulo xdebug instalado, puedes usar XDebug con el servidor de desarrollo local.

Para habilitar XDebug en el servidor de desarrollo en Linux o macOS:

  1. Exporta la variable de entorno XDEBUG_CONFIG con una idekey para que tu IDE se conecte

    export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=localhost"
    
  2. Invoca el servidor de desarrollo con --php_remote_debugging=yes