App Service で Ruby on Rails アプリを作成する

Azure App Service on Linux は、Linux オペレーティング システムを使用する、高度にスケーラブルな自己適用型の Web ホスティング サービスを提供します。

Note

この時点で、Ruby 開発スタックは Ruby on Rails のみをサポートしています。 別のプラットフォーム (Sinatra など) を使用する場合や、サポートされていない Ruby バージョンを使用する場合は、カスタム コンテナーで実行する必要があります。

Azure でサンプル アプリを実行して

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

サンプル コードをローカルで実行する場合は、次のものが必要です。

Cloud Shell を使用している場合、これらをインストールする必要はありません。

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには:

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Azure Cloud Shell の [使ってみる] の例を示すスクリーンショット。
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 新しいウィンドウで Cloud Shell を起動する方法を示すスクリーンショット。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Azure portal の [Cloud Shell] ボタンを示すスクリーンショット

Azure Cloud Shell を使用するには:

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

1 - サンプル リポジトリを取得する

このクイックスタート チュートリアルでは、Cloud Shell を使用して App Service on Linux に Ruby on Rails アプリをデプロイする方法を示します。

  1. ターミナル ウィンドウで、お使いのローカル コンピューターにサンプル アプリケーションを複製し、サンプル コードを含むディレクトリに移動します。

    git clone https://github.com/Azure-Samples/ruby-docs-hello-world
    cd ruby-docs-hello-world
    
  2. 既定のブランチが main であることを確認します。

    git branch -m main
    

    ヒント

    App Service では、ブランチ名の変更は必要ありません。 ただし、多くのリポジトリで既定のブランチが main に変更されているため、このチュートリアルでは、main からリポジトリをデプロイする方法も示します。 詳細については、「デプロイ ブランチを変更する」を参照してください。

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

アプリケーションをローカルで実行してその動作を確認する場合は、リポジトリをローカルに複製し、次の手順に従います。

Note

Ruby とのバージョン競合のため、Azure Cloud Shell ではこれらの手順を実行できません。

  1. 必要な gem をインストールします。 このサンプルには Gemfile が含まれているので、次のコマンドを実行するだけです。

    bundle install
    
  2. gem がインストールされたら、アプリを起動します。

    bundle exec rails server
    
  3. Web ブラウザーで http://localhost:3000 に移動して、ローカルでアプリケーションをテストします。

    構成された Hello World

2 - アプリケーション コードを Azure にデプロイする

デプロイ ユーザーを構成する

FTP およびローカルの Git では、"デプロイ ユーザー" を使用して Azure Web アプリにデプロイできます。 デプロイ ユーザーを構成すると、すべての Azure デプロイでこのユーザーを使用できます。 アカウントレベルのデプロイのユーザー名とパスワードは、Azure サブスクリプションの資格情報とは異なります。

デプロイ ユーザーを構成するには、Azure Cloud Shell で az webapp deployment user set コマンドを実行します。 <username> と <password> を、デプロイ ユーザーのユーザー名とパスワードで置き換えます。

  • ユーザー名は、Azure 内で一意である必要があり、ローカル Git プッシュの場合は "\@" シンボルを含めることはできません。
  • パスワードは長さが 8 文字以上で、文字、数字、記号のうち 2 つを含む必要があります。
az webapp deployment user set --user-name <username> --password <password>

JSON 出力には、パスワードが null として表示されます。 'Conflict'. Details: 409 エラーが発生した場合は、ユーザー名を変更します。 'Bad Request'. Details: 400 エラーが発生した場合は、より強力なパスワードを使用します。

Web アプリのデプロイに使用するユーザー名とパスワードを記録します。

リソース グループを作成する

リソース グループとは、Web アプリ、データベース、ストレージ アカウントなどの Azure リソースのデプロイと管理に使用する論理コンテナーです。 たとえば、後から簡単な手順で一度にリソース グループ全体を削除することもできます。

