Como usar 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. É possível usar o phpMyAdmin para administrar o Cloud SQL na Web.

Este tutorial pode ser útil se você:

  • executar aplicativos no App Engine;
  • usar o Cloud SQL como banco de dados;
  • usar o phpMyAdmin como interface para o MySQL ou uma interface da Web para administrar o banco de dados.

Para usar o Google Compute Engine, utilize uma das pilhas de desenvolvimento ou os produtos disponíveis em "Clique para implantar". Implantações de pilhas que incluem o MySQL, como LAMP e LEMP, ou produtos, como o Drupal, oferecem a opção de instalar o phpMyAdmin como parte da implantação.

Objetivos

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

Custos

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

  • App Engine
  • Cloud SQL

Use a Calculadora de preços para gerar uma estimativa de custo com base no uso previsto. Usuários novos do Cloud Platform podem ter direito a uma avaliação gratuita.

Antes de começar

  1. Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

  4. Instale e inicialize o SDK do Cloud..
  5. Crie uma instância do Cloud SQL de segunda geração.
  6. Se preferir, implante um aplicativo do App Engine que use a instância do Cloud SQL ou selecione um já existente.

    Por exemplo, crie e implante a amostra do guestbook. Embora você possa implantar somente o phpMyAdmin, use-o com um aplicativo do App Engine em um cenário real.

Download do código-fonte do phpMyAdmin

Para implantar o phpMyAdmin como serviço de aplicativo do App Engine, faça o download do código-fonte do phpMyAdmin. Siga estas etapas:

  1. Em uma janela de terminal, digite o seguinte comando para fazer o download do código-fonte do phpMyAdmin versão 4.9.5:

    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 das versões disponíveis na página de downloads do phpMyAdmin.

  2. Crie um novo diretório para extração dos arquivos.

    mkdir phpMyAdmin
    
  3. Extraia os arquivos nesse local.

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

Preparar os arquivos para implantação

Implantar o phpMyAdmin requer a criação de três arquivos: app.yaml, com informações de configuração do App Engine, config.inc.php, com informações de configuração do phpMyAdmin, e php.ini, com configurações específicas do aplicativo para PHP.

Criar app.yaml

O arquivo de configuração do App Engine especifica como os caminhos do URL correspondem a gerenciadores de solicitações e arquivos estáticos. São fornecidas também informações sobre o código do aplicativo, como o ID do aplicativo e o identificador da versão mais recente. Siga estas etapas para criar o arquivo:

  1. No diretório que você criou, phpMyAdmin, crie um novo arquivo chamado app.yaml.

    cd phpMyAdmin
    touch app.yaml
    
  2. No editor da sua preferência, cole o texto a seguir no 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. Para que o phpMyAdmin seja implantado como primeiro e único aplicativo no App Engine, mude o valor do service de phpmyadmin para default.

    O padrão seria implantá-lo como serviço de um aplicativo existente e nomeá-lo. No entanto, se você nunca implantou um aplicativo, é necessário usar o nome de serviço "default". Siga esse nome sem se preocupar se você estiver testando o phpMyAdmin no App Engine.

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

  4. Salve o arquivo.

Criar config.inc.php

Siga estas etapas para criar o arquivo de configuração phpMyAdmin.

  1. Crie um novo arquivo denominado config.inc.php.

    touch config.inc.php
    
  2. No editor da sua preferência, cole o texto a seguir no 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 comando para obter uma string aleatória para o blowfish:

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

  5. Acesse a página Instâncias do Cloud SQL no Console do Cloud.

  6. Clique na instância para exibir a página de detalhes dela.

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

  8. Salve o arquivo.

Criar php.ini

Nesse código, o phpMyAdmin usa funções desativadas por padrão no App Engine. Siga estas etapas para adicionar um arquivo php.ini. O App Engine reativará as funções:

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

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

    google_app_engine.enable_functions = "php_uname, getmypid"
    
  3. Salve o arquivo.

Implantar o aplicativo

Use os seguintes comandos para implantar o aplicativo no App Engine.

  1. Verifique se há atualizações para os componentes da gcloud.

    gcloud components update
    
  2. Implante o aplicativo executando o seguinte comando no diretório phpMyAdmin, onde está localizado o arquivo app.yaml:

    gcloud app deploy
    

    Esse comando implanta o app no serviço phpMyAdmin, conforme especificado no arquivo app.yaml. A implantação em um serviço separado faz com que o phpMyAdmin seja executado no mesmo data center que o aplicativo principal, o que melhora o desempenho. Para saber mais sobre a implantação do app a partir da linha de comando, consulte Como implantar um app PHP.

Fazer login no phpMyAdmin

Agora, faça login no phpMyAdmin.

  1. No navegador da Web, digite o URL para que o phpMyAdmin abra a página de boas-vindas, alterando o URL para usar o ID do app.

        https://phpmyadmin-dot-[YOUR_APP_ID].appspot.com
    
  2. Em Nome de usuário, digite raiz.

  3. Digite a senha raiz fornecida ao configurar a conta raiz.

  4. Clique em Ir.

Ao desenvolver o aplicativo do App Engine, lembre-se de proteger por senha todas as contas de usuário criadas para acessar bancos de dados no Cloud SQL.

Solução de problemas

O App Engine usa o proxy do Cloud SQL Auth para se conectar às instâncias do Cloud SQL Second Generation. Para mais informações sobre como o proxy de autenticação do Cloud SQL funciona, consulte Sobre o proxy do Cloud SQL Auth.

Nos registros do App Engine no Console do Google Cloud, há informações sobre erros no App Engine.

Como fazer a limpeza

Depois de concluir o tutorial sobre modelo de tipo de documento, é possível limpar os recursos criados no Google Cloud para que eles não ocupem a cota e você não seja cobrado por eles no futuro. Veja como excluir e desativar esses recursos nas seções a seguir.

Como excluir o projeto

O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.

Para excluir o projeto:

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

Como excluir instâncias

Para excluir uma instância do Cloud SQL:

  1. No Console do Cloud, acesse a página Instâncias.

    Acesse "Instâncias"

  2. Clique no nome da a instância de SQL que você quer excluir.
  3. Para excluir a instância, clique em Excluir e siga as instruções.

A seguir