Een Ruby on Rails-app maken met App Service

Azure App Service in Linux biedt een uiterst schaalbare webhostingservice met self-patchfunctie via het Linux-besturingssysteem. Deze quickstart laat zien hoe u een Ruby on Rails-app naar App Service in Linux implementeert met Cloud Shell.

Notitie

De Ruby-ontwikkelstack ondersteunt momenteel alleen Ruby on Rails. Als u een ander platform wilt gebruiken, zoals Sinatra, of als u een niet-ondersteunde Ruby-versie wilt gebruiken, voert u deze uit in een aangepaste container.

Hello-world

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

Het voorbeeld downloaden

  1. Kloon in een terminalvenster de voorbeeldtoepassing naar uw lokale computer en navigeer naar de map met de voorbeeldcode.

    git clone https://github.com/Azure-Samples/ruby-docs-hello-world
    cd ruby-docs-hello-world
    
  2. Zorg ervoor dat de standaard branch main is.

    git branch -m main
    

    Tip

    De naamswijziging van de vertakking is niet vereist door App Service. Omdat veel opslagplaatsen hun standaardvertakking echter wijzigen in , laat deze zelfstudie ook zien hoe u een main opslagplaats implementeert vanuit main . Zie Change deployment branch (Implementatiebranche wijzigen) voor meer informatie.

De toepassing lokaal uitvoeren

  1. Installeer de vereiste gems. Er is een Gemfile opgenomen in het voorbeeld. U hoeft alleen maar de volgende opdracht uit te voeren:

    bundle install
    
  2. Zodra de gems zijn geïnstalleerd, start u de app:

    bundle exec rails server
    
  3. Navigeer naar http://localhost:3000 met uw webbrowser om de app lokaal te testen.

    Hello World geconfigureerd

Azure Cloud Shell gebruiken

Azure host Azure Cloud Shell, een interactieve shell-omgeving die u via uw browser kunt gebruiken. U kunt Bash of PowerShell gebruiken met Cloud Shell om met Azure-services te werken. U kunt de vooraf geïnstalleerde opdrachten van Cloud Shell gebruiken om de code in dit artikel uit te voeren zonder dat u iets hoeft te installeren in uw lokale omgeving.

Om Azure Cloud Shell op te starten:

Optie Voorbeeld/koppeling
Selecteer Nu proberen in de rechterbovenhoek van een codeblok. Als u Uitproberen selecteert, wordt de code niet automatisch gekopieerd naar Cloud Shell. Voorbeeld van Uitproberen voor Azure Cloud Shell
Ga naar https://shell.azure.com, of selecteer de knop Cloud Shell starten om Cloud Shell in uw browser te openen. Cloud Shell starten in een nieuw venster
Klik op de knop Cloud Shell in het menu in de balk rechtsboven in de Azure-portal. Knop Cloud Shell in de Azure Portal

Om de code in dit artikel in Azure Cloud Shell uit te voeren:

  1. Start Cloud Shell.

  2. Selecteer de knop Kopiëren op een codeblok om de code te kopiëren.

  3. Plak de code in de Cloud Shell-sessie door CTRL+Shift+V te selecteren in Windows en Linux of door Cmd+Shift+V op macOS te selecteren.

  4. Selecteer Invoeren om de code uit te voeren.

Een implementatiegebruiker configureren

FTP en lokale Git kunnen worden geïmplementeerd in een Azure-web-app met behulp van een implementatiegebruikers. Zodra u deze implementatiegebruiker hebt gemaakt, kunt u deze voor al uw Azure-implementaties gebruiken. Uw gebruikersnaam en wachtwoord voor implementatie op accountniveau verschillen van de referenties voor uw Azure-abonnement.

Als u de implementatiegebruiker wilt configureren, voert u de opdracht az webapp deployment user set uit in Azure Cloud Shell. Vervang <username> en <password> door de gebruikersnaam en het wachtwoord van de gebruiker van de implementatie.

  • De gebruikersnaam moet uniek zijn binnen Azure en voor lokale Git-pushes en mag het symbool '@' niet bevatten.
  • Het wachtwoord moet ten minste acht tekens lang zijn en minimaal twee van de volgende drie typen elementen bevatten: letters, cijfers en symbolen.
az webapp deployment user set --user-name <username> --password <password>

De JSON-uitvoer toont het wachtwoord als null. Als er een 'Conflict'. Details: 409-fout optreedt, wijzigt u de gebruikersnaam. Als er een 'Bad Request'. Details: 400-fout optreedt, kiest u een sterker wachtwoord.

