在应用服务中创建 Ruby on Rails 应用

Linux 上的 Azure 应用服务使用 Linux 操作系统,提供高度可缩放的自修补 Web 托管服务。 本快速入门教程介绍了如何使用 Azure CLI 将 Ruby on Rails 应用部署到 Linux 上的应用服务。

备注

Ruby 开发堆栈目前仅支持 Ruby on Rails。

Hello-world

如果没有 Azure 订阅,可在开始前创建一个试用帐户

先决条件

下载示例

在终端窗口中,运行以下命令,将示例应用存储库克隆到本地计算机:

git clone https://github.com/Azure-Samples/ruby-docs-hello-world

在本地运行应用程序

在本地运行应用程序,以便你能了解将它部署到 Azure 时它的外观应该是什么样的。 打开终端窗口,转到 hello-world 目录,然后使用 rails server 命令启动该服务器。

第一步是安装必需的 gem。 示例中包含了 Gemfile,因此只需运行以下命令:

bundle install

安装 gem 后,我们将使用捆绑程序启动应用:

bundle exec rails server

使用 Web 浏览器导航到 http://localhost:3000 以在本地测试该应用。

已配置了 Hello World

配置部署用户

可以使用“部署用户” 将 FTP 和本地 Git 部署到 Azure Web 应用。 配置部署用户之后,可对所有 Azure 部署使用此用户。 帐户级部署用户名和密码不同于 Azure 订阅凭据。

若要配置部署用户,请在 Azure Cloud Shell 中运行 az webapp deployment user set 命令。 将 <username> 和 <password> 替换为部署用户名和密码。

  • 用户名必须在 Azure 中唯一,并且对于本地 Git 推送,不能包含“@”符号。
  • 密码必须至少为 8 个字符,且具有字母、数字和符号这三种元素中的两种。
az webapp deployment user set --user-name <username> --password <password>

JSON 输出会将该密码显示为 null。 如果收到 'Conflict'. Details: 409 错误,请更改用户名。 如果收到 'Bad Request'. Details: 400 错误,请使用更强的密码。

请记录你要用于部署 Web 应用的用户名和密码。

创建资源组

资源组是在其中部署和管理 Azure 资源(如 Web 应用、数据库和存储帐户)的逻辑容器。 例如,可以选择在使用完之后通过一个简单的步骤删除整个资源组。

在 Azure CLI 中,使用 az group create 命令创建资源组。 以下示例在“中国东部 2”位置创建名为 myResourceGroup 的资源组。 若要查看 基本 层中 Linux 上的应用服务支持的所有位置,请运行 az appservice list-locations --sku B1 --linux-workers-enabled 命令。

az group create --name myResourceGroup --location "China North"

通常在附近的区域中创建资源组和资源。

此命令完成后,JSON 输出会显示资源组属性。

创建 Azure 应用服务计划

在 Azure CLI 中,使用 az appservice plan create 命令创建一个应用服务计划。

以下示例在免费定价层中创建名为 myAppServicePlan 的应用服务计划:

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE

创建应用服务计划后,Azure CLI 会显示类似于以下示例的信息:

{ 
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "geoRegion": "China North",
  "hostingEnvironmentProfile": null,
  "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan",
  "kind": "app",
  "location": "China North",
  "maximumNumberOfWorkers": 1,
  "name": "myAppServicePlan",
  < JSON data removed for brevity. >
  "targetWorkerSizeId": 0,
  "type": "Microsoft.Web/serverfarms",
  "workerTierName": null
} 

创建 Web 应用

myAppServicePlan 应用服务计划中创建一个 Web 应用

在 Azure CLI 中,可以使用 az webapp create 命令。 在以下示例中,将 <app-name> 替换为全局唯一的应用名称(有效字符是 a-z0-9-)。 运行时设置为 RUBY|2.6.2。 若要查看所有受支持的运行时,请运行 az webapp list-runtimes --linux

# Bash
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "RUBY|2.6.2" --deployment-local-git
# PowerShell
az --% webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime "RUBY|2.6.2" --deployment-local-git

创建 Web 应用后,Azure CLI 会显示类似于以下示例的输出:

Local git is configured with url of 'https://<username>@<app-name>.scm.chinacloudsites.cn/<app-name>.git'
{
  "availabilityState": "Normal",
  "clientAffinityEnabled": true,
  "clientCertEnabled": false,
  "cloningInfo": null,
  "containerSize": 0,
  "dailyMemoryTimeQuota": 0,
  "defaultHostName": "<app-name>.chinacloudsites.cn",
  "deploymentLocalGitUrl": "https://<username>@<app-name>.scm.chinacloudsites.cn/<app-name>.git",
  "enabled": true,
  < JSON data removed for brevity. >
}

现在你已经创建了一个新的空 Web 应用并启用了 Git 部署。

备注

Git 远程的 URL 将显示在 deploymentLocalGitUrl 属性中,其格式为 https://<username>@<app-name>.scm.chinacloudsites.cn/<app-name>.git。 保存此 URL,后续将会用到。

浏览到该应用,查看使用内置映像新建的 Web 应用。 将 <应用名称> 替换为 Web 应用名称。

http://<app_name>.chinacloudsites.cn

新 Web 应用应该如下所示:

启动页面

部署应用程序

运行以下命令将本地应用程序部署到 Azure Web 应用:

git remote add azure <Git deployment URL from above>
git push azure main

确认远程部署操作报告了成功消息。 命令生成的输出类似于以下文本:

remote: Using turbolinks 5.2.0
remote: Using uglifier 4.1.20
remote: Using web-console 3.7.0
remote: Bundle complete! 18 Gemfile dependencies, 78 gems now installed.
remote: Bundled gems are installed into `/tmp/bundle`
remote: Zipping up bundle contents
remote: .......
remote: ~/site/repository
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
remote: App container will begin restart within 10 seconds.
To https://<app-name>.scm.chinacloudsites.cn/<app-name>.git
   a6e73a2..ae34be9  main -> main

部署完成后,请等待大约 10 秒,然后重启 Web 应用,再导航到 Web 应用并验证结果。

http://<app-name>.chinacloudsites.cn

更新的 Web 应用

备注

应用重启时,可能会在浏览器中看到 HTTP 状态代码 Error 503 Server unavailable 或在默认页面中看到 Hey, Ruby developers!。 可能需要花费几分钟时间才能完全重启应用。

清理部署

运行示例脚本后,可以使用以下命令删除资源组以及与其关联的所有资源。

az group delete --name myResourceGroup

后续步骤