Creare un'app Ruby on Rails nel servizio app

Il Servizio app di Azure in Linux offre un servizio di hosting Web con scalabilità elevata e applicazione automatica di patch basato sul sistema operativo Linux.

Nota

In questo momento lo stack di sviluppo di Ruby supporta solo Ruby on Rails. Per usare una piattaforma diversa, ad esempio Sinatra, o per usare una versione non supportata di Ruby, è necessario eseguirla in un contenitore personalizzato.

Screenshot dell'app di esempio in esecuzione in Azure, che mostra

Se non si dispone di una sottoscrizione di Azure, creare un account gratuito di Azure prima di iniziare.

Se si esegue il codice di esempio in locale, sarà necessario:

Non sarà necessario installare questi elementi se si usa il Cloud Shell.

Azure Cloud Shell

Azure Cloud Shell è un ambiente di shell interattivo ospitato in Azure e usato tramite il browser. È possibile usare Bash o PowerShell con Cloud Shell per usare i servizi di Azure. È possibile usare i comandi Cloud Shell preinstallati per eseguire il codice in questo articolo, senza dover installare alcun elemento nell'ambiente locale.

Per avviare Azure Cloud Shell:

Opzione Esempio/Collegamento
Selezionare Prova nell'angolo in alto a destra di un codice o di un blocco di comandi. Selezionando Prova non copia automaticamente il codice o il comando in Cloud Shell. Screenshot che mostra un esempio di Prova per Azure Cloud Shell.
Passare a https://shell.azure.com o selezionare il pulsante Avvia Cloud Shell per aprire Cloud Shell nel browser. Screenshot che mostra come avviare Cloud Shell in una nuova finestra.
Selezionare il pulsante Cloud Shell nella barra dei menu nell'angolo in alto a destra del portale di Azure. Screenshot che mostra il pulsante Cloud Shell nel portale di Azure

Per usare Azure Cloud Shell:

  1. Avviare Cloud Shell.

  2. Selezionare il pulsante Copia in un blocco di codice (o blocco di comandi) per copiare il codice o il comando.

  3. Incollare il codice o il comando nella sessione di Cloud Shell selezionando CTRL+MAIUSC+V in Windows e Linux oppure selezionando Cmd+Maiusc+V in macOS.

  4. Selezionare Invio per eseguire il codice o il comando.

1 - Ottenere il repository di esempio

Questa esercitazione di avvio rapido illustra come distribuire un'app Ruby on Rails nel Servizio app in Linux tramite Cloud Shell.

  1. In una finestra del terminale clonare l'applicazione di esempio nel computer locale e passare alla directory contenente il codice di esempio.

    git clone https://github.com/Azure-Samples/ruby-docs-hello-world
    cd ruby-docs-hello-world
    
  2. Assicurarsi che il ramo predefinito sia main.

    git branch -m main
    

    Suggerimento

    La modifica del nome del ramo non è richiesta da servizio app. Tuttavia, poiché molti repository modificano il ramo predefinito in main, questa esercitazione illustra anche come distribuire un repository da main. Per altre informazioni, vedere Modificare il ramo di distribuzione.

Eseguire l'applicazione in locale

Se si vuole eseguire l'applicazione in locale per vedere come funziona, clonare il repository in locale e seguire questa procedura.

Nota

Questi passaggi non possono essere eseguiti in Azure Cloud Shell, a causa dei conflitti di versione con Ruby.

  1. Installare le gemme necessarie. Nell'esempio è incluso un Gemfile, quindi è sufficiente eseguire il comando seguente:

    bundle install
    
  2. Dopo l'installazione delle gemme, avviare l'app:

    bundle exec rails server
    
  3. Tramite il Web browser, passare a http://localhost:3000 per testare l'app in locale.

    Hello World configurato

2 - Distribuire il codice dell'applicazione in Azure

Configurare un utente della distribuzione

FTP e l'istanza Git locale possono essere usati per la distribuzione in un'app Web tramite un utente della distribuzione. Dopo aver configurato l'utente della distribuzione, è possibile usarlo per tutte le distribuzioni di Azure. Il nome utente e la password della distribuzione a livello di account sono diversi dalle credenziali della sottoscrizione di Azure.

Per configurare l'utente della distribuzione, eseguire il comando az webapp deployment user set in Azure Cloud Shell. Sostituire <nome utente> e password> con un nome utente e <una password di distribuzione.

  • Il nome utente deve essere univoco in Azure e per i push Git locali non deve contenere il simbolo "\@".
  • La password deve essere composta da almeno otto caratteri, con due dei tre elementi seguenti: lettere, numeri e simboli.
az webapp deployment user set --user-name <username> --password <password>

L'output JSON mostra la password come null. Se viene visualizzato un errore 'Conflict'. Details: 409, modificare il nome utente. Se viene visualizzato un errore 'Bad Request'. Details: 400, usare una password più complessa.

Registrare il nome utente e la password da usare per distribuire le app Web.

Creare un gruppo di risorse

Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite risorse di Azure come app Web, database e account di archiviazione. Ad esempio, si può scegliere in un secondo momento di eliminare l'intero gruppo di risorse in un unico semplice passaggio.