Noteer uw gebruikersnaam en wachtwoord om te gebruiken bij het implementeren van uw web-apps.

Een resourcegroep maken

Een resourcegroep is een logische container waarin Azure-resources, zoals web-apps, databases en opslagaccounts, worden geïmplementeerd en beheerd. U kunt bijvoorbeeld later de hele resourcegroep in één stap verwijderen.

Maak een resourcegroep in Cloud Shell met de opdracht az group create. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie Europa - west. Als u alle ondersteunde locaties voor App Service op Linux in prijscategorie Basic wilt zien, voert u de opdracht az appservice list-locations --sku B1 --linux-workers-enabled uit.

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

In het algemeen maakt u een resourcegroep en resources in een regio bij u in de buurt.

Wanneer de opdracht is voltooid, laat een JSON-uitvoer u de eigenschappen van de resource-groep zien.

Een Azure App Service-plan maken

Maak in Cloud Shell een App Service-plan met de opdracht az appservice plan create.

In het volgende voorbeeld wordt een App Service-plan gemaakt met de naam myAppServicePlan en de prijscategorie Gratis:

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

Wanneer het App Service-plan is gemaakt, toont de Azure CLI soortgelijke informatie als in het volgende voorbeeld:

{ 
  "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
} 

Een webtoepassing maken

  1. Een web-app maken in het App Service-plan myAppServicePlan.

    In Cloud Shell kunt u de opdracht az webapp create gebruiken. Vervang in het volgende voorbeeld <app-name> door een unieke naam (geldige tekens zijn a-z, 0-9, en -). De runtime is ingesteld op RUBY|2.6. Voer az webapp list-runtimes --linux uit als u alle ondersteunde runtimes wilt zien.

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

    Wanneer de web-app is gemaakt, toont de Azure CLI soortgelijke uitvoer als in het volgende voorbeeld:

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

    U hebt een nieuwe lege web-app gemaakt, met Git-implementatie ingeschakeld.

    Notitie

    De URL van de externe Git wordt weergegeven in de eigenschap deploymentLocalGitUrl, met de indeling https://<username>@<app-name>.scm.azurewebsites.net/<app-name>.git. Sla deze URL op, want u hebt deze later nodig.

  2. Blader naar de app om uw nieuwe web-app met de ingebouwde installatiekopie te bekijken. Vervang < app-name> door de naam van uw web-app.

    http://<app_name>.azurewebsites.net
    

    Zo zou uw nieuwe web-app er moeten uitzien:

    Welkomstpagina

Uw toepassing implementeren

  1. Omdat u de vertakking implementeert, moet u de standaardimplementatievertakking voor uw main App Service-app instellen main op (zie Implementatievertakking wijzigen). Stel in Cloud Shell DEPLOYMENT_BRANCH app-instelling in met de opdracht az webapp config appsettings set .

    az webapp config appsettings set --name <app-name> --resource-group myResourceGroup --settings DEPLOYMENT_BRANCH='main'
    
  2. Voeg, eenmaal terug in het lokale terminalvenster, een externe Azure-instantie toe aan uw lokale Git-opslagplaats. Vervang <deploymentLocalGitUrl-from-create-step> door de URL van de externe Git-instantie die u hebt opgeslagen bij Een web-app maken.

    git remote add azure <deploymentLocalGitUrl-from-create-step>
    
  3. Push naar de externe Azure-instantie om uw app te implementeren met de volgende opdracht. Wanneer Git Credential Manager u om referenties vraagt, geeft u de referenties op die u hebt gemaakt in Een implementatiegebruiker configureren, en niet de referenties die u gebruikt om u aan te melden bij de Azure-portal.

    git push azure main
    

    Het kan enkele minuten duren voor deze opdracht is uitgevoerd. De opdracht geeft informatie weer die lijkt op het volgende voorbeeld:

   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
   

Bladeren naar de app

Zodra de implementatie is voltooid, wacht u ongeveer tien seconden totdat de web-app opnieuw is gestart en navigeert u vervolgens naar de web-app en controleert u de resultaten.

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

bijgewerkte web-app

Notitie

Terwijl de app opnieuw wordt gestart, kunt u de HTTP-statuscode Error 503 Server unavailable in de browser of op de standaardpagina Hey, Ruby developers! bekijken. Het een paar minuten duren voordat de app opnieuw is gestart.

Opschonen van implementatie

Na het uitvoeren van het voorbeeldscript kan de volgende opdracht worden gebruikt om de resourcegroep en alle resources die er aan zijn gekoppeld te verwijderen.

az group delete --name myResourceGroup

Volgende stappen