Use o phpMyAdmin com o Cloud SQL no ambiente padrão do App Engine

Saiba como instalar o phpMyAdmin no ambiente padrão do App Engine. Pode usar o phpMyAdmin para administrar o Cloud SQL através da Web.

Este tutorial é útil se:

  • Executar aplicações no App Engine.
  • Use o Cloud SQL como base de dados.
  • Usar o phpMyAdmin como uma interface para o MySQL ou preferir uma interface Web para a administração da base de dados.

Se usar o Compute Engine, considere usar uma das stacks de desenvolvimento ou produtos disponíveis através do Click to Deploy. As implementações de stacks que incluem o MySQL, como o LAMP e o LEMP, ou produtos como o Drupal, oferecem uma opção para instalar o phpMyAdmin como parte da implementação.

Objetivos

  • Implemente o phpMyAdmin no ambiente padrão do App Engine.

Custos

Este tutorial usa componentes faturáveis da Cloud Platform, incluindo:

  • App Engine
  • Cloud SQL

Use a calculadora de preços para gerar uma estimativa de custo com base na sua utilização prevista.

Os novos utilizadores da Cloud Platform podem ser elegíveis para uma avaliação gratuita.

Antes de começar

  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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  6. Para inicializar a CLI gcloud, execute o seguinte 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. Se estiver a usar um fornecedor de identidade (IdP) externo, tem primeiro de iniciar sessão na CLI gcloud com a sua identidade federada.

  11. Para inicializar a CLI gcloud, execute o seguinte comando:

    gcloud init
  12. Crie uma instância do Cloud SQL de segunda geração.
  13. (Opcional) Implemente uma aplicação do App Engine que use a sua instância do Cloud SQL ou selecione uma aplicação existente.

    Por exemplo, crie e implemente o exemplo do livro de visitas. Embora possa implementar o phpMyAdmin por si só, é provável que queira usá-lo com uma aplicação do App Engine no seu cenário do mundo real.

  14. Transfira o código-fonte do phpMyAdmin

    Vai implementar o phpMyAdmin como um serviço da sua aplicação do App Engine, pelo que tem de transferir o código-fonte do phpMyAdmin. Siga estes passos:

    1. Num terminal do Cloud Shell, introduza o seguinte comando para transferir o código fonte para a versão 4.9.5 do phpMyAdmin:

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

      Para usar uma versão diferente do phpMyAdmin, use os links para as versões disponíveis na página de downloads do phpMyAdmin.

    2. Crie um novo diretório. Vai extrair os ficheiros para este diretório.

      mkdir phpMyAdmin
      
    3. Extraia os ficheiros do arquivo para o novo diretório.

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

    Prepare os ficheiros para a implementação

    A implementação do phpMyAdmin requer a criação de três ficheiros: app.yaml, que contém as informações de configuração do App Engine; config.inc.php, que contém as informações de configuração do phpMyAdmin; e php.ini, que contém a configuração específica da aplicação para PHP.

    Criar app.yaml

    O ficheiro de configuração do App Engine especifica a correspondência entre os caminhos de URL e os controladores de pedidos e os ficheiros estáticos. Também contém informações sobre o código da aplicação, como o ID da aplicação e o identificador da versão mais recente. Siga estes passos para criar o ficheiro:

    1. No diretório que criou, denominado phpMyAdmin, crie um novo ficheiro denominado app.yaml.

      cd phpMyAdmin
      touch app.yaml
      
    2. Usando o seu editor favorito, cole o seguinte texto em 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. Se estiver a implementar o phpMyAdmin como a primeira e única aplicação no App Engine, altere o valor de service de phpmyadmin para default.

      Normalmente, implementaria o phpMyAdmin como um serviço de uma aplicação existente e forneceria um nome para o serviço. No entanto, se ainda não tiver implementado uma aplicação, tem de usar o nome do serviço "default". Não há problema para os fins deste tutorial se estiver a experimentar o phpMyAdmin no App Engine.

      Este tutorial só funciona para o ambiente padrão do App Engine.

    4. Guarde o ficheiro.

    Criar config.inc.php

    Siga estes passos para criar o ficheiro de configuração do phpMyAdmin.

    1. Crie um novo ficheiro com o nome config.inc.php.

      touch config.inc.php
      
    2. Usando o seu editor favorito, cole o seguinte texto em 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. Abra o Google Cloud Shell e execute o seguinte para obter uma string aleatória para o seu blowfish:

      php -r "echo password_hash(uniqid(), PASSWORD_BCRYPT).PHP_EOL;"
      
    4. Cole o novo segredo no lugar de {{your_secret}} em config.inc.php.

    5. Aceda à página de instâncias do Cloud SQL na Google Cloud consola.

    6. Clique na instância do Cloud SQL para apresentar a respetiva página de detalhes da instância.

    7. Substitua o valor de {{your_connection_string}} (na variável $host) pela propriedade Nome da associação da instância.

    8. Guarde o ficheiro.

    Criar php.ini

    No respetivo código, o phpMyAdmin usa funções que estão desativadas por predefinição no App Engine. Siga estes passos para adicionar um ficheiro php.ini para que o App Engine ative novamente as funções:

    1. No diretório phpMyAdmin, crie o ficheiro.

      touch php.ini
      
    2. Edite o ficheiro e adicione a seguinte linha:

      google_app_engine.enable_functions = "php_uname, getmypid"
      
    3. Guarde o ficheiro.

    Implemente a aplicação

    Use os seguintes comandos para implementar a sua aplicação no App Engine.

    1. Verifique se existem atualizações para os componentes do gcloud.

      gcloud components update
      
    2. Implemente a aplicação executando o seguinte comando a partir do diretório phpMyAdmin onde se encontra o ficheiro app.yaml:

      gcloud app deploy
      

      Este comando implementa a app no serviço phpMyAdmin, conforme especificado no ficheiro app.yaml. A implementação num serviço separado ajuda a garantir que o phpMyAdmin é executado no mesmo centro de dados que a sua aplicação principal, o que melhora o desempenho. Para saber como implementar a sua app a partir da linha de comandos, consulte o artigo Implementar uma app PHP.

    Inicie sessão no phpMyAdmin

    Já pode iniciar sessão no phpMyAdmin.

    1. No navegador de Internet, introduza o URL do phpMyAdmin para abrir a página de boas-vindas, alterando o URL para usar o ID da sua app.

          https://phpmyadmin-dot-[YOUR_APP_ID].appspot.com
      
    2. Em Nome de utilizador, introduza root.

    3. Introduza a palavra-passe de administrador que indicou quando configurou a conta de administrador.

    4. Clique em Ir.

    À medida que desenvolve a sua app do App Engine, lembre-se de proteger com palavra-passe todas as contas de utilizador que criar para aceder a bases de dados no Cloud SQL.

    Resolver problemas

    O App Engine usa o proxy Auth do Cloud SQL para ligar a instâncias do Cloud SQL de segunda geração. Para mais informações sobre o funcionamento do proxy Auth do Cloud SQL, consulte o artigo Acerca do proxy Auth do Cloud SQL.

    Os registos do App Engine na Google Cloud consola podem fornecer informações sobre erros do App Engine.

    Limpar

    Depois de concluir o tutorial, pode limpar os recursos que criou para que deixem de usar a quota e incorrer em custos. As secções seguintes descrevem como eliminar ou desativar estes recursos.

    Elimine o projeto

    A forma mais fácil de eliminar a faturação é eliminar o projeto que criou para o tutorial.

    Para eliminar o projeto:

    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.

    Elimine instâncias

    Para eliminar uma instância do Cloud SQL:

    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.

    O que se segue?