App Service on Linux で Ruby on Rails アプリを作成するCreate a Ruby on Rails App in App Service on Linux

Azure App Service on Linux は、高度にスケーラブルな自己適用型の Web ホスティング サービスを提供します。Azure App Service on Linux provides a highly scalable, self-patching web hosting service. このクイックスタートでは、Web App on Linux として Azure にデプロイできる基本的な Ruby on Rails アプリケーションの作成方法を示します。This quickstart shows you how to create a basic Ruby on Rails application that can then be deployed to Azure as a Web App on Linux.

注意

この時点で、Ruby 開発スタックは Ruby on Rails のみをサポートしています。The Ruby development stack only supports Ruby on Rails at this time. 別のプラットフォーム (Sinatra など) を使用するか、サポートされていない Ruby バージョンを使用する場合は、カスタム コンテナーで実行する必要があります。If you want to use a different platform, such as Sinatra, or if you want to use an unsupported Ruby version, you need to run it in a custom container.

Hello-world

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

サンプルのダウンロードDownload the sample

ターミナル ウィンドウで、次のコマンドを実行して、サンプル アプリのリポジトリをローカル コンピューターに複製します。In a terminal window, run the following command to clone the sample app repository to your local machine:

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

ローカルでアプリケーションを実行するRun the application locally

アプリケーションをローカルで実行すると、アプリケーションを Azure にデプロイするとどう表示されるかを把握できます。Run the application locally so that you see how it should look when you deploy it to Azure. ターミナル ウィンドウを開き、hello-world ディレクトリに変更し、rails server コマンドを使用してサーバーを起動します。Open a terminal window, change to the hello-world directory, and use the rails server command to start the server.

最初の手順では、必要な gem をインストールします。The first step is to install the required gems. Gemfile がサンプルに含まれているため、インストールする gem を指定する必要はありません。There's a Gemfile included in the sample so you don't need to specify the gems to install. これには bundler を使用します。We'll use bundler for this:

bundle install

gem がインストールされたら、bundler を使用してアプリを起動します。Once the gems are installed, we'll use bundler to start the app:

bundle exec rails server

Web ブラウザーで http://localhost:3000 に移動して、ローカルでアプリケーションをテストします。Using your web browser, navigate to http://localhost:3000 to test the app locally.

構成された Hello World

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell では、bashPowerShell のいずれかを使用して Azure サービスを操作できます。Cloud Shell lets you use either bash or PowerShell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を起動するには:To launch Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [試してみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. <a href="https://shell.azure.com" title="Azure Cloud Shell を起動する
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を起動します。Launch Cloud Shell.
  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.
  3. Windows と Linux では Ctrl + Shift + V キー、macOS では Cmd + Shift + V キーを使用して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. Enter キーを押して、コードを実行します。Press Enter to run the code.

デプロイ ユーザーを構成するConfigure a deployment user

Azure Cloud Shell で az webapp deployment user set コマンドを使用して、デプロイ資格情報を構成します。In the Azure Cloud Shell, configure deployment credentials with the az webapp deployment user set command. FTP とローカル Git のデプロイには、このデプロイ ユーザーを使用します。You use this deployment user for FTP and local Git deployment to a web app. ユーザー名とパスワードはアカウント レベルです。The username and password are account level. "Azure サブスクリプションの資格情報とは異なります。 "They're different from your Azure subscription credentials.

次の例では、 <username><password> を新しいユーザー名とパスワードで置き換えます (かっこも含めます)。In the following example, replace <username> and <password>, including the brackets, with a new username and password. ユーザー名は Azure 内で一意になっている必要があります。The username must be unique within Azure. パスワードは長さが 8 文字以上で、文字、数字、記号のうち 2 つを含む必要があります。The password must be at least eight characters long, with two of the following three elements: letters, numbers, and symbols.

az webapp deployment user set --user-name <username> --password <password>

パスワードが null と表示された状態で JSON 出力が返されます。You get a JSON output with the password shown as null. 'Conflict'. Details: 409 エラーが発生した場合は、ユーザー名を変更します。If you get a 'Conflict'. Details: 409 error, change the username. 'Bad Request'. Details: 400 エラーが発生した場合は、より強力なパスワードを使用します。If you get a 'Bad Request'. Details: 400 error, use a stronger password. デプロイ ユーザー名に、ローカルの Git プッシュを表す '@' 記号が含まれていてはなりません。The deployment username must not contain ‘@’ symbol for local Git pushes.

このデプロイ ユーザーの構成は、1 回だけ実行します。You configure this deployment user only once. すべての Azure デプロイでこれを使用できます。You can use it for all your Azure deployments.

注意

ユーザー名とパスワードをメモします。Record the username and password. 後で Web アプリをデプロイするときに必要になります。You need them to deploy the web app later.

リソース グループの作成Create a resource group

リソース グループとは、Web アプリ、データベース、ストレージ アカウントなどの Azure リソースのデプロイと管理に使用する論理コンテナーです。A resource group is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. たとえば、後から簡単な手順で一度にリソース グループ全体を削除することもできます。For example, you can choose to delete the entire resource group in one simple step later.

Cloud Shell で az group create コマンドを使用して、リソース グループを作成します。In the Cloud Shell, create a resource group with the az group create command. 次の例では、myResourceGroup という名前のリソース グループを "西ヨーロッパ" の場所に作成します。The following example creates a resource group named myResourceGroup in the West Europe location. Basic レベルの Linux 上の App Service がサポートされているすべての場所を表示するには、az appservice list-locations --sku B1 --linux-workers-enabled コマンドを実行します。To see all supported locations for App Service on Linux in Basic tier, run the az appservice list-locations --sku B1 --linux-workers-enabled command.

az group create --name myResourceGroup --location "West Europe"

通常は、現在地付近の地域にリソース グループおよびリソースを作成します。You generally create your resource group and the resources in a region near you.

コマンドが完了すると、リソース グループのプロパティが JSON 出力に表示されます。When the command finishes, a JSON output shows you the resource group properties.

Azure App Service プランの作成Create an Azure App Service plan

Cloud Shell で az appservice plan create コマンドを使用して、リソース グループに App Service プランを作成します。In the Cloud Shell, create an App Service plan in the resource group with the az appservice plan create command.

次の例では、Basic 価格レベル (--sku B1) の myAppServicePlan という名前の App Service プランを Linux コンテナー (--is-linux) に作成します。The following example creates an App Service plan named myAppServicePlan in the Basic pricing tier (--sku B1) and in a Linux container (--is-linux).

az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku B1 --is-linux

App Service プランが作成されると、Azure CLI によって、次の例のような情報が表示されます。When the App Service plan has been created, the Azure CLI shows information similar to the following example:

{ 
  "adminSiteName": null,
  "appServicePlanName": "myAppServicePlan",
  "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
} 

Web アプリを作成するCreate a web app

myAppServicePlan App Service プランで Web アプリを作成します。Create a web app in the myAppServicePlan App Service plan.

Cloud Shell で、az webapp create コマンドを使用することができます。In the Cloud Shell, you can use the az webapp create command. 次の例では、<app-name> をグローバルに一意のアプリ名に置き換えてください (有効な文字は a-z0-9-)。In the following example, replace <app-name> with a globally unique app name (valid characters are a-z, 0-9, and -). ランタイムは RUBY|2.3 に設定されています。The runtime is set to RUBY|2.3. サポートされているすべてのランタイムを確認するには、az webapp list-runtimes --linux を実行します。To see all supported runtimes, run 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 によって次の例のような出力が表示されます。When the web app has been created, the Azure CLI shows output similar to the following example:

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. >
}

