Compute Engine での PHP のスタートガイド


このチュートリアルでは、Compute Engine を始める方法を説明します。チュートリアルに沿って、PHP ウェブアプリの Hello World を Compute Engine にデプロイします。App Engine をはじめて使用する場合は、App Engine スタンダード環境をご覧ください。

目標

  • Cloud Shell を使用して、Hello World サンプルアプリをダウンロードしてデプロイします。
  • Hello World サンプルアプリを単一の Compute Engine インスタンスにデプロイします。

料金

このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。 新しい Google Cloud ユーザーは無料トライアルをご利用いただける場合があります。

準備

  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. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Compute Engine API.

    Enable the API

  8. Google Cloud Console から、Cloud Shell でアプリを開きます。

    Cloud Shell に移動

    Cloud Shell を使用すると、ブラウザからコマンドラインで直接クラウド リソースにアクセスできます。

  9. リポジトリのクローン作成に同意する場合は、[Confirm] をクリックしてサンプルコードをダウンロードし、アプリ ディレクトリに変更します。

  10. Cloud Shell で、gcloud CLI を構成して新しい Google Cloud プロジェクトを使用します。
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID

Cloud Shell でアプリを実行する

  1. composer を使用してアプリの依存関係をインストールします。

    composer install
    
  2. PHP 組み込みウェブサーバーを実行します。

    php -S localhost:8080
    
  3. Cloud Shell で、[ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。新しいウィンドウが開き、実行中のアプリが表示されます。

  4. ローカル ウェブサーバーを停止するには、Ctrl+C キーを押します。

単一インスタンスへのデプロイメント

このセクションでは、Compute Engine 上でアプリの単一インスタンスを実行する手順を順を追って説明します。

単一インスタンスのデプロイメント。

Cloud Shell から、アプリを実行する単一の Compute Engine インスタンス仮想マシン(VM)にアプリをデプロイできます。

起動スクリプトを使用してインスタンスを初期化する

インスタンスにコードのダウンロードと実行を指示するための手段が必要です。インスタンスの起動時または再起動時に常に実行される起動スクリプトをインスタンスに設定できます。

set -e
export HOME=/root

# Install PHP and dependencies from apt
apt-get update
apt-get install -y git nginx php7.2 php7.2-fpm php7.2-mysql php7.2-dev \
    php7.2-mbstring php7.2-zip php-pear pkg-config

# Install Composer
curl -sS https://getcomposer.org/installer | \
    /usr/bin/php -- \
    --install-dir=/usr/local/bin \
    --filename=composer

# Get the application source code
git clone https://github.com/googlecloudplatform/getting-started-php /opt/src
ln -s /opt/src/gce /opt/app

# Run Composer
composer install -d /opt/app --no-ansi --no-progress --no-dev

# Disable the default NGINX configuration
rm /etc/nginx/sites-enabled/default

# Enable our NGINX configuration
cp /opt/app/config/nginx/helloworld.conf /etc/nginx/sites-available/helloworld.conf
ln -s /etc/nginx/sites-available/helloworld.conf /etc/nginx/sites-enabled/helloworld.conf
cp /opt/app/config/nginx/fastcgi_params /etc/nginx/fastcgi_params

# Start NGINX
systemctl restart nginx.service

# Install Fluentd
curl -s "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" | bash

# Enable our Fluentd configuration
cp /opt/app/config/fluentd/helloworld.conf /etc/google-fluentd/config.d/helloworld.conf

# Start Fluentd
service google-fluentd restart &

起動スクリプトは次のタスクを実行します。

  • PHP 7 と PHP 7 FPM をインストールします。

  • NGINX をインストールして構成します。

  • Composer をダウンロードして、アプリコード用に実行します。

  • Cloud Logging エージェントをインストールして、アプリログをモニタリングするように構成します。つまり、このチュートリアルの前のステップで構成したロギングは、App Engine を使用している場合とまったく同じようにアップロードされます。

Compute Engine インスタンスを作成して構成する

  1. Compute Engine インスタンスを作成します。

    MY_INSTANCE_NAME='my-app-instance'
    ZONE=us-central1-f
    
    gcloud compute instances create $MY_INSTANCE_NAME \
        --image-family=ubuntu-1804-lts \
        --image-project=ubuntu-os-cloud \
        --machine-type=g1-small \
        --scopes userinfo-email,cloud-platform \
        --metadata-from-file startup-script=scripts/startup-script.sh \
        --zone $ZONE \
        --tags http-server

    ゾーンを開発用のゾーン(us-central1-a など)に置き換えます。リージョンとゾーンの詳細については、地域とリージョンをご覧ください。

    これにより、新しいインスタンスの作成と、Google Cloud サービスへのアクセスの許可が行われ、起動スクリプトが実行されます。インスタンス名は my-app-instance です。

  2. インスタンス作成の進行状況を確認します。

    gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
    

    YOUR_ZONE をインスタンスをデプロイしたゾーンに置き換えます。

    起動スクリプトが完了すると、次のメッセージが表示されます。

    startup-script: INFO Finished running startup scripts.
    
  3. インスタンスへのトラフィックを許可するファイアウォール ルールを作成します。

    gcloud compute firewall-rules create default-allow-http-80 \
        --allow tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --target-tags http-server \
        --description "Allow port 80 access to http-server"
    

  4. インスタンスの外部 IP アドレスを取得します。

    gcloud compute instances list
    
  5. アプリが実行されていることを確認するには、ブラウザで次の URL を入力します。

    http://YOUR_INSTANCE_IP
    

    YOUR_INSTANCE_IP をインスタンスの外部 IP アドレスに置き換えます。

インスタンスの管理とモニタリング

インスタンスのモニタリングと管理には、Google Cloud コンソールを使用できます。

  1. In the Google Cloud console, go to the VM instances page.

    Go to VM instances

  2. In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
  3. Compute Engine リソースによって生成されたすべてのログを表示するには、[ログビューア] ページに移動します。[ログ エクスプローラ] に移動

    Cloud Logging は、各種の一般的なサービス(syslog など)からログを収集するように自動的に構成されます。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトの削除

  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.

個々のリソースの削除

gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all
gcloud compute firewall-rules delete default-allow-http-80

次のステップ