App Engine スタンダード環境の Cloud SQL で phpMyAdmin を使用する

App Engine スタンダード環境に phpMyAdmin をインストールする方法を確認します。ウェブで Cloud SQL を管理するには、phpMyAdmin を使用します。

このチュートリアルは次のような方の参考になります。

  • App Engine でアプリケーションを実行する。
  • Cloud SQL をデータベースとして使用する。
  • phpMyAdmin を MySQL に対するインターフェースとして使用する、またはウェブ インターフェースをデータベース管理に使いたい。

Google Compute Engine を使用している場合は、開発スタックのいずれか、またはクリック デプロイで入手できるプロダクトを使用することを検討してください。LAMPLEMP などの MySQL を含むスタック、または Drupal などのプロダクトをデプロイする際は、その過程で phpMyAdmin をインストールすることもできます。

目標

  • App Engine スタンダード環境に Symfony をデプロイする。

料金

このチュートリアルでは、以下を含む、Cloud Platform の有料コンポーネントを使用します。

  • App Engine
  • Cloud SQL

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。Cloud Platform を初めて使用する方は、無料トライアルをご利用いただけます。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    [プロジェクトの選択] ページに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Cloud SDK をインストールして初期化します。
  5. Cloud SQL 第 2 世代インスタンスを作成します。
  6. (省略可)Cloud SQL インスタンスを使用する App Engine アプリケーションをデプロイするか、または既存のアプリケーションを選択します。

    たとえば、ゲストブック サンプルを作成してデプロイします。 phpMyAdmin 単独でデプロイすることもできますが、実際のシナリオでは通常、App Engine アプリケーションとともに使用します。

phpMyAdmin のソースコードをダウンロードする

phpMyAdmin は App Engine アプリケーションのサービスとしてデプロイするので、phpMyAdmin のソースコードをダウンロードする必要があります。手順は次のとおりです。

  1. ターミナル ウィンドウで次のコマンドを入力して、phpMyAdmin バージョン 4.9.5 のソースコードをダウンロードします。

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

    別のバージョンの phpMyAdmin を使用するには、phpMyAdmin ダウンロード ページで使用可能なバージョンのリンクを使用してください。

  2. 新しいディレクトリを作成します。後でこのディレクトリにファイルを抽出します。

    mkdir phpMyAdmin
    
  3. 新しいディレクトリにアーカイブからファイルを抽出します。

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

ファイルのデプロイを準備する

phpMyAdmin をデプロイするには、次の 3 つのファイルを作成する必要があります。app.yaml には、App Engine の構成情報を格納します。config.inc.php には、phpMyAdmin の構成情報を格納します。php.ini には、PHP 用のアプリケーション固有の構成を格納します。

app.yaml を作成する

App Engine 構成ファイルでは、URL パスがリクエスト ハンドラと静的ファイルにどのように対応するのかを指定します。また、アプリケーション ID や最新バージョンの ID など、アプリケーション コードについての情報も記載します。次の手順に従いファイルを作成します。

  1. 作成した phpMyAdmin ディレクトリに、app.yaml という名前で新しいファイルを作成します。

    cd phpMyAdmin
    touch app.yaml
    
  2. 適当なエディタを使用して、次のテキストを 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. phpMyAdmin が App Engine にデプロイする最初で唯一のアプリケーションの場合は、service の値を phpmyadmin から default に変更します。

    通常は、phpMyAdmin を既存アプリケーションのサービスとしてデプロイし、サービスの名前を指定します。ただし、アプリケーションをまだデプロイしていない場合は、サービス名として「default」を使用する必要があります。App Engine で phpMyAdmin を試すことが目的の場合、このチュートリアルではこれで十分です。

    このチュートリアルは、App Engine スタンダード環境でのみ使用できます。

  4. ファイルを保存します。

config.inc.php を作成する

phpMyAdmin 構成ファイルを作成するには次のようにします。

  1. config.inc.php という名前の新しいファイルを作成します。

    touch config.inc.php
    
  2. 適当なエディタを使用して、次のテキストを 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. Google Cloud Shell を開き、次のコマンドを実行して Blowfish 暗号のランダムな文字列を取得します。

    php -r "echo password_hash(uniqid(), PASSWORD_BCRYPT).PHP_EOL;"
    
  4. 新しいシークレットを config.inc.php{{your_secret}} に貼り付けます。

  5. Cloud Console で [Cloud SQL インスタンス] ページに移動します。

  6. Cloud SQL インスタンスをクリックして、[インスタンスの詳細] ページを表示します。

  7. {{your_connection_string}} の値($host 変数内)を [インスタンス接続名] プロパティに置き換えます。

  8. ファイルを保存します。

php.ini を作成する

phpMyAdmin のコードには、App Engine ではデフォルトで無効になっている関数が使用されています。App Engine これらの関数を再び有効にするため、以下の手順に沿って php.ini ファイルを追加します。

  1. phpMyAdmin ディレクトリでファイルを作成します。

    touch php.ini
    
  2. ファイルを編集して次の行を追加します。

    google_app_engine.enable_functions = "php_uname, getmypid"
    
  3. ファイルを保存します。

アプリケーションをデプロイする

アプリケーションを App Engine にデプロイするには、次のコマンドを使用します。

  1. gcloud コンポーネントの更新を確認します。

    gcloud components update
    
  2. app.yaml ファイルが置かれている phpMyAdmin ディレクトリ内から次のコマンドを実行して、アプリケーションのデプロイを行います。

    gcloud app deploy
    

    このコマンドは app.yaml ファイルの指定どおりに、アプリを phpMyAdmin サービスにデプロイします。別のサービスとしてデプロイすると、phpMyAdmin はメイン アプリケーションと同じデータセンターで実行されるようになり、パフォーマンスが向上します。コマンドラインからのアプリのデプロイの詳細は、PHP アプリのデプロイをご覧ください。

phpMyAdmin にログインする

ここまでの手順により phpMyAdmin にログインできる状態になっています。

  1. ウェブブラウザで、phpMyAdmin の URL を入力してウェルカム ページを開きます。URL は、実際のアプリ ID で変更してください。

        https://phpmyadmin-dot-[YOUR_APP_ID].appspot.com
    
  2. [ユーザー名] に「root」と入力します。

  3. root アカウントの構成時に指定した root パスワードを入力します。

  4. [実行] をクリックします。

App Engine アプリをデプロイするときは、忘れずに、Cloud SQL のデータベースにアクセスするために作成するすべてのユーザー アカウントをパスワードで保護してください。

トラブルシューティング

App Engine では、Cloud SQL Proxy を介して、Cloud SQL 第 2 世代インスタンスへの接続が行われます。プロキシの仕組みの詳細については、Cloud SQL Proxy についてをご覧ください。

Google Cloud ConsoleApp Engine ログでは、App Engine のエラーに関する情報を確認できます。

クリーンアップ

チュートリアル(ドキュメント タイプのテンプレートのチュートリアル)が終了したら、Google Cloud で作成したリソースをクリーンアップして、以降割り当ての消費や課金が発生しないようにします。以降のセクションでは、リソースを削除または無効にする方法を説明します。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除するには:

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

インスタンスの削除

Cloud SQL インスタンスを削除するには、次のようにします。

  1. Cloud Console で、[SQL インスタンス] ページに移動します。

    [SQL インスタンス] ページに移動

  2. 削除する SQL インスタンスの名前をクリックします。
  3. [削除] をクリックしてインスタンスを削除します。

次のステップ