Andrise programmeerimisalane WIKI
node.js kasutamine Amazon EC2 virtuaalserveris
node.js
node.js on uuenduslik serveris jooksev JavaScripti platvorm. Uuenduslikkus seisneb mitte-blokeeruvas ülesehituses: ükski rida programmist ei tegele otseselt IO operatsioonide sooritamisega, kõik vastavad tegevused edastatakse callback parameetriga süsteemile paralleelseks täitmiseks ning programm liigub koheselt samast kohe edasi. Täpsemalt tasub lugeda node.js kodulehelt.
Kasutamaks node.js platvormi veebiserverina, on vaja internetti ühendatud ja avalikkusele ligipääsetavat serverit. Tavalised virtuaalhostingu paketid selle jaoks ei kõlba, kuna ei võimalda sinna lisada oma valitud tarkvara. Õnneks on hakatud üsna palju pakkuma ka nn. virtuaalseid privaatservereid, mis kujutavad endast eraldiseisvaid virtuaalmasinaid, millel on oma operatsioonisüsteem ja garanteeritud ressursid. Siinkohal vaatame kuidas saada node.js käima just sellises Amazon EC2 virtuaalmasinate platvormil.
Amazon AWS
Amazon AWS on Amazoni pilveteenuste platvorm. Üheks platvormi poolt pakutavaks teenuseks on EC2 (Elastic Compute Cloud) ehk virtuaalmasinate vajaduspõhine rent. Tegu on väga mugava teenusega, kuna virtuaalmasinaid saab käima panna ja sulgeda vastavalt vajadusele veebipõhise liidese abil. Ainsaks probleemiks on sellise masina suhteliselt kõrge hind - arvestada tuleks umbkaudu 70-80 dollariga kuus. Eesti kohalike pakkujate käest saab sarnase masina tunduvalt odavamalt.
Amazon AWS kasutamiseks tuleb luua endale teenuse konto, mille saab teha siin. Valmis tasub hoida ka telefon, kuna kasutaja identifitseerimiseks tuleb vastu võtta Amazoni roboti kõne ja toksida telefoni registreerimise järel kuvatud numbrilise koodi.
Amazon EC2 virtuaalmasina käivitamine
node.js kasutamiseks tuleb kõigepealt seada üles virtuaalne server. Selle jaoks tuleb AWS konsoolil võtta ette EC2 lahter. Ülevalt vasakult nurgast tasub Eestis asudes valida serverite asukohaks Euroopa (tekib väike võit kiiruselt). Seejärel tuleb klikkida nupul „Launch instance“.

Joonis 1. Amazon AWS EC2 juhtkonsool. Vaheta regioon EU-West vastu ja kliki nupul „Launch instance“
Järgmiseks avaneb AMI (Amazon Machine Instance) valiku dialoog. Võimalik on seadistada masina operatsioonisüsteem täielikult ise, kuid siinkohal valime kõige lihtsama Amazoni poolt ette valmistatud operatsioonisüsteemi installatsiooni, milleks on nimekirjas esimesel kohal olev Fedora Core.

Joonis 2. AMI valikuaken. Vali nimekirjas esimesel kohal olev „Getting Started on Fedora Core 8“
Järgnevates akendes saab valida masina tüüpi, nende arvu ja hinnastamise mudelit. Esialgu tasub kõik jätta nii nagu vaikimisi on pakutud.

Joonis 3. Masina seadete valikuaken. Jäta kõik samaks

Joonis 4. Masina seadete valikuaken. Jäta kõik samaks
Järgmiseks oluliseks momendiks on võtmepaari loomine. Võtmepaari on tarvis turvaliseks sisselogimiseks loodavasse masinasse. Parooli asemel tuleb nimelt kasutada tunduvalt turvalisemat failis asuvat võtit. Vali sobiv nimetus ja lae alla .PEM formaadis võti, mis tuleb salvestada arvutis kindlasse kohta (hiljem on seda tarvis serverisse sisselogimiseks).

Joonis 5. Sisselogimisvõtme genereerimine. Määra sobiv nimetus ja lae võtmefail alla
Edasi tuleb serveri turvalisustaseme määramine - millised pordid milliseks tgevuseks avatuks jäävad. Kindlasti jälgi, et oleks olemas port 80 veebi jaoks ja port 22 administreerimise sisselogimiseks. Vaikimisi peaks kõik õigesti paigas olema. Määra lihtsalt turvalisusgrupi nimetus.

Joonis 6. Turvalisusgrupi loomine. Määra grupi nimetus ja jälge, et pordid 80 ja 22 jääksid avatuks
Nüüd ongi server vajalikul määral konfigureeritud. Vaata seadistused igaks juhuks üle ja pane masin käima.

Joonis 7. Kontrolli masina seadistusi ja käivita vastloodud server
Kui server on käivitunud peaks avanema allolev pilt. Alumisest aknast on näha serverile eraldatud veebiaadress, mis on midagi kujul ec2-79-125-49-3.eu-west-1.compute.amazonaws.com - seda aadressi on vaja serverile ligipääsuks, nii et see tasub kõrvale panna.

Joonis 8. Server on käivitatud. Oluliseks infoks on serveri veebiaadress (Public DNS)
Nüüd ongi server valmis ja käivitatud. Paraku veel brauseriga sellele ligi ei pääse, ennem on vaja teha veel mõningad täiendused serveri tarkvaras (valitud sai ju kõige minimaalsem Fedora Core installatsioon).
Vajaliku lisatarkvara installeerimine
Serveri tarkvara modifitseerimiseks on kõigepealt vaja serverisse sisse logida. Seda saab teha MAC ja Linux platvormil konsoolilt käsuga ssh. Windowsis võib kasutada näiteks programmi Putty.
Serverisse sisselogimine
ssh käsuga sisse logimiseks tuleb terminalis käivitada käsklus
ssh -i andristest.pem root@ec2-79-125-49-3.amazonaws.com
kus
andristest.pemon viide serveri võtmefaili asukohale. Juhul kui fail asub samas kataloogis kus käivitatisshkäsklus, pole vaja kataloogiteed määrata, vastasel juhul aga mingil viisil küll (näiteks/usr/home/andris/andristest.pem)rootkasutajanimi serveris (vaikimisi ongi selleks justroot)ec2-79-125-49-3.amazonaws.comserveri veebiaadress, mille leiab joonis 8 abil (Public DNS)
Vajalike teekide installimine
Fedora Core pakihaldus käib käsuga yum. Selle abil tuleb installeerida esiteks C kompilaator ning Git versioonihaldus. C kompilaator on kohustuslik, kuna seda on tarvis node.js seadistamiseks, aga Git otseselt pole - kasutame seda vaid mugava vahendina node.js lähtefailide serverisse toimetamiseks.
Vajalikud vahendid saab installeerida ssh programmis järgmiste käskudega
yum install gcc-c++ yum install git
node.js seadistamine
Nüüd oleme jõudnud piisavalt kaugele, et node.js tööle saada. Selle jaoks tuleb esiteks vajalikud lähtefailid serverisse kopeerida. Seda saab mugavalt teha käsuga git clone
git clone http://github.com/ry/node.git
Kui node.js lähtefailid on olemas tuleks selle kataloog avada
cd node
Peale mida saab node.js serverisse installida, kasutades järgmisi käsklusi:
./configure make make install
Kui ühtegi veateadet ei tekkinud, ongi node.js serveris olemas. Kui nüüd sisestada käsklus node, peaks avanema interaktiivne node.js konsool, millel saab käivitada kõiki JavaScripti käsklusi. node.js konsoolist saab välja sisestades käsu .exit
Näidisveebiserveri skript
Kõige paremaks testimiseks tasub esimese hooga luua näidisena veebiserveri rakendus. Selle jaoks pole vaja midagi muud, kui kasutada järgenvat skripti. Salvesta see näiteks faili nodeserver.js.
var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.write('Hello...\n'); setTimeout(function(){ response.end(Date()+"\n"); },5000); }).listen(80);
Rakendus seab üles veebiserveri kuulama standard HTTP porti (80) ning kui brauser end selle külge ühendab, tagastab esimese hooga teksti „Hello…“, ootab seejärel 5 sekundit, väljastab teksti hetke serveri ajaga ning sulgeb ühenduse.
Skripti kopeerimiseks serverisse saab kasutada käsklust scp (Windowsi all saab kasutada näiteks WinSCP programmi). Selle jaoks avame teise terminaliakna (esimeses on parasjagu lahti ssh ühendus serveriga), navigeerime kausta kus asub fail nodeserver.js ja saadame selle scp käsu abil serverisse.
scp -i andristest.pem nodeserver.js root@ec2-79-125-49-3.amazonaws.com:~/nodeserver.js
andristest.pemendiselt võtmefaili asukohtnodeserver.jsfail mida soovitakse serverisse kopeeridarootkasutajanimi serverisec2-79-125-49-3.amazonaws.comserveri veebiaadress~/nodeserver.jsaadress kuhu serveris fail kopeerida.~/failinime ees tähendab, et fail kopeeritakse kasutaja kodukausta (see mis avaneb serverisse sisse logides)
Kui endiselt ühtegi veateadet ei tulnud, on kõik üles seadistatud selle jaoks, et serveris veebiserveri rakendus tööle panna, mis hakkaks brausereid teenindama.
Veebiserveri rakenduse käivitamine
Nüüd läheme tagasi esialgse ssh programmi juurde või kui see on suletud, avame ühenduse terminali kaudu uuesti.
Kuna rakenduse fail asub kasutaja kodukataloogis, tuleb esiteks sinna navigeerida. Seda saab teha käsuga
cd ~/
Järgmiseks ongi jäänud viimane samm - rakenduse käivitamine node.js platvormil. Selle jaoks pole vaja teha muud, kui käivitada käsklus
node nodeserver.js
Kui veateadet ei tule ja kursor jääb „õhku rippuma“, siis ongi server töökorras. Nüüd pole muud, kui avada veebibrauser ning sisestada selle aadressireale serveri aadress kujul http://ec2-79-125-49-3.amazonaws.com. Peaks avanema tekst
Hello... Sat Jul 03 2010 22:34:58 GMT+0300 (EET)
Kui brauser näitab sama pilti, siis server töötab!
Mida edasi?
Kui on soov loodud virtuaalserver käima jätta, tasub sellele luua veidi parem veebiaadress, kui Amazoni pakutud pikk tekst. Esiteks oleks vaja selle jaoks luua Elastic IP ning siduda see serveri instantsiga. Kui IP aadress on loodud, saab selle siduda suvalise domeeninimega kui domeeni nimeserveris suunata domeen või selle alamdomeen CNAME või A kirje abil seadistatud IP aadressile. Peale seda saab serverile ligi juba uue ja ilusama veebiaadressiga.
Käidud rada: » notification » nodejs_on_aws