AzureでRailsアプリをデプロイしてみた
Azureのセットアップ
このページから「無料で始める」をクリックください。
Microsoftのアカウントがなければ作ってサインインしてください。
以下のようなページで項目を入力してください。
サブスクリプションを作成できたら、次のようなページに飛びます。
Azure Portalを続行するをクリックして手順に従いポータルを作成します。
https://portal.azure.com/#homeにアクセスしてください。
AzureサービスのApp ServiceをクリックしてApp Serviceの作成をクリック。
タブの基本、監視、タグの各項目に入力します。
※基本タブの項目「公開」はDockerイメージを選択し、オペレーティング・システムはLinuxを選択しました。
※ Dockerタブのオプションは単一コンテナー、イメージソースはクイックスタート、クイックスタートオプションのサンプルはNGINXを選択しました。
Railsアプリを複製
次にローカルで適当なディレクトリ内で以下のコマンドをそのまま入力してください
$ git clone https://github.com/Azure-Samples/ruby-docs-hello-world
$ cd ruby-docs-hello-world
$ bundle install
$ bundle exec rails s
localhost:3000にアクセスすると以下のように「Hello, world from Azure App Service on Linux」と表示されたらうまく導入できています。
Azure Cloud Shellによる初期設定
https://portal.azure.com/#homeにアクセスします。
赤枠で囲まれたアイコンをクリックすると「Azure Cloud Shellへようこそ」と表示されるので、Bashを選びました。
同じ画面で「ストレージがマウントされていません」と表示されるので、サブスクリプションで無料試用版を選択して「ストレージを作成」をクリックします。
するとサブスクリプションやリソースグループ、ストレージを特定して初期化し、Azure Cloud Shellのbashを使うことができるようになります。
Azure Cloud Shellのbashで以下のコマンドを実行します。
$ az webapp deployment user set --user-name <ユーザー名> --password <パスワード>
$ az webapp list-runtimes --linux
サポートされているすべてのランタイムを確認したら、Rubyバージョンを確認して以下のコマンドを実行します。
$ az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <アプリ名> --runtime "RUBY|確認したバージョン" --deployment-local-git
gitリポジトリのURLとJSONが出力されるので、メモしておいてください。
http://<アプリ名>.azurewebsites.netにアクセスすると以下のようなページが表示されます。
ローカルのgit cloneしたrailsアプリのディレクトリに移動して、ローカルのターミナルで以下のコマンドを実行してください。
$ git remote add azure <az webapp createした際に最初に表示されたgitレポジトリのURL>
$ git add -A
$ git commit -m "Initial deployment commit"
$ git push azure master
パスワードを聞かれるので、az webapp deploymentのときに設定したパスワードを入力してください。
プッシュはできるようになるまでは少し時間がかかるので注意してください。
次に以下のコマンドでWebアプリを再起動してデプロイが有効になるよう変更します。
$ az webapp restart --name <アプリ名> --resource-group <リソースグループ>
再起動が終わって、再度 "http://<アプリ名>.azurewebsites.net/"にアクセスできれば、問題なくデプロイできています。
これでAzureによるRailsアプリのデプロイは完了しました。
お疲れ様でした。
変更を加えてデプロイしてみましょう。
bundlerで管理できるようにするため、カレントディレクトリをアプリにして以下のコマンドを実行してください。
$ gem install bundler
$ bundle install
scaffoldを作成します。
$ bundle exec rails g scaffold user name:string email:string
DBを作成してmigrateします。
$ bundle exec rake db:create
$ bundle exec rake db:migrate
これで、localhost3000/usersを開くと表示されました。
これをAzureに反映させます。