In Cloud Shell creare un gruppo di risorse con il comando az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località Europa occidentale. Per visualizzare tutte le località supportate per il servizio app in Linux nel livello Basic, eseguire il comando az appservice list-locations --sku B1 --linux-workers-enabled.

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

In genere, il gruppo di risorse e le risorse vengono create in un'area vicina alla località dell'utente.

Al termine del comando, un output JSON visualizza le proprietà del gruppo di risorse.

Creare un piano di servizio app di Azure

In Cloud Shell creare un piano di servizio app con il comando az appservice plan create.

L'esempio seguente crea un piano di servizio app denominato myAppServicePlan nel piano tariffario Gratuito:

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

Al termine della creazione del piano di servizio app, l'interfaccia della riga di comando di Azure visualizza informazioni simili all'esempio seguente:

{ 
  "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. Creare un'app Web nel piano di servizio app myAppServicePlan.

    In Cloud Shell è possibile usare il comando az webapp create. Nell'esempio seguente sostituire <app-name> con un nome app univoco globale. I caratteri validi sono a-z, 0-9 e -. Il runtime è impostato su RUBY|2.7. Per visualizzare tutti i runtime supportati, eseguire az webapp list-runtimes --os linux.

    az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --runtime 'RUBY|2.7' --deployment-local-git
    

    Dopo la creazione dell'app Web, l'interfaccia della riga di comando di Azure mostra un output simile all'esempio seguente:

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

    È stata creata una nuova app Web vuota, con distribuzione Git abilitata.

    Nota

    L'URL dell'elemento Git remoto è riportato nella proprietà deploymentLocalGitUrl, con il formato https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Salvare questo URL, perché è necessario in un secondo momento.

  2. Poiché si distribuisce il ramo, è necessario impostare il ramo di distribuzione predefinito per l'app main servizio app su (vedere Modificare il mainramo di distribuzione). Nella Cloud Shell impostare l'impostazione dell'app DEPLOYMENT_BRANCH con il az webapp config appsettings set comando .

    az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'
    
  3. Nella finestra del terminale locale aggiungere un'istanza remota di Azure al repository Git locale. Sostituire <deploymentLocalGitUrl-from-create-step> con il deploymentLocalGitUrl valore dalla creazione dell'app.

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  4. Effettuare il push all'istanza remota di Azure per distribuire l'app con il comando seguente. Quando Git Credential Manager richiede le credenziali, assicurarsi di immettere quelle create in Configurare un utente della distribuzione, non quelle usate per accedere al portale di Azure.

    git push azure main
    

    L'esecuzione del comando può richiedere alcuni minuti. Durante l'esecuzione, il comando visualizza informazioni simili all'esempio seguente:

    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. Al termine della distribuzione, attendere circa 10 secondi per il riavvio dell'app Web, quindi passare all'app Web e verificare i risultati.

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

Nota

Durante il riavvio dell'app potrebbe essere visualizzato il codice di stato HTTP Error 503 Server unavailable nel browser o la pagina predefinita Hey, Ruby developers!. Il completamento del riavvio dell'app potrebbe richiedere alcuni minuti.

Il codice di esempio Ruby è in esecuzione in un'app Web Linux Servizio app di Azure.

Screenshot dell'app di esempio in esecuzione in Azure, che mostra

Congratulazioni! È stata distribuita la prima app Ruby in servizio app usando l'portale di Azure.

3 - Aggiornare e ridistribuire l'app

  1. Da Azure Cloud Shell avviare un editor di testo, ad esempio nano o vim , per modificare il file in app/controllers/application_controller.rb.

    nano app/controllers/application_controller.rb
    
  2. Modificare la classe ApplicationController in modo da visualizzare "Hello world from Servizio app di Azure on Linux!" anziché "Hello from Servizio app di Azure on Linux!".

    class ApplicationController < ActionController::Base
        def hello
            render html: "Hello world from Azure App Service on Linux!"
        end
    end
    
  3. Salvare e chiudere il file.

  4. Eseguire il commit della modifica in Git con i comandi seguenti:

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

Nota

  • Assicurarsi che l'istruzione git push includa azure main in modo che venga eseguito il push direttamente nell'URL di distribuzione git di Azure.
  • È anche necessario impostare i user.name valori di configurazione e user.email Git quando si esegue il commit delle modifiche. È possibile farlo con git config user.name "YOUR NAME" e git config user.email "YOUR EMAIL".

4 - Gestire la nuova app di Azure

  1. Accedere al portale di Azure per gestire l'app Web creata. Cercare e selezionare Servizi app.

    Screenshot della portale di Azure con

  2. Selezionare il nome dell'app di Azure.

    Screenshot dell'elenco Servizi app in Azure. Il nome del servizio app demo è evidenziato.

Verrà visualizzata la pagina Panoramica dell'app Web. Qui è possibile eseguire attività di gestione di base come esplorazione, arresto, riavvio ed eliminazione.

Screenshot della pagina di panoramica servizio app in portale di Azure. Nella barra delle azioni viene evidenziato il gruppo di pulsanti Sfoglia, Stop, Swap (disabilitato), Riavvia ed Elimina.

5 - Pulire le risorse

Pulire la distribuzione

Dopo l'esecuzione dello script di esempio, è possibile usare il comando seguente per rimuovere il gruppo di risorse e tutte le risorse ad esso associate.

az group delete --name myResourceGroup

Passaggi successivi