本教程介绍如何开始使用 Compute Engine。 按照本教程的说明将 Hello World Ruby Web 应用部署到 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,您可以直接在浏览器中通过命令行访问云端资源。在浏览器中打开 Cloud Shell,然后点击继续下载示例代码并切换到应用目录。
-
在 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 中,点击 Web 预览,然后选择在端口 8080 上预览。此时系统会打开一个新窗口,其中显示正在运行的应用。
要停止本地网络服务器,请按 Control+C。
部署到单个实例
此部分逐步介绍了如何在 Compute Engine 上运行应用的单个实例。
您可以通过 Cloud Shell 将应用部署到单个 Compute Engine 实例虚拟机 (VM),以运行您的应用。
使用启动脚本初始化实例
您需要一种方法来指示实例下载并运行这些代码。 实例可能拥有对其执行启动或重启操作时会运行的启动脚本。
启动脚本执行以下任务:
安装 Cloud Logging 代理。该代理会自动从系统日志收集日志。
安装 Ruby 2.6.5、Bundler 及其系统依赖项。
从 Cloud Source Repositories 代码库克隆应用的源代码并安装依赖项。
安装并配置 Nginx。
安装 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
要查看应用的运行情况,请在浏览器中输入以下网址:
http://YOUR_INSTANCE_IP
将
YOUR_INSTANCE_IP
替换为实例的外部 IP 地址。
管理和监控实例
您可以使用 Cloud Console 来监控和管理您的实例。
- 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