このチュートリアルでは、Compute Engine を始める方法を説明します。このチュートリアルに沿って、Ruby ウェブアプリの Hello World を Compute Engine にデプロイします。App Engine を初めて使用する場合は、App Engine スタンダード環境をご覧ください。
目標
- Cloud Shell を使用して、Hello World サンプルアプリをダウンロードしてデプロイします。
- Hello World サンプルアプリを単一の Compute Engine インスタンスにデプロイします。
費用
このドキュメントでは、Google Cloud の次の課金対象のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを生成できます。
始める前に
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
-
Google Cloud Console の Cloud Shell で、アプリを開きます。
Cloud Shell を使用すると、ブラウザからコマンドラインで直接クラウド リソースにアクセスできます。
-
リポジトリのクローン作成に同意する場合は、[Confirm] をクリックしてサンプルコードをダウンロードし、アプリ ディレクトリに変更します。
-
Cloud Shell で、 gcloud CLI を構成して新しい Google Cloud プロジェクトを使用します。
# Configure gcloud for your project gcloud config set project YOUR_PROJECT_ID
Cloud Shell でアプリを実行する
Cloud Shell で、
bundle
を使用してアプリの依存関係をインストールします。bundle install
Sinatra アプリを実行します。
bundle exec ruby app.rb -p 8080
Cloud Shell で、[ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。新しいウィンドウが開き、実行中のアプリが表示されます。
ローカル ウェブサーバーを停止するには、Ctrl+C キーを押します。
単一インスタンスへのデプロイメント
このセクションでは、Compute Engine 上でアプリの単一インスタンスを実行する手順について説明します。
Cloud Shell から、アプリを実行する単一の Compute Engine インスタンス仮想マシン(VM)にアプリをデプロイできます。
起動スクリプトを使用してインスタンスを初期化する
インスタンスにコードのダウンロードと実行を指示するための手段が必要です。インスタンスの起動時または再起動時に常に実行される起動スクリプトをインスタンスに設定できます。
起動スクリプトは次のタスクを実行します。
Cloud Logging エージェントがインストールされます。このエージェントは syslog から自動的にログを収集します。
Ruby 2.6.5、Bundler、およびそのシステムの依存関係をインストールします。
Cloud Source Repositories 内にあるアプリのソースコードのクローンを作成し、依存関係をインストールします。
Nginx をインストールして設定します。
Supervisor をインストールして、アプリをデーモンとして実行します。
アプリを実行するように Supervisor を構成します。アプリが予期せずに終了した場合や、管理者や他のプロセスにより強制終了された場合、Supervisor によりアプリを確実に再起動できます。また、Supervisor によりアプリの
stdout
とstderr
が syslog に送信され、Logging エージェントによって収集されます。
Compute Engine インスタンスを作成して構成する
Compute Engine インスタンスを作成します。
Linux / macOS
Windows
gcloud compute instances create my-app-instance ^ --image-family=debian-9 ^ --image-project=debian-cloud ^ --machine-type=g1-small ^ --scopes userinfo-email,cloud-platform ^ --metadata-from-file startup-script=gce/startup-script.sh ^ --zone us-central1-a ^ --tags http-server
ゾーンを開発用のゾーン(
us-central1-a
など)に置き換えます。リージョンとゾーンの詳細については、地域とリージョンをご覧ください。これにより、新しいインスタンスの作成と、Google Cloud サービスへのアクセスの許可が行われ、起動スクリプトが実行されます。インスタンス名は
my-app-instance
です。インスタンス作成の進行状況を確認します。
gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
YOUR_ZONE
は、インスタンスをデプロイしたゾーンに置き換えます。起動スクリプトが完了すると、次のメッセージが表示されます。
startup-script: INFO Finished running startup scripts.
インスタンスへのトラフィックを許可するファイアウォール ルールを作成します。
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"
インスタンスの外部 IP アドレスを取得します。
gcloud compute instances list
アプリが実行されていることを確認するには、ブラウザで次の URL を入力します。
http://YOUR_INSTANCE_IP
YOUR_INSTANCE_IP
をインスタンスの外部 IP アドレスに置き換えます。
インスタンスの管理とモニタリング
インスタンスのモニタリングと管理には、Google Cloud コンソールを使用できます。
- In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
- Compute Engine リソースによって生成されたすべてのログを表示するには、[ログビューア] ページに移動します。[ログ エクスプローラ] に移動
Cloud Logging は、各種の一般的なサービス(
syslog
など)からログを収集するように自動的に構成されます。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトを削除する
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- 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