Crear una aplicación de Ruby on Rails en App Service en LinuxCreate a Ruby on Rails App in App Service on Linux

App Service en Linux proporciona un servicio de hospedaje web muy escalable y con aplicación automática de revisiones utilizando el sistema operativo Linux.App Service on Linux provides a highly scalable, self-patching web hosting service using the Linux operating system. En este tutorial de inicio rápido se explica cómo implementar una aplicación de Ruby on Rails en Azure App Service en Linux mediante Cloud Shell.This quickstart tutorial shows how to deploy a Ruby on Rails app to Azure App Service on Linux using the Cloud Shell.

Nota

La pila de desarrollo de Ruby solo admite Ruby on Rails de momento.The Ruby development stack only supports Ruby on Rails at this time. Si quiere usar otra plataforma, como Sinatra, o una versión de Ruby no admitida, debe ejecutarla en un contenedor personalizado.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

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

PrerrequisitosPrerequisites

Descarga del ejemploDownload the sample

En una ventana de terminal, ejecute el siguiente comando para clonar el repositorio de la aplicación de ejemplo en el equipo local: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

Ejecución de la aplicación de forma localRun the application locally

Ejecute la aplicación localmente para ver cómo debería ser si se implementara en Azure.Run the application locally so that you see how it should look when you deploy it to Azure. Abra una ventana de terminal, cambie al directorio hello-world y use el comando rails server para iniciar el servidor.Open a terminal window, change to the hello-world directory, and use the rails server command to start the server.

El primer paso es instalar los archivos gem necesarios.The first step is to install the required gems. Hay un elemento Gemfile incluido en el ejemplo, por lo que solo tiene que ejecutar el siguiente comando:There's a Gemfile included in the sample, so just run the following command:

bundle install

Una vez que se han instalado los archivos gem, se usa un software que instala varios programas para iniciar la aplicación:Once the gems are installed, we'll use bundler to start the app:

bundle exec rails server

Mediante el explorador web, vaya a http://localhost:3000 para probar la aplicación localmente.Using your web browser, navigate to http://localhost:3000 to test the app locally.

Hello World configurada

Uso de Azure Cloud ShellUse Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Para iniciar Azure Cloud Shell:To start Azure Cloud Shell:

OpciónOption Ejemplo o vínculoExample/Link
Seleccione Pruébelo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie Cloud Shell.Start Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.Select the Copy button on a code block to copy the code.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Seleccione Entrar para ejecutar el código.Select Enter to run the code.

Configuración de un usuario de implementaciónConfigure a deployment user

Se puede implementar FTP y Git local en una aplicación web de Azure mediante un usuario de implementación.FTP and local Git can deploy to an Azure web app by using a deployment user. Una vez configurado este usuario de implementación, podrá usarlo en todas las implementaciones de Azure.Once you configure your deployment user, you can use it for all your Azure deployments. El nombre de usuario y la contraseña en el nivel de cuenta son diferentes de las credenciales de suscripción de Azure.Your account-level deployment username and password are different from your Azure subscription credentials.

Para configurar el usuario de implementación, ejecute el comando az webapp deployment user set en Azure Cloud Shell.To configure the deployment user, run the az webapp deployment user set command in Azure Cloud Shell. Reemplace <username> y <password> por su nombre de usuario y contraseña.Replace <username> and <password> with a deployment user username and password.

  • El nombre de usuario debe ser único dentro de Azure y no debe contener el símbolo "@" para las inserciones de Git local.The username must be unique within Azure, and for local Git pushes, must not contain the ‘@’ symbol.
  • La contraseña debe tener al menos ocho caracteres y dos de los tres elementos siguientes: letras, números y símbolos.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>

La salida JSON muestra la contraseña como null.The JSON output shows the password as null. Si se produce un error 'Conflict'. Details: 409, cambie el nombre de usuario.If you get a 'Conflict'. Details: 409 error, change the username. Si se produce un error 'Bad Request'. Details: 400, use una contraseña más segura.If you get a 'Bad Request'. Details: 400 error, use a stronger password.

Anote el nombre de usuario y la contraseña que se usarán para implementar las aplicaciones web.Record your username and password to use to deploy your web apps.

Crear un grupo de recursosCreate a resource group

Un grupo de recursos es un contenedor lógico en el que se implementan y administran recursos de Azure como aplicaciones web, bases de datos y cuentas de almacenamiento.A resource group is a logical container into which Azure resources like web apps, databases, and storage accounts are deployed and managed. Por ejemplo, más adelante puede elegir eliminar todo el grupo de recursos en un solo paso.For example, you can choose to delete the entire resource group in one simple step later.