Git デプロイが有効な、空の新しい Web アプリが作成されました。You’ve created an empty new web app, with git deployment enabled.

注意

Git リモートの URL は deploymentLocalGitUrl プロパティに https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git 形式で出力されます。The URL of the Git remote is shown in the deploymentLocalGitUrl property, with the format https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. この URL は後で必要になるので保存しておいてください。Save this URL as you need it later.

サイトを参照して、新たに作成された、組み込みイメージを使用する Web アプリを確認します。Browse to the site to see your newly created web app with built-in image. <app_name> は、Web アプリの名前に置き換えます。Replace <app name> with your web app name.

http://<app_name>.azurewebsites.net

新しい Web アプリは次のようになります。Here is what your new web app should look like:

スプラッシュ ページ

アプリケーションをデプロイするDeploy your application

次のコマンドを実行して、ローカル アプリケーションを Azure Web サイトにデプロイします。Run the following commands to deploy the local application to your Azure website:

git remote add azure <Git deployment URL from above>
git add -A
git commit -m "Initial deployment commit"
git push azure master

リモート デプロイ操作が正しく報告されていることを確認します。Confirm that the remote deployment operations report success. これらのコマンドは、次のテキストに似た出力を生成します。The commands produce output similar to the following text:

remote: Using sass-rails 5.0.6
remote: Updating files in vendor/cache
remote: Bundle gems are installed into ./vendor/bundle
remote: Updating files in vendor/cache
remote: ~site/repository
remote: Finished successfully.
remote: Running post deployment command(s)...
remote: Deployment successful.
To https://<your web app name>.scm.azurewebsites.net/<your web app name>.git
  579ccb....2ca5f31  master -> master
myuser@ubuntu1234:~workspace/<app name>$

デプロイが完了したら、次に示すように az webapp restart コマンドを使用して Web アプリを再起動してデプロイが有効になるようにします。Once the deployment has completed, restart your web app for the deployment to take effect by using the az webapp restart command, as shown here:

az webapp restart --name <app name> --resource-group myResourceGroup

サイトに移動して結果を確認します。Navigate to your site and verify the results.

http://<app name>.azurewebsites.net

更新後の Web アプリ

注意

アプリの再起動中にサイトを参照しようとすると、結果は HTTP 状態コード Error 503 Server unavailable になります。While the app is restarting, attempting to browse the site results in an HTTP status code Error 503 Server unavailable. 完全に再起動するまで、数分かかる場合があります。It may take a few minutes to fully restart.

デプロイのクリーンアップClean up deployment

サンプル スクリプトの実行後は、次のコマンドを使用してリソース グループとすべての関連リソースを削除することができます。After the sample script has been run, the following command can be used to remove the resource group and all resources associated with it.

az group delete --name myResourceGroup

次の手順Next steps