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


Aprende cómo instalar phpMyAdmin en un entorno estándar de App Engine. Puedes usar phpMyAdmin para administrar Cloud SQL a través de la Web.

Este instructivo te resultará útil si:

  • Ejecutas aplicaciones en App Engine.
  • Usas Cloud SQL como base de datos.
  • Usar phpMyAdmin como interfaz de MySQL o usar una interfaz web para administrar la base de datos.

Si usas Compute Engine, considera usar una de las pilas de desarrollo o los productos disponibles a través de la implementación en un clic. 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

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

Costos

Este instructivo usa componentes facturables de Cloud Platform, incluidos los siguientes:

  • App Engine
  • Cloud SQL

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto.

Los usuarios nuevos de Cloud Platform pueden optar por una prueba gratuita.

Antes de comenzar

  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.

    Go to project selector

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

  4. Install the gcloud CLI.

  5. Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.

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

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

    Go to project selector

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

  9. Install the gcloud CLI.

  10. Si usas un proveedor de identidad externo (IdP), primero debes acceder a gcloud CLI con tu identidad federada.

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

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

    Por ejemplo, crea y, luego, implementa la muestra del libro de visitas. Aunque puedes implementar phpMyAdmin de manera individual, es probable que te convenga usarlo con una aplicación de App Engine en una situación real.

  14. Descarga el código fuente de phpMyAdmin

    Implementarás phpMyAdmin como servicio de tu aplicación de App Engine, por eso debes descargar el código fuente de phpMyAdmin. Lleva a cabo los pasos siguientes:

    1. En una terminal de Cloud Shell, ingresa 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 otra versión de phpMyAdmin, usa los vínculos a las versiones disponibles en la página de descarga de phpMyAdmin.

    2. Crea un directorio nuevo. Usarás este directorio para extraer los archivos.

      mkdir phpMyAdmin
      
    3. Extrae los archivos en el directorio nuevo.

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

    Prepara los archivos para la implementación

    La implementación de phpMyAdmin requiere la creación de 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 la manera en que las rutas de URL corresponden a controladores de solicitudes y archivos estáticos. También contiene información sobre el código de la aplicación, como el ID de la aplicación y el identificador de la versión más reciente. Para crear el archivo, sigue estos pasos:

    1. En el directorio que creaste, llamado phpMyAdmin, crea un nuevo archivo con el nombre app.yaml.

      cd phpMyAdmin
      touch app.yaml
      
    2. Con tu editor favorito, 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 implementas phpMyAdmin como la primera y única aplicación en App Engine, cambia el valor de service de phpmyadmin a default.

      Por lo general, phpMyAdmin se implementa como un servicio de una aplicación existente y se le proporciona un nombre al servicio. Sin embargo, si aún no implementaste una aplicación, entonces es obligatorio que uses el nombre de servicio “default”. Eso está bien para los fines de este instructivo si estás probando phpMyAdmin en App Engine.

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

    4. Guarda el archivo.

    Crea config.inc.php

    Sigue estos pasos para crear el archivo de configuración de phpMyAdmin.

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

      touch config.inc.php
      
    2. Con tu editor favorito, 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. A fin de obtener una string aleatoria para el blowfish, abre Google Cloud Shell y ejecuta lo siguiente:

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

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

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

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

    8. Guarda el archivo.

    Crea php.ini

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

    1. En el directorio phpMyAdmin, crea el archivo.

      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.

    Implementa la aplicación

    Usa los siguientes comandos para implementar tu aplicación en App Engine.

    1. Verifica si hay actualizaciones para los componentes de gcloud.

      gcloud components update
      
    2. Implementa la aplicación mediante el siguiente comando desde el directorio phpMyAdmin en el que se encuentra tu archivo app.yaml:

      gcloud app deploy
      

      Con este comando, se implementa la app en el servicio phpMyAdmin, como se especifica en tu archivo app.yaml. La implementación 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 la implementación de la app desde la línea de comandos, consulta Implementa una aplicación PHP.

    Cómo acceder a phpMyAdmin

    Ahora puedes acceder a phpMyAdmin.

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

          https://phpmyadmin-dot-[YOUR_APP_ID].appspot.com
      
    2. Como Nombre de usuario, ingresa raíz.

    3. Ingresa la contraseña de raíz que proporcionaste cuando configuraste la cuenta raíz.

    4. Haz clic en Ir.

    Mientras desarrollas la aplicación de App Engine, recuerda proteger con contraseña todas las cuentas de usuario que crees para acceder a las bases de datos en Cloud SQL.

    Solucionar problemas

    App Engine usa el proxy de Cloud SQL Auth para conectarse a las instancias de Cloud SQL de segunda generación. 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 en la consola deGoogle Cloud pueden proporcionar información sobre los errores de App Engine.

    Limpia

    Una vez que completes el instructivo, puedes limpiar los recursos que creaste para que dejen de usar la cuota y generar cargos. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.

    Borra el proyecto

    La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

    Para borrar el proyecto, sigue estos pasos:

    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.

    Borrar instancias

    Para borrar una instancia de Cloud SQL, haz lo siguiente:

    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.

    ¿Qué sigue?