Cloud Shell で az group create コマンドを使用して、リソース グループを作成します。 次の例では、myResourceGroup という名前のリソース グループを "西ヨーロッパ" の場所に作成します。 Basic レベルの 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 価格レベルの 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
} 
  1. App Service プランで Web アプリを作成します。

    Cloud Shell で、az webapp create コマンドを使用することができます。 次の例では、<app-name> をグローバルに一意のアプリ名に置き換えてください (有効な文字は a-z0-9-)。 ランタイムは 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. >
     }
     

    Git デプロイが有効な、空の新しい Web アプリが作成されました。

    Note

    Git リモートの URL は deploymentLocalGitUrl プロパティに https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git 形式で出力されます。 この URL は後で必要になるので保存しておいてください。

  2. main ブランチをデプロイするため、App Service アプリの既定のデプロイ ブランチを main に設定する必要があります (「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'
    
  3. ローカル ターミナル ウィンドウで、ローカル Git リポジトリに Azure リモートを追加します。 <deploymentLocalGitUrl-from-create-step> を、アプリ作成からの deploymentLocalGitUrl 値に置き換えます。

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  4. アプリをデプロイするために、次のコマンドで Azure リモートにプッシュします。 Git Credential Manager によって資格情報の入力を求めるメッセージが表示されたら、Azure portal へのサインインに使用する資格情報ではなく、「デプロイ ユーザーを構成する」で作成した資格情報を入力してください。

    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
    
  5. デプロイが完了したら、Web アプリが再起動するまで約 10 秒待ってから、Web アプリに移動して結果を確認します。

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

Note

アプリの再起動中に、ブラウザーまたは Error 503 Server unavailable の既定のページで、HTTP 状態コード Hey, Ruby developers! が表示される場合があります。 アプリが完全に再起動するまで、数分かかる場合があります。

Ruby のサンプル コードは、Azure App Service Linux Web アプリで実行されています。

Azure でサンプル アプリを実行して

おめでとうございます。 Azure portal を使用して App Service に初めての Ruby アプリをデプロイしました。

3 - アプリを更新して再デプロイする

  1. Azure Cloud Shell から、nanovim などのテキスト エディターを起動し、app/controllers/application_controller.rb のファイルを編集します。

    nano app/controllers/application_controller.rb
    
  2. ApplicationController クラスを編集して、"Hello from Azure App Service on Linux!" の代わりに "Hello world from Azure App Service on Linux!" と表示されるようにします。

    class ApplicationController < ActionController::Base
        def hello
            render html: "Hello world from Azure App Service on Linux!"
        end
    end
    
  3. ファイルを保存して閉じます。

  4. 次のコマンドを使用して Git に変更をコミットします。

    git add .
    git commit -m "Hello world"
    git push azure main
    

Note

  • Azure Git デプロイ URL に直接プッシュするように、git push ステートメントに azure main が含まれていることを確認します。
  • 変更をコミットするときに、Git 構成値 user.name および user.email を設定することが必要な場合もあります。 これは git config user.name "YOUR NAME"git config user.email "YOUR EMAIL" を使用して実行できます。

4 - 新しい Azure アプリを管理する

  1. Azure Portal に移動し、作成した Web アプリを管理します。 [App Services] を検索して選択します。

    Azure portal の検索ボックスに「app services」と入力したスクリーンショット。結果部分で、[サービス] の下の [App Services] オプションが強調表示されている。

  2. 使用する Azure アプリの名前を選択します。

    Azure における App Services の一覧のスクリーンショット。デモ アプリの名前が強調表示されている。

Web アプリの [概要] ページが表示されます。 ここでは、参照停止再開削除のような基本的な管理タスクを行うことができます。

Azure portal における App Service の概要ページのスクリーンショット。アクション バーで、[参照]、[停止]、[スワップ] (無効)、[再開]、[削除] のボタン グループが強調表示されている。

5 - リソースをクリーンアップする

デプロイのクリーンアップ

サンプル スクリプトの実行後は、次のコマンドを使用してリソース グループとすべての関連リソースを削除することができます。

az group delete --name myResourceGroup

次のステップ