在 App Service 中建立 Ruby on Rails 應用程式
Linux 上的 Azure App Service 使用 Linux 作業系統提供可高度擴充、自我修復的 Web 主機服務。
注意
Ruby 開發堆疊目前僅支援 Ruby on Rails。 如果您想要使用不同的平台 (例如 Sinatra),或是要使用不支援的 Ruby 版本,則必須在自訂容器中加以執行。
如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶。
如果您要在本機執行範例程式碼,您將需要:
如果您使用 Cloud Shell,則不需要安裝這些項目。
Azure Cloud Shell
Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。
要啟動 Azure Cloud Shell:
選項 | 範例/連結 |
---|---|
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 | ![]() |
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 | ![]() |
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 | ![]() |
若要使用 Azure Cloud Shell:
啟動 Cloud Shell。
選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。
透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。
選取 Enter 鍵執行程式碼或命令。
1 - 取得範例存放庫
本快速入門教學課程會說明如何使用 Cloud Shell 將 Ruby on Rails 應用程式部署至 Linux 上的 App Service。
在終端機視窗中,將範例應用程式複製到本機電腦,然後瀏覽至包含範例程式碼的目錄。
git clone https://github.com/Azure-Samples/ruby-docs-hello-world cd ruby-docs-hello-world
確定預設分支為
main
。git branch -m main
提示
App Service 不需變更分支名稱。 不過,由於許多存放庫都會將其預設分支變更為
main
,因此,此教學課程也會示範如何從main
部署存放庫。 如需詳細資訊,請參閱變更部署分支。
在本機執行應用程式
如果您想要在本機執行應用程式以查看其運作方式,請在本機複製存放庫並遵循下列步驟。
注意
這些步驟無法在 Azure Cloud Shell 中執行,因為該版本會與 Ruby 發生衝突。
安裝必要的 Gem。 範例中包含
Gemfile
,因此請直接執行下列命令:bundle install
安裝 Gem 之後,起始應用程式:
bundle exec rails server
使用網頁瀏覽器,瀏覽至
http://localhost:3000
,在本機測試應用程式。
2 - 將應用程式程式碼部署至 Azure
設定部署使用者
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 應用程式、資料庫和儲存體帳戶)。 例如,您可以選擇在稍候透過一個簡單的步驟刪除整個資源群組。
在 Cloud Shell 中,使用 az group create
命令來建立資源群組。 下列範例會在「西歐」位置建立名為 myResourceGroup 的資源群組。 若要查看基本層中 Linux 上之 App Service 的所有支援位置,請執行 az appservice list-locations --sku B1 --linux-workers-enabled
命令。
az group create --name myResourceGroup --location "West Europe"
您通常會在附近的區域中建立資源群組和資源。
當命令完成時,JSON 輸出會顯示資源群組屬性。
建立 Azure App Service 方案
在 Cloud Shell 中,使用 az appservice plan create
命令來建立 App Service 方案。
下列範例會在免費定價層中建立名為 myAppServicePlan
的 App Service 方案。
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux
建立 App Service 方案後,Azure CLI 會顯示類似下列範例的資訊:
{ "freeOfferExpirationTime": null, "geoRegion": "West Europe", "hostingEnvironmentProfile": null, "id": "/subscriptions/0000-0000/resourceGroups/myResourceGroup/providers/Microsoft.Web/serverfarms/myAppServicePlan", "kind": "linux", "location": "West Europe", "maximumNumberOfWorkers": 1, "name": "myAppServicePlan", < JSON data removed for brevity. > "targetWorkerSizeId": 0, "type": "Microsoft.Web/serverfarms", "workerTierName": null }
在
myAppServicePlan
App Service 方案中建立 Web 應用程式。在 Cloud Shell 中,您可以使用
az webapp create
命令。 在下列範,了中,使用全域唯一的應用程式名稱 (有效的字元為a-z
、0-9
和-
) 取代<app-name>
。 執行階段設定為RUBY|2.7
。 若要查看所有支援的執行階段,請執行az webapp list-runtimes --os linux
。az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'RUBY|2.7' --deployment-local-git
建立 Web 應用程式後,Azure CLI 會顯示類似下列範例的輸出:
Local git is configured with url of 'https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git' { "availabilityState": "Normal", "clientAffinityEnabled": true, "clientCertEnabled": false, "cloningInfo": null, "containerSize": 0, "dailyMemoryTimeQuota": 0, "defaultHostName": "<app-name>.azurewebsites.net", "deploymentLocalGitUrl": "https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git", "enabled": true, < JSON data removed for brevity. > }
您已建立空的新 Web 應用程式,其中已啟用 Git 部署。
注意
Git 遠端的 URL 會顯示在
deploymentLocalGitUrl
屬性中,其格式為https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git
。 儲存此 URL,稍後您會用到此資訊。由於您要部署
main
分支,因此必須將 App Service 應用程式的預設部署分支設定為main
(請參閱變更部署分支)。 在 Cloud Shell 中,使用az webapp config appsettings set
命令來設定DEPLOYMENT_BRANCH
應用程式設定。az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'
回到本機終端視窗,將 Azure 遠端新增至本機 Git 存放庫。 以應用程式建立的
deploymentLocalGitUrl
值取代 < deploymentLocalGitUrl-from-create-step >。git remote add azure <deploymentLocalGitUrl-from-create-step>
推送到 Azure 遠端,使用下列命令來部署您的應用程式。 當 Git 認證管理員提示輸入認證時,請務必輸入您在設定部署使用者中建立的認證,而不是您用來登入 Azure 入口網站的認證。
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.azurewebsites.net/<app-name>.git a6e73a2..ae34be9 main -> main
部署完成之後,請等候 10 秒來讓 Web 應用程式重新啟動,然後瀏覽至 Web 應用程式並確認結果。
http://<app-name>.azurewebsites.net
注意
當應用程式重新啟動時,您可以在瀏覽器或 Hey, Ruby developers!
預設頁面中觀察 HTTP 狀態碼 Error 503 Server unavailable
。 應用程式可能需要幾分鐘才能完全重新啟動。
Ruby 範例程式碼正在 Azure App Service Linux Web 應用程式中執行。
恭喜! 您已使用 Azure 入口網站部署第一個 Ruby 應用程式至 App Service。
3 - 更新和重新部署應用程式
從 Azure Cloud Shell,啟動文字編輯器,例如
nano
或vim
,以在app/controllers/application_controller.rb
中編輯檔案。nano app/controllers/application_controller.rb
編輯 ApplicationController 類別,使其顯示 「Hello world from Azure App Service on Linux!」 而不是 「Hello from Azure App Service on Linux!」。
class ApplicationController < ActionController::Base def hello render html: "Hello world from Azure App Service on Linux!" end end
儲存並關閉檔案。
使用下列命令確認 Git 變更:
git add . git commit -m "Hello world" git push azure main
注意
- 請確定您的
git push
陳述式包含azure main
,以便直接推送至 Azure Git 部署 URL。 - 當您確認變更時,您可能也需要設定
user.name
和user.email
Git 設定值。 您可以使用git config user.name "YOUR NAME"
和git config user.email "YOUR EMAIL"
執行該作業。
4. 管理新的 Azure 應用程式
請移至 Azure 入口網站,以管理您所建立的 Web 應用程式。 搜尋並選取 [應用程式服務] 。
選取您 Azure 應用程式的名稱。
您 Web 應用程式的 [概觀] 頁面會隨即顯示。 您可以在這裡執行基本管理工作,像是 [瀏覽] 、[停止] 、[重新啟動] 和 [刪除] 。