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


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

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

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

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

目標

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

料金

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

  • App Engine
  • Cloud SQL

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

始める前に

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. Google Cloud CLI をインストールします。
  5. gcloud CLI を初期化するには:

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

    プロジェクト セレクタに移動

  7. Google Cloud プロジェクトで課金が有効になっていることを確認します

  8. Google Cloud CLI をインストールします。
  9. gcloud CLI を初期化するには:

    gcloud init
  10. Cloud SQL 第 2 世代インスタンスを作成します。
  11. (省略可)Cloud SQL インスタンスを使用する App Engine アプリケーションをデプロイするか、または既存のアプリケーションを選択します。

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

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

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

  1. Cloud Shell ターミナルで次のコマンドを入力して、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. Google Cloud コンソールで 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 Auth Proxy を使用して、Cloud SQL 第 2 世代インスタンスに接続します。Cloud SQL Auth Proxy の動作の詳細については、Cloud SQL Auth Proxy についてをご覧ください。

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

クリーンアップ

チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。次のセクションで、リソースを削除または無効にする方法を説明します。

プロジェクトの削除

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

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

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

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

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

インスタンスを削除する

Cloud SQL インスタンスを削除するには:

  1. Google Cloud コンソールで、[インスタンス] ページに移動します。

    [インスタンス] に移動

  2. 削除する SQL インスタンスの名前をクリックします。
  3. インスタンスを削除するには、 [削除] をクリックして、指示に従います。

次のステップ