App Engine 표준 환경에서 Cloud SQL과 함께 phpMyAdmin 사용


App Engine 표준 환경에 phpMyAdmin을 설치하는 방법을 알아봅니다. 사용자는 phpMyAdmin을 사용하여 웹을 통해 Cloud SQL을 관리할 수 있습니다.

다음과 같은 경우 이 가이드가 유용할 수 있습니다.

  • App Engine에서 애플리케이션을 실행하는 경우
  • Cloud SQL을 데이터베이스로 사용하는 경우
  • phpMyAdmin을 MySQL 인터페이스로 사용하거나 데이터베이스 관리에 웹 인터페이스를 선호하는 경우

Compute Engine을 사용하는 경우 클릭하여 배포 기능을 통해 사용할 수 있는 개발 스택이나 제품 중 하나를 사용하는 것이 좋습니다. MySQL이 포함된 LAMPLEMP와 같은 스택이나 Drupal과 같은 제품을 배포하면 배포 과정에서 phpMyAdmin을 설치할 수 있는 옵션이 제공됩니다.

목표

  • App Engine 표준 환경에 phpMyAdmin 배포하기

비용

이 가이드에서는 비용이 청구될 수 있는 다음과 같은 Cloud Platform 구성요소를 사용합니다.

  • App Engine
  • Cloud SQL

가격 계산기를 사용하여 예상 사용량을 토대로 예상 비용을 산출합니다. Cloud Platform 신규 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

  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. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

  7. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    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을 배포하려면 App Engine의 구성 정보가 포함된 app.yaml 파일, phpMyAdmin의 구성 정보가 포함된 config.inc.php 파일, PHP의 애플리케이션 관련 구성이 포함된 php.ini 파일 등 세 가지 파일을 만들어야 합니다.

app.yaml 만들기

App Engine 구성 파일은 URL 경로가 요청 핸들러와 정적 파일에 대응하는 방식을 지정합니다. 또한 애플리케이션 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. App Engine에서 첫 번째이자 유일한 애플리케이션으로 phpMyAdmin을 배포하는 경우 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. $host 변수 내의 {{your_connection_string}} 값을 인스턴스 연결 이름 속성으로 바꿉니다.

  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. 웹브라우저에서 애플리케이션 ID를 사용하여 변경된 URL을 입력하여 phpMyAdmin 시작 페이지를 엽니다.

        https://phpmyadmin-dot-[YOUR_APP_ID].appspot.com
    
  2. 사용자 이름root를 입력합니다.

  3. 루트 계정을 구성할 때 설정한 루트 비밀번호를 입력합니다.

  4. 이동을 클릭합니다.

App Engine 애플리케이션을 개발할 때 Cloud SQL의 데이터베이스에 액세스하기 위해 만든 모든 사용자 계정을 비밀번호로 보호해야 합니다.

문제 해결

App Engine은 Cloud SQL 인증 프록시를 사용하여 Cloud SQL 2세대 인스턴스에 연결합니다. Cloud SQL 인증 프록시의 작동 방식에 대한 자세한 내용은 Cloud SQL 인증 프록시 정보를 참조하세요.

Google Cloud ConsoleApp Engine 로그에서 App Engine 오류에 대한 정보를 확인할 수 있습니다.

삭제

튜토리얼을 완료한 후에는 만든 리소스를 삭제하여 할당량 사용을 중지하고 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하려면 다음 안내를 따르세요.

  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.

인스턴스 삭제

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.

다음 단계