En Cloud Shell, cree un grupo de recursos con el comando az group create.In the Cloud Shell, create a resource group with the az group create command. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación Oeste de Europa.The following example creates a resource group named myResourceGroup in the West Europe location. Para ver todas las ubicaciones de App Service que se admiten en Linux en el nivel Básico, ejecute el comando 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"

Generalmente se crean el grupo de recursos y los recursos en una región cercana.You generally create your resource group and the resources in a region near you.

Cuando finaliza el comando, una salida de JSON muestra las propiedades del grupo de recursos.When the command finishes, a JSON output shows you the resource group properties.

Crear un plan de Azure App ServiceCreate an Azure App Service plan

En Cloud Shell, cree un plan de App Service en el grupo de recursos con el comando az appservice plan create.In the Cloud Shell, create an App Service plan in the resource group with the az appservice plan create command.

En el ejemplo siguiente se crea un plan de App Service denominado myAppServicePlan en el plan de tarifa Gratis (--sku F1) en un contenedor Linux (--is-linux).The following example creates an App Service plan named myAppServicePlan in the Free pricing tier (--sku F1) and in a Linux container (--is-linux).

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

Cuando se crea el plan de App Service, la CLI de Azure muestra información similar al ejemplo siguiente: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
} 

Creación de una aplicación webCreate a web app

Cree una aplicación web en el plan de App Service de myAppServicePlan.Create a web app in the myAppServicePlan App Service plan.

En Cloud Shell, puede usar el comando az webapp create.In the Cloud Shell, you can use the az webapp create command. En el siguiente ejemplo, reemplace <app-name> por un nombre único global de aplicación (los caracteres válidos son a-z, 0-9 y -).In the following example, replace <app-name> with a globally unique app name (valid characters are a-z, 0-9, and -). El tiempo de ejecución se establece en RUBY|2.3.The runtime is set to RUBY|2.3. Para ver todos los entornos en tiempo de ejecución admitidos, ejecute 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

Cuando se haya creado la aplicación web, la CLI de Azure mostrará información similar a la del ejemplo siguiente: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. >
}

Ha creado una nueva aplicación web vacía, con la implementación de Git habilitada.You’ve created an empty new web app, with git deployment enabled.

Nota

La dirección URL del repositorio de Git remoto se muestra en la propiedad deploymentLocalGitUrl, con el formato 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. Guarde esta dirección URL, ya que la necesitará más adelante.Save this URL as you need it later.

Vaya a la aplicación para ver la aplicación web recién creada con una imagen integrada.Browse to the app to see your newly created web app with built-in image. Reemplace <app name> por el nombre de la aplicación web.Replace <app name> with your web app name.

http://<app_name>.azurewebsites.net

Este es el aspecto que debería tener su nueva aplicación web:Here is what your new web app should look like:

Página de presentación

Implementación de aplicaciónDeploy your application

Ejecute los comandos siguientes para implementar la aplicación local en la aplicación web de Azure:Run the following commands to deploy the local application to your Azure web app:

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

Confirme que las operaciones de implementación remota se han realizado correctamente.Confirm that the remote deployment operations report success. Los comandos generan una salida similar al texto siguiente:The commands produce output similar to the following text:

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  master -> master

Una vez finalizada la implementación, espere unos 10 segundos hasta que se reinicie la aplicación web y, a continuación, navegue a la aplicación web y compruebe los resultados.Once the deployment has completed, wait about 10 seconds for the web app to restart, and then navigate to the web app and verify the results.

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

Aplicación web actualizada

Nota

Mientras se reinicia la aplicación, puede que aparezca el código de estado HTTP Error 503 Server unavailable en el explorador o la página predeterminada Hey, Ruby developers!.While the app is restarting, you may observe the HTTP status code Error 503 Server unavailable in the browser, or the Hey, Ruby developers! default page. Puede que la aplicación tarde unos minutos en reiniciarse completamente.It may take a few minutes for the app to fully restart.

Limpieza de la implementaciónClean up deployment

Después de ejecutar el script de ejemplo, se puede usar el comando siguiente para quitar el grupo de recursos y todos los recursos asociados.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

Pasos siguientesNext steps

Configure Ruby app (Configuración de una aplicación de Ruby)Configure Ruby app