Minulta kysytään usein voiko Azuressa ajaa node.js-sovelluksia. Vastaus on kyllä. Ellet ole vielä huomannut, Azure ei ole ainoastaan Microsoft-uskovaisten leikkikenttä. Voit käyttää Javaa, javascriptiä (node.js), PHP:ta, Pythonia ja jopa C#-kielisten sovellusten ajaminen onnistuu. Maria/MySQL, postgreSQL, Redis, Docker, Kubernetes – kaikki löytyvät valmiina palveluina. Bonuksena moniin muihin verrattuna on myös aito SLA palveluiden saatavuudesta, mahdollisuus käyttää maanpäällisiä resurssejasi hybridiympäristönä, sertifioitu ajoympäristö sekä yritystason monitorointi- ja tietoturvaratkaisut (Microsoft ottaa tietoturvan ja yksityisyyden suojan melko vakavissaan). Devaajia miellyttävät Azuressa palvelimettoman arkkitehtuurin funktiot, erilaiset tietovarastot (jonot, pinot jne.) koneoppiminen ja tekoäly, chatbotit jne. Kaikki napinpainalluksen päässä.

Mutta asiaan. Tässä blogissa näytetään miten node.js sovellukset laitetaan Azureen ajoon.  Lataa blogissa käytetty koodi ja muut tarvittavat tiedostot GitHubista alla olevalla napilla.

Sovellus

… on tietysti node.js versio helloworldista, jotta pysymme itse asiassa eli miten sovellus laitetaan ajoon Azureen.

Azuren Web App

Web App on (hieman yksinkertaistaen) Azuren ensisijainen verkkosovellusten ajoalusta. Samaista Web Appia käytetään Java, Python, PHP, C# tai vaikkapa staattisten sivujen ajamiseen. Tällä kertaa kertaa käytämme sitä ajamaan noden js-tiedostoja. Maksullisilla Web Appeilla on SLA 99,95% suoraan hyllystä, ja voit asettaa halutessasi ne skaalaamaan automaattisesti kuorman mukaan. Tässä hieman täydellisempi kuvaus Web Appin kaikista ominaisuuksista.

Node.js sovelluksen asennus alkaa web appin luomisella, ja tässä blogissa web app luodaan Azure portaalin kautta. Azuren hyvä ja huono puoli on se, että asiat voi aina tehdä useammalla tavalla. Kaiken mitä seuraavaksi tehdään, voi tehdä myös suoraan komentoriviltä (== voit automatisoida). Jos tykkäät mustista ruuduista, tässä ohjeet miten samainen temppu tehdään komentoriviltä käsin.

Esivaatimukset

  • Olemassa oleva Azure-tilaus eli subscription (saat ilmaisen Azuren täältä)
  • Sinulla on riittävät oikeudet tilaukseen (kuten owner tai co-admin)

Web Appin luominen Azure portaalista

  1. Mene osoitteeseen portal.azure.com.
  2. Klikkaa “+ Create a resource” vasemmasta palkista.
  3. Kirjoita hakulaatikkoon web app.
  4. Valitse Web App (pelkkä Web App). Azure näyttää vähän lisätiedoja valinnastasi.
  5. Klikkaa Create..

Kuva: Web Appin luonti, hae ja valitse listalta.

Azure kysyy muutaman tiedon, täytä nämä seuraavaksi:

  1. Anna sovelluksellesi nimi. Tästä tulee sovelluksen url-osoitteen etuliite. URL osoitteiden täytyy olla yksilöiviä. Osoitteesta tulee lopulta [sovelluksennimi].azurewebsites.net – muotoinen.
  2. Valitse tilaus jota haluat käyttää (sinulla on luultavasti vain yksi vaihtoehto).
  3. Luo uusi Resource Group. Resurssiryhmä on eräänlainen kansio, johon kaikki luodut resurssit laitetaan.
  4. Tässä harjoituksessa käytetään Windowsia ja julkaiset koodia
  5. Ota Application Insights pois päältä (et tarvitse juuri nyt kovinkaan kummoista monitorointia)
  6. Valitse tai luo uusi App Service Plan, alla hieman lisätietoa tästä.

Kuva: Täytä Web Appin tiedot, ja valitse uuden App Service Planin luonti.

App service plan määrittelee mm. millaisessa koneessa sovelluksesi lopulta ajetaan (muisti, coret), sekä muutamia muita ominaisuuksia kuten mahdollisuus omaan domain-nimeen, skaalautuminen jne. Nämä tekijät vaikuttavat web appin minuuttihintaan.

Tätä harjoitusta varten:

  1. Luo uusi App Service Plan, anna sille joku nimi (ei niin väliä mikä).
  2. Valitse sijainniksi West Europe (Suomea lähin datacenter, Amsterdam)
  3. Valitse Pricing Tier F1 Dev/Test välilehdeltä. Tämä on aidosti ilmainen.
  4. Paina Apply.

