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

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

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

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

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

목표

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

비용

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

  • App Engine
  • Cloud SQL

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

시작하기 전에

  1. Google 계정에 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Google Cloud Platform 프로젝트를 선택하거나 만듭니다.

    리소스 관리 페이지로 이동

  3. Google Cloud Platform 프로젝트에 결제가 사용 설정되어 있는지 확인하세요.

    결제 사용 설정 방법 알아보기

  4. Cloud SDK 설치 및 초기화.
  5. Cloud SQL 2세대 인스턴스를 만듭니다.
  6. (선택사항) Cloud SQL 인스턴스를 사용하는 App Engine 애플리케이션을 배포하거나 기존 애플리케이션을 선택합니다.

    예를 들어 방명록 샘플을 만들고 배포합니다. phpMyAdmin 자체를 배포할 수 있지만 실제 시나리오에서는 이를 App Engine 애플리케이션과 함께 사용하는 것이 좋습니다.

phpMyAdmin 소스 코드 다운로드

phpMyAdmin는 App Engine 애플리케이션의 서비스로 배포되므로 phpMyAdmin의 소스 코드를 다운로드해야 합니다. 방법은 다음과 같습니다.

  1. 터미널 창에서 다음 명령어를 입력하여 phpMyAdmin 버전 4.6.3의 소스 코드를 다운로드합니다.

    wget https://files.phpmyadmin.net/phpMyAdmin/4.6.3/phpMyAdmin-4.6.3-all-languages.tar.bz2
    

    다른 버전의 phpMyAdmin을 사용하려면 phpMyAdmin 다운로드 페이지에서 사용 가능한 버전의 링크를 이용합니다.

  2. 새로운 디렉토리를 만듭니다. 해당 디렉토리로 파일이 추출됩니다.

    mkdir phpMyAdmin
    
  3. 자료실에서 파일을 추출하여 새로운 디렉토리로 보냅니다.

    tar -xvf phpMyAdmin-4.6.3-all-languages.tar.bz2 -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. 웹 브라우저에서 blowfish 비밀번호 생성기를 엽니다.

  4. 페이지에서 생성된 고유한 blowfish 비밀번호를 복사합니다.
    예제의 보안 비밀이 아닌 생성된 보안 비밀을 복사해야 합니다.

  5. config.inc.php{{your_secret}}에 새 보안 비밀을 붙여넣습니다.

  6. GCP Console에서 Cloud SQL 인스턴스 페이지로 이동합니다.

  7. Cloud SQL 인스턴스를 클릭하여 인스턴스 세부정보 페이지를 표시합니다.

  8. $host 변수에 있는 {{your_connection_string}}의 값을 인스턴스 연결 이름 속성으로 바꿉니다.

  9. 파일을 저장합니다.

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에 로그인할 수 있습니다. 배포한 config.inc.php 파일을 통해 비밀번호 없이 로그인할 수 있습니다. 지금은 다음 섹션에서 비밀번호를 설정하기 전까지 이와 같은 방식으로 로그인합니다

  1. 웹 브라우저에서 애플리케이션 ID를 사용하여 변경된 URL을 입력하여 phpMyAdmin 시작 페이지를 엽니다.

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

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

  4. 이동을 클릭합니다.

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

문제해결

App Engine은 Cloud SQL 2세대 인스턴스에 연결할 때 Cloud SQL 프록시를 사용합니다. 프록시 작동 원리에 대한 자세한 내용은 Cloud SQL 프록시 정보를 참조하세요.

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

삭제

이 가이드 문서 유형의 템플릿 가이드를 완료했으면 이후에 요금이 청구되지 않도록 GCP에서 만든 리소스를 삭제할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

프로젝트 삭제

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

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. GCP Console에서 프로젝트 페이지로 이동합니다.

    프로젝트 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 다음 종료를 클릭하여 프로젝트를 삭제합니다.

인스턴스 삭제

Cloud SQL 인스턴스를 삭제하는 방법은 다음과 같습니다.

  1. GCP Console에서 SQL 인스턴스 페이지로 이동합니다.

    SQL 인스턴스 페이지로 이동

  2. 다음의 이름을 클릭합니다. 삭제할 SQL 인스턴스
  3. 페이지 상단의 삭제 버튼을 클릭하여 인스턴스를 삭제합니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

MySQL용 Cloud SQL