Puedes usar el servidor de desarrollo local para simular el funcionamiento de tu aplicación de App Engine en producción, así como para acceder a los servicios agrupados de App Engine.
El entorno simulado aplica algunas restricciones del espacio aislado, como las funciones del sistema y las importaciones de módulos de PHP 5, pero no otras, como los tiempos de espera o las cuotas de las solicitudes.
El servidor de desarrollo local también simula los servicios proporcionados por las bibliotecas del SDK de App Engine, como Datastore, Memcache y Task Queues, realizando sus tareas de forma local. Cuando tu aplicación se ejecuta en el servidor de desarrollo, puedes seguir haciendo llamadas a APIs remotas a la infraestructura de producción mediante los endpoints HTTP de las APIs de Google.
Antes de empezar
Como PHP 5 ha llegado al final del periodo de asistencia, ya no puedes usar la versión más reciente de dev_appserver.py
para ejecutar tus aplicaciones localmente. Para descargar una versión archivada de devapp_server.py
, sigue estos pasos:
En el archivo, descarga la carpeta comprimida que contiene el servidor
dev_appserver.py
para los tiempos de ejecución que han llegado al final del periodo de asistencia.Extrae el contenido del directorio en tu sistema de archivos local, por ejemplo, en el directorio
/home
. Puedes encontrardev_appserver.py
en el directoriogoogle_appengine/
.
Configurar el servidor de desarrollo local
Para ejecutar la herramienta del servidor de desarrollo local, debe configurar lo siguiente:
Verifica que has instalado un intérprete de Python 2 de la versión 2.7.12 o posterior.
Define la variable de entorno
DEVAPPSERVER_ROOT
en tu shell con la ruta de tu intérprete de Python 2.
Ejecutar el servidor de desarrollo local
Después de configurar el servidor de desarrollo local y crear el archivo de configuración app.yaml
de tu aplicación, puedes usar el comando dev_appserver.py
para ejecutarla localmente.
Para iniciar el servidor de desarrollo local, sigue estos pasos:
En el directorio que contiene el archivo de configuración
app.yaml
, ejecuta el comandodev_appserver.py
.Windows/macOS
Especifica la ruta del directorio de tu aplicación. Por ejemplo:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py [PATH_TO_YOUR_APP]
También puedes especificar el archivo de configuración de un servicio concreto. Por ejemplo:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py app.yaml
Para cambiar el puerto, incluye la opción
--port
:python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]
Sustituye
[DEVAPPSERVER_ROOT]
por la ruta a la carpeta en la que extraes la versión archivada dedevapp_server.py
.Linux/cust. php-cgi
Si usas Linux o quieres usar una versión personalizada de
php-cgi
, debes especificar la ruta de directorio aphp-cgi
:Crea tu propia versión de la extensión PHP de App Engine en tu máquina local.
Inicia el servidor de desarrollo local con las opciones
--php_executable_path
y--php_gae_extension_path
:python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --php_executable_path=[PATH_TO_PHP_CGI] --php_gae_extension_path=[PATH_TO_APPENGINE_EXTENSION] app.yaml
Sustituye:
- DEVAPPSERVER_ROOT con la ruta a la carpeta donde quieras extraer la versión archivada de
devapp_server.py
. --php_executable_path
con la ubicación del intérprete de PHP.--php_gae_extension_path
con la ubicación del archivogae_runtime_module.so
que has creado en el paso anterior.
- DEVAPPSERVER_ROOT con la ruta a la carpeta donde quieras extraer la versión archivada de
Para obtener más información sobre las opciones del comando
dev_appserver.py
, consulta Opciones del servidor de desarrollo local.El servidor de desarrollo local ya está en funcionamiento y a la espera de solicitudes. Puedes visitar http://localhost:8080/ en tu navegador web para ver la aplicación en acción.
Si has especificado un puerto personalizado con la opción
--port
, recuerda abrir tu navegador en ese puerto.
Para detener el servidor local desde la línea de comandos, pulsa lo siguiente:
- macOS o Linux: Control+C
- Windows: Control + Inter
Especificar IDs de aplicación
Para acceder a tu ID de aplicación en el servidor local (por ejemplo, para suplantar una dirección de correo electrónico), usa la función
AppIdentityService::getApplicationId
. Para obtener el nombre de host de la aplicación en ejecución, usa la función
AppIdentityService::getDefaultVersionHostname
.
Detectar el entorno de tiempo de ejecución de la aplicación
Para determinar si tu código se está ejecutando en producción o en el servidor de desarrollo local, puedes comprobar el valor de la variable de entorno SERVER_SOFTWARE
:
if (strpos(getenv('SERVER_SOFTWARE'), 'Development') === 0){
echo 'Local development server';
} else {
echo 'Production';
}
Datos del almacén
App Engine para PHP admite la lectura y escritura en Cloud Storage a través de la API de streams de PHP. Puedes leer y escribir en Cloud Storage especificando un URI de Cloud Storage (gs://
) al usar cualquier función de PHP que admita la implementación de Streams de PHP, como fopen, fwrite o file_get_contents.
El servidor de desarrollo local emula esta función leyendo y escribiendo en archivos locales temporales que se conservan entre solicitudes.
Consultar el almacén de datos local
Si tu aplicación ha escrito datos en tu Datastore local mediante el servidor de desarrollo local, puedes consultarlos en la consola de desarrollo local.
Para consultar el Datastore local, sigue estos pasos:
Accede a Datastore Viewer en la consola de desarrollo local. La URL es
http://localhost:8000/datastore
.Ver el contenido de tu almacén de datos local.
Usar el servicio Users
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 inicio y cierre de sesión. Cuando se ejecuta en el servidor de desarrollo local, las funciones
createLoginURL
y createLogoutURL
devuelven URLs de /_ah/login
y /_ah/logout
en el servidor local.
Usar Correo
El servidor de desarrollo local puede enviar correos en las llamadas al servicio de correo de App Engine mediante un servidor SMTP o una instalación local de Sendmail.
Usar SMTP
Para habilitar la compatibilidad con el correo mediante un servidor SMTP, invoca dev_appserver.py
de la siguiente manera::
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
--smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]
Sustituye:
[DEVAPPSERVER_ROOT]
con la ruta a la carpeta donde quieras extraer la versión archivada dedevapp_server.py
.--smtp_host
,--smtp_port
,--smtp_user
y--smtp_password
con tus propios valores de configuración.
Usar Sendmail
Para habilitar la asistencia de correo con Sendmail, invoca dev_appserver.py
de la siguiente manera:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]
Sustituye [DEVAPPSERVER_ROOT]
por la ruta a la carpeta en la que has extraído la versión archivada de devapp_server.py
.
El servidor local usará el comando sendmail
para enviar mensajes de correo con la configuración predeterminada de tu instalación.
Usar la obtención de URLs
Cuando tu aplicación usa la API de obtención de URLs para hacer una solicitud HTTP, el servidor de desarrollo local hace la solicitud directamente desde tu ordenador. El comportamiento de la obtención de URLs en el servidor local puede ser diferente del de App Engine en producción si usas un servidor proxy para acceder a sitios web.
Depurar de forma local con Xdebug
Si tienes un depurador compatible con el depurador XDebug y tienes instalado el módulo xdebug
, puedes usar XDebug con el servidor de desarrollo local.
Para habilitar Xdebug en el servidor de desarrollo en Linux o macOS, sigue estos pasos:
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"
Invoca el servidor de desarrollo con
--php_remote_debugging=yes
.