Usar phpMyAdmin con Cloud SQL en el entorno estándar de App Engine


Aprende a instalar phpMyAdmin en el entorno estándar de App Engine. Puedes usar phpMyAdmin para administrar Cloud SQL en la Web.

Este tutorial te resultará útil si:

  • Ejecutas aplicaciones en App Engine.
  • Usas Cloud SQL como tu base de datos.
  • Usar phpMyAdmin como interfaz para MySQL o si prefieres una interfaz web para la administración de bases de datos.

Si usas Compute Engine, te recomendamos que utilices uno de los stacks de desarrollo o productos disponibles a través de Click to Deploy. Las implementaciones de pilas que incluyen MySQL, como LAMP y LEMP, o productos como Drupal, ofrecen la opción de instalar phpMyAdmin como parte de la implementación.

Objetivos

  • Desplegar phpMyAdmin en el entorno estándar de App Engine.

Costes

Este tutorial usa componentes facturables de Cloud Platform, entre los que se incluyen los siguientes:

  • App Engine
  • Cloud SQL

Si quieres generar una estimación de costes en función del uso previsto, usa la calculadora de precios.

Los nuevos usuarios de Cloud Platform pueden disfrutar de una prueba gratuita.

Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Install the gcloud CLI.

  5. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  6. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. Verify that billing is enabled for your Google Cloud project.

  9. Install the gcloud CLI.

  10. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  11. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  12. Crea una instancia de Cloud SQL de segunda generación.
  13. (Opcional) Despliega una aplicación de App Engine que use tu instancia de Cloud SQL o selecciona una aplicación existente.

    Por ejemplo, crea y despliega la muestra del libro de visitas. Aunque puedes desplegar phpMyAdmin solo, es probable que desees utilizarlo con una aplicación de App Engine en tu escenario real.

  14. Descargar el código fuente de phpMyAdmin

    Desplegarás phpMyAdmin como un servicio de tu aplicación App Engine, por lo que debes descargar el código fuente de phpMyAdmin. Sigue estos pasos:

    1. En un terminal de Cloud Shell, introduce el siguiente comando para descargar el código fuente de la versión 4.9.5 de phpMyAdmin:

      wget https://files.phpmyadmin.net/phpMyAdmin/4.9.5/phpMyAdmin-4.9.5-all-languages.tar.gz
      

      Para usar una versión diferente de phpMyAdmin, usa los enlaces a las versiones disponibles en la página de descargas de phpMyAdmin.

    2. Crea un nuevo directorio. Aquí deberás extraer los archivos.

      mkdir phpMyAdmin
      
    3. Extrae los contenidos del archivo en el nuevo directorio.

      tar -xzvf phpMyAdmin-4.9.5-all-languages.tar.gz -C phpMyAdmin --strip-components=1
      

    Preparar los archivos para el despliegue

    Para desplegar phpMyAdmin, debes crear tres archivos: app.yaml, que contiene la información de configuración de App Engine; config.inc.php, que contiene la información de configuración de phpMyAdmin; y php.ini, que contiene la configuración específica de la aplicación para PHP.

    Crear app.yaml

    El archivo de configuración de App Engine especifica cómo se corresponden las rutas URL con los controladores de peticiones y los archivos estáticos. Asimismo, contiene información acerca del código de la aplicación como, por ejemplo, el ID de aplicación y el identificador de la última versión. Para crear el archivo, sigue estos pasos:

    1. En el directorio que has creado, llamado phpMyAdmin, crea un archivo llamado app.yaml.

      cd phpMyAdmin
      touch app.yaml
      
    2. Con el editor que prefieras, pega el siguiente texto en app.yaml.

      service: phpmyadmin
      runtime: php55
      api_version: 1
      
      handlers:
      
      - url: /(.+\.(ico|jpg|png|gif))$
        static_files: \1
        upload: (.+\.(ico|jpg|png|gif))$
        application_readable: true
      
      - url: /(.+\.(htm|html|css|js))$
        static_files: \1
        upload: (.+\.(htm|html|css|js))$
        application_readable: true
      
      - url: /(.+\.php)$
        script: \1
        login: admin
      
      - url: /.*
        script: index.php
        login: admin
      
    3. Si vas a implementar phpMyAdmin como la primera y única aplicación en App Engine, cambia el valor de service de phpmyadmin a default.

      De forma habitual, desplegarías phpMyAdmin como un servicio de una aplicación existente y proporcionarías un nombre para el servicio. Sin embargo, si aún no has desplegado una aplicación, debes usar el nombre de servicio "predeterminado". Esto es suficiente para los fines de este tutorial si vas a probar phpMyAdmin en App Engine.

      Este tutorial funciona solo para el entorno estándar de App Engine.

    4. Guarda el archivo.

    Crear config.inc.php

    Para crear el archivo de configuración phpMyAdmin, sigue estos pasos.

    1. Crea un archivo llamado config.inc.php.

      touch config.inc.php
      
    2. Con el editor que prefieras, pega el siguiente texto en config.inc.php.

      <?php
      /**
       * Copyright 2016 Google Inc.
       *
       * Licensed under the Apache License, Version 2.0 (the "License");
       * you may not use this file except in compliance with the License.
       * You may obtain a copy of the License at
       *
       *     http://www.apache.org/licenses/LICENSE-2.0
       *
       * Unless required by applicable law or agreed to in writing, software
       * distributed under the License is distributed on an "AS IS" BASIS,
       * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       * See the License for the specific language governing permissions and
       * limitations under the License.
       */
      /*
       * This is needed for cookie based authentication to encrypt password in
       * cookie
       * http://www.question-defense.com/tools/phpmyadmin-blowfish-secret-generator
       */
      $cfg['blowfish_secret'] = '{{your_secret}}'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
      
      /*
       * Servers configuration
       */
      $i = 0;
      
      // Change this to use the project and instance that you've created.
      $host = '/cloudsql/{{your_connection_string}}';
      $type = 'socket';
      
      /*
      * First server
      */
      $i++;
      /* Authentication type */
      $cfg['Servers'][$i]['auth_type'] = 'cookie';
      /* Server parameters */
      $cfg['Servers'][$i]['socket'] = $host;
      $cfg['Servers'][$i]['connect_type'] = $type;
      $cfg['Servers'][$i]['compress'] = false;
      /* Select mysql if your server does not have mysqli */
      $cfg['Servers'][$i]['extension'] = 'mysqli';
      $cfg['Servers'][$i]['AllowNoPassword'] = true;
      /*
       * End of servers configuration
       */
      
      /*
       * Directories for saving/loading files from server
       */
      $cfg['UploadDir'] = '';
      $cfg['SaveDir'] = '';
      
      /*
      * Other settings
      */
      $cfg['PmaNoRelation_DisableWarning'] = true;
      $cfg['ExecTimeLimit'] = 60;
      $cfg['CheckConfigurationPermissions'] = false;
      
    3. Abre Google Cloud Shell y ejecuta lo siguiente para obtener una cadena aleatoria para tu blowfish:

      php -r "echo password_hash(uniqid(), PASSWORD_BCRYPT).PHP_EOL;"
      
    4. Pega el nuevo secreto en lugar de {{your_secret}} en config.inc.php.

    5. Ve a la página Instancias de Cloud SQL de la Google Cloud consola.

    6. Haz clic en la instancia de Cloud SQL para abrir su página de detalles de instancia.

    7. Sustituye el valor de {{your_connection_string}} (en la variable $host) por la propiedad Nombre de conexión de la instancia.

    8. Guarda el archivo.

    Crear php.ini

    En su código, phpMyAdmin usa funciones que están inhabilitadas de forma predeterminada en App Engine. Siga estos pasos para añadir un archivo php.ini para que App Engine vuelva a habilitar las funciones:

    1. Crea el archivo en el directorio phpMyAdmin.

      touch php.ini
      
    2. Edita el archivo y agrega la siguiente línea:

      google_app_engine.enable_functions = "php_uname, getmypid"
      
    3. Guarda el archivo.

    Desplegar la aplicación

    Usa los siguientes comandos para desplegar la aplicación en App Engine.

    1. Comprueba si hay actualizaciones para tus componentes de gcloud.

      gcloud components update
      
    2. Para implementar la aplicación, ejecuta el siguiente comando desde el directorio phpMyAdmin en el que se encuentra el archivo app.yaml:

      gcloud app deploy
      

      Este comando implementa la aplicación en el servicio phpMyAdmin, tal como se especifica en el archivo app.yaml. El despliegue en un servicio independiente ayuda a garantizar que phpMyAdmin se ejecute en el mismo centro de datos que tu aplicación principal, lo que mejora el rendimiento. Para obtener más información sobre cómo desplegar tu aplicación desde la línea de comandos, consulta Desplegar una aplicación PHP.

    Iniciar sesión en phpMyAdmin

    Ahora puedes iniciar sesión en phpMyAdmin.

    1. En tu navegador web, introduce la URL de phpMyAdmin para abrir la página de bienvenida. Cambia la URL para usar el ID de tu aplicación.

          https://phpmyadmin-dot-[YOUR_APP_ID].appspot.com
      
    2. Para el nombre de usuario, introduce raíz.

    3. Introduce la contraseña raíz que proporcionaste al configurar la cuenta raíz.

    4. Haz clic en Ir.

    A medida que desarrolles tu aplicación de App Engine, recuerda proteger con contraseña cualquier cuenta de usuario que crees para acceder a las bases de datos en Cloud SQL.

    Solucionar problemas

    App Engine usa el proxy de autenticación de Cloud SQL para conectarse a instancias de segunda generación de Cloud SQL. Para obtener más información sobre cómo funciona el proxy de autenticación de Cloud SQL, consulta Información sobre el proxy de autenticación de Cloud SQL.

    Los registros de App Engine de la Google Cloud consola pueden proporcionar información sobre los errores de App Engine.

    Limpieza

    Cuando hayas terminado el tutorial, puedes eliminar los recursos que has creado para que dejen de usar cuota y generar cargos. En las siguientes secciones se explica cómo eliminar o desactivar dichos recursos.

    Eliminar el proyecto

    La forma más fácil de evitar que te cobren es eliminar el proyecto que has creado para el tutorial.

    Para ello, sigue las instrucciones que aparecen a continuación:

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Eliminar instancias

    Para eliminar una instancia de Cloud SQL, sigue las instrucciones que se muestran a continuación:

    1. In the Google Cloud console, go to the Instances page.

      Go to Instances

    2. Click the name of the SQL instance you that want to delete.
    3. To delete the instance, click Delete, and then follow the instructions.

    Siguientes pasos