Creación de una aplicación Ruby on Rails en App Service
Azure App Service en Linux proporciona un servicio de hospedaje web muy escalable y con aplicación automática de revisiones que usa el sistema operativo Linux. En este tutorial de inicio rápido se explica cómo implementar una aplicación Ruby on Rails en App Service en Linux mediante Cloud Shell.
Nota
La pila de desarrollo de Ruby solo admite Ruby on Rails de momento. Si desea usar otra plataforma, como Sinatra, o una versión de Ruby no admitida, tiene que ejecutarla en un contenedor personalizado.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Requisitos previos
Descarga del ejemplo
En una ventana del terminal, clone la aplicación de ejemplo en la máquina local y se desplazará al directorio que contiene el código de ejemplo.
git clone https://github.com/Azure-Samples/ruby-docs-hello-world cd ruby-docs-hello-worldAsegúrese de que la rama predeterminada sea
main.git branch -m mainSugerencia
En App Service, no es obligatorio cambiar el nombre de la rama. Sin embargo, como muchos repositorios están cambiando la rama predeterminada a
main, en este tutorial veremos también cómo implementar un repositorio desdemain. Para obtener más información, consulte Cambio de la rama de implementación.
Ejecutar la aplicación localmente
Instale los gems necesarios. Hay un elemento
Gemfileincluido en el ejemplo, por lo que solo tiene que ejecutar el siguiente comando:bundle installUna vez instalados los gems, inicie la aplicación:
bundle exec rails serverMediante el explorador web, vaya a
http://localhost:3000para probar la aplicación localmente.
Uso de Azure Cloud Shell
En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. 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.
Para iniciar Azure Cloud Shell:
| Opción | Ejemplo o vínculo |
|---|---|
| Seleccione Pruébelo en la esquina superior derecha de un bloque de código. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell. | ![]() |
| Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. | ![]() |
| Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal. | ![]() |
Para ejecutar el código de este artículo en Azure Cloud Shell:
Inicie Cloud Shell.
Seleccione el botón Copiar de un bloque de código para copiar el código.
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.
Seleccione Entrar para ejecutar el código.
Configuración de un usuario de implementación
Se puede implementar FTP y Git local en una aplicación web de Azure mediante un usuario de implementación. Una vez configurado este usuario de implementación, podrá usarlo en todas las implementaciones de Azure. El nombre de usuario y la contraseña en el nivel de cuenta son diferentes de las credenciales de suscripción de Azure.
Para configurar el usuario de implementación, ejecute el comando az webapp deployment user set en Azure Cloud Shell. Reemplace <username> y <password> por un nombre de usuario y una contraseña de usuario de implementación.
- El nombre de usuario debe ser único dentro de Azure y no debe contener el símbolo "@" para las inserciones de Git local.
- La contraseña debe tener al menos ocho caracteres y dos de los tres elementos siguientes: letras, números y símbolos.
az webapp deployment user set --user-name <username> --password <password>
La salida JSON muestra la contraseña como null. Si se produce un error 'Conflict'. Details: 409, cambie el nombre de usuario. Si se produce un error 'Bad Request'. Details: 400, use una contraseña más segura.
Anote el nombre de usuario y la contraseña que se usarán para implementar las aplicaciones web.
Crear un grupo de recursos
Un grupo de recursos es un contenedor lógico en el que los recursos de Azure, como aplicaciones web, bases de datos y cuentas de almacenamiento, se implementen y administren. Por ejemplo, más adelante puede elegir eliminar todo el grupo de recursos en un solo paso.
En Cloud Shell, cree un grupo de recursos con el comando az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación Oeste de Europa. 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.
az group create --name myResourceGroup --location "West Europe"
Generalmente se crean el grupo de recursos y los recursos en una región cercana.
Cuando finaliza el comando, una salida de JSON muestra las propiedades del grupo de recursos.
Crear un plan de Azure App Service
En Cloud Shell, cree un plan de App Service con el comando az appservice plan create.
En el siguiente ejemplo se crea un plan de App Service denominado myAppServicePlan con el plan de tarifa Gratis:
az appservice plan create --name myAppServicePlan --resource-group myResourceGroup --sku FREE --is-linux
Cuando se crea el plan de App Service, la CLI de Azure muestra información similar al ejemplo siguiente:
{
"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
}
Creación de una aplicación web
Cree una aplicación web en el plan de App Service de
myAppServicePlan.En Cloud Shell, puede usar el comando
az webapp create. En el siguiente ejemplo, reemplace<app-name>por un nombre único global de aplicación (los caracteres válidos sona-z,0-9y-). El tiempo de ejecución se establece enRUBY|2.6. Para ver todos los entornos en tiempo de ejecución admitidos, ejecuteaz webapp list-runtimes --linux.az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'RUBY|2.6' --deployment-local-gitCuando se haya creado la aplicación web, la CLI de Azure mostrará información similar a la del ejemplo siguiente:
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.
Nota
La dirección URL del repositorio de Git remoto se muestra en la propiedad
deploymentLocalGitUrl, con el formatohttps://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Guarde esta dirección URL, ya que la necesitará más adelante.Vaya a la aplicación para ver la aplicación web recién creada con una imagen integrada. Reemplace <app_name por el nombre de la aplicación web.
http://<app_name>.azurewebsites.netEste es el aspecto que debería tener su nueva aplicación web:

Implementación de aplicación
Puesto que va a implementar la rama
main, debe establecer la rama de implementación predeterminada para la aplicación de App Service enmain(consulte Cambio de la rama de implementación). En Cloud Shell, establezca el valor de la aplicaciónDEPLOYMENT_BRANCHcon el comandoaz webapp config appsettings set.az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'En la ventana del terminal local, agregue una instancia remota de Azure al repositorio de Git local. Reemplace <deploymentLocalGitUrl-from-create-step> por la dirección URL del repositorio Git remoto que guardó en Creación de una aplicación web.
git remote add azure <deploymentLocalGitUrl-from-create-step>Realice la insercion en la instancia remota de Azure para implementar la aplicación con el comando siguiente. Cuando el Administrador de credenciales de Git le solicite las credenciales, asegúrese de que especifica las que creó en Configuración de un usuario de implementación, no las que se usan para iniciar sesión en Azure Portal.
git push azure mainEste comando puede tardar varios minutos en ejecutarse. Durante la ejecución, muestra información similar a la del ejemplo siguiente:
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
Navegación hasta la aplicación
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.
http://<app-name>.azurewebsites.net

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!. Puede que la aplicación tarde unos minutos en reiniciarse completamente.
Limpieza de la implementación
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.
az group delete --name myResourceGroup
Pasos siguientes
Configure Ruby app (Configuración de una aplicación de Ruby)