Kuva: App Service plan – valitse F1 (ilmainen).

Olet nyt valmis, klikkaa Ok. Azure ryhtyy luomaan web appia. Muutaman minuutin kuluttua yläpalkissa näkyvä pieni kelloikoni ilmoittaa että web app on valmis. Tämän jälkeen voitkin kokeilla käynnissä olevaa web appiasi: Sovelluksen URL löytyy Web Appin Overview-välilehdeltä.

Sovellus sekä muut tiedostot

Ellet vielä hakenut mallisovellusta itsellesi, tee se nyt. Seuraavat ruudunkaappaukset ovat Visual Studio Codesta, voit toki käyttää mitä tahansa mieleistä editoria ja komentorivityökalua.

Kuva: Asennuspaketin sisältö ja hello-sovellus!

Hakemistossa:

  • hello.js – Itse sovellus. Ei mitään uutta.
  • web.config – kertoo web appille mitä ja miten ajetaan.
  • package.json – mitä node paketteja tarvitaan, ja mikä js-tiedosto käynnistetään.
  • publish.js – tätä skriptiä käytetään julkaisemaan paketti Azureen.

Avaa web.config tiedosto. Tiedostossa on kaksi asiaa. Ensiksikin, tiedosto sisältää URLin uudelleenkirjoituksen ohjeet (rewrite). Tiedostossa on määritelty, että kaikki sisääntulevat pyynnöt välitetään hello.js – tiedostolle. Tiedostossa määritellään myös “iisnode”, joka määrittää miten node-sovelluksia ajetaan web appissa.

Jäljellä on enää miten paketti saadaan Azureen asti.

Julkaise Azureen

Rehellisyyden nimissä todettakoon, että useimmat julkaisevat node-sovelluksensa Azureen käyttäen Local Git Push – toimintoa. Jos tämä on sinun juttusi, ohje löytyy täältä. En ole kovinkaan suuri Git-fani, ja pidän siitä että asiat tapahtuvat nopeasti, joten käytän yleensä erillistä julkaisuskriptiä. Asia hoituu nopeasti ilman tarpeettomia työvaiheita.

Näin publish.js muutetaan toimimaan node.js sovelluksesi kanssa:

  1. Mene Azure-portaaliin ja luotuun Web Appin.
  2. Overview-sivun yläpalkissa näkyy “Get publish profile” nappula. Paina.
  3. Saat tiedoston, jossa on kaksi publish.js tiedostoon kopioitavaa tietoa.
  4. Avaa publish.js.


Kuva: Hae Publish Profile


Kuva: publish.js – skripti.

Muuta 2 riviä publish.js tiedostossa (merkattu punaisella edellisessä kuvassa): Sovelluksesi nimi (myWebAppName), ja deployment salasana. (userPWD). Sovelluksen nimi on sama minkä annoit web appin nimeksi. Salasana taas löytyy publish profile-tiedostosta, osiosta jonka publishMethod on MSDeploy. Kopioi salasana paikoilleen.

Aja ensin komentoriviltä normaali npm install – komento, joka tuo tarvittavat node-paketit pailoilleen. Tämän jälkeen olet julkaisuvalmis. Julkaisu tehdään ajamalla komentoriviltä:

node publish.js

… kun skripti päättyy, sovellus on Azuressa. Jos ja kun saat ilmoituksia node-pakettien puuttumisesta, vääristä node-versioista tms., korjaa ne normaalisti. Testaa sovelluksesi
URL-osoite löytyy web app overview – kohdasta Azure portaalista.

Siinäpä se. Onnittelut!

Kuva: Se toimii!

Vihje: Kudu-konsoli

Kaikilla WebAppeilla on myös kätevä konsoliliittymä Kudu, jonka avulla näet sovelluksen ajonaikaisen alustan sisälle. Konsoli löytyy osoitteesta (käytä Azure portaalitunnusta sisäänkirjaukseen):

https://[yourappname].scm.azurewebsites.net

Kudun Debug Consolen avulla voit ajaa PowerShell- tai CMD-komentoja, sekä katsoa ja muokata tiedostoja suoraan Azuressa. Sovelluksen lokitiedostot löytyvät hakemistosta /home/LogFiles/application. Käytännössä huomattua: Azuren node package manager (npm) ei ole mitenkään täydellinen, ja joskus sovelluksen paketit eivät asennu automaattisesti oikein. Korjaa ongelma kudu-konsolillla: Sovelluksesi löytyy /home/site/wwwroot hakemistosta. Mene hakemistoon, ja aja täällä npm install ja ongelma yleensä korjaantuu.

Muutama hyvä linkki: