Full stack projekti – osa1 – Palvelimen asennus

Tehdään seuraavaksi hieman pidempi Full stack web-sivusovellus projekti. Edetään web-sivu kehityksessä eteenpäin ja aletaan miettimään, miten saadaan oma “web-app” eli verkkosovellus julkaistua internettiin, jotta käyttäjät pääsevät oikeasti käyttämään sitä. Tässä on aika paljon työtä, siksi kannattaakin jakaa tämä harjoitus useampaan blog-postaukseen. Tämä on sarjan ensimäinen osa, jossa alustetaan palvelin internettiin, valmiiksi kehitystä varten.

Aika harvalla on nykyisin käytössä omia palvelimia eli serverikoneita kytkettynä Internettiin. Mutta ei hätää, Internetistä löytyy nykyisin paljon palvelun tarjoajia, jotka tarjoavat mahdollisuutta luoda oma virtuaalinen palvelinkone, hyvin pienillä kustannuksilla. Tällöin tietysti se fyysinen palvelin sijaitsee jossain päin maailmaa olevassa konesalissa, josta me vuokrataan ajoaikaa sopimuksen mukaisesti.

Kokeillaan seuraavaksi, Oracle Cloud:n tarjoamaa ilmaista virtuaalikonetta pilvipalveluna ja opetellaan, kuinka sinne saadaan Full stack “MERN” tyyppinen web-sivusovellus pyörimään. (MERN = MongoDB tietokanta, Express webserver, React käyttöliittymä, NodeJS javascript toteutus.)

Ensin täytyy tietenkin luoda omat tunnukset palveluun, jotta päästään luomaan uusi virtuaalikone pilveen. Oracle:n konesalista, vuokrataan palvelu ja määritetään palvelun taso. Maksuton taso, mahdollistaa pienimuotoisten sovellusten testaamisen ja julkaisun. Myöhemmin kun paremmin tiedetään, kuinka paljon käyttäjiä omalla web-sivusovelluksella tulee olemaan, voidaan palvelun tasoa nostaa. Eli maksamalla saa enemmän tehoa ja parempaa palvelua, mutta alkuvaiheessa kehitystä ja kokeilua ei kannata käyttää vielä suuria summia. Tunnusten luontivaiheessa kysytään kyllä luottokortin tietoja, mutta jos käytetään “Free Tier” sopimusta, ei sieltä veloiteta mitään. Eli siinä mielessä on turvallista kokeilla ja opetella, ilmaiseksi.

Kun on saatu onnistuneesti luotua tunnukset pilvipalveluun ja kirjauduttua sisään voidaan tämän jälkeen luoda uusi virtuaalipalvelin “Create a new Instance” välilehdeltä.

Palvelimen nimi ja tyyppi voidaan valita halutuiksi. Sekä tietysti käytettävä Linux tai Windows käyttöjärjestelmän “Image – Levykuva”, josta palvelin asentuu meille käyttövalmiiksi.

“Canonical Ubuntu 20.04 Minimal” on perusvarma valinta, joka on täysin ilmainen, kun muistia on yksi Gigatavu käytössä ja OCPU count on yksi, eli yksi prosessoriydin käytössä.

Kannattaa tarkastaa, että “Networking – verkkoyhteysvalinnassa” on valittuna “Assign a public IPv4 address: Yes”. Joka tarkoittaa tietysti sitä, että virtuaalipalvelimesta on pääsy Internettiin, ja se saa julkisen IP-verkko-osoitteen.

Tärkein asia nyt uutta virtuaalikonetta luotaessa on, että “Add SSH keys” valintakentässä, valitaan esimerkiksi “Generate a key pair for me”. Tämä tarkoittaa sitä, että jo tässä vaiheessa luodaan SSH-avainpari, privaatti ja julkinen avain, jotka tallentuvat sinne meidän tulevalle virtualliserverille talteen. Mutta sen lisäksi, nyt tässä on mahdollisuus “Save private key” painiketta painamalla, tallentaa se salainen privaatti avain myös meidän omalle tiekoneelle talteen. Se kannattaakin tehdä tässä vaiheessa. Samoin “Save public key” linkistä voidaan tallentaa julkinen salausavain. Selain tallentaa nämä yleensä “Downloads” kansioon, josta nämä tiedostot kannattaa kopioida varmaan talteen, ja pitää varmassa tallessa.

Näitä tiedostoja ei kannata hukata, eikä jakaa ulkopuolisille. Näiden avulla myöhemmin, meidän on helppo käyttää tätä virtuaalista palvelinkonetta, jonka juuri luomme.

Uuden virtuaalipalvelinkoneen luominen kestää muutamia minuuttaja, lopuksi pitäisi tulla ilmoitus, että “kaikki valmista”, ja Oracle Cloud websivu ohjautuu hallinnointiin, josta päästään tarkkailemaan palvelimen tietoja ja ominaisuuksia.

Nähdään että juuri luotu palvelinkoneemme, sijaitsee esimerkiksi Saksassa Frankfurt:ssa ja sillä on julkinen IP-osoite. Metrics-välilehdeltä nähdään, miten palvelimen prosessori ja muistinkäyttö elävät, kun nyt seuraavaksi lähdemme asentamaan sinne lisää palveluja. (Node.js, Express, Mongoose, React..)

“General information”, välilehdeltä nähdään se julkinen IP-osoite. Se kannattaa kopioida itselle nyt ylös, kirjoittaa vaikka vihkoon talteen. “Subnet”-kohdalta, voidaan myöhemmin lisätä tietoturvasääntöjä, jotta meidän palvelinkone pystyy palvelemaan internettiin, ulospäin käyttäen hyväksi tiettyjä avoimia porttiyhteyksiä.

Seuraavaksi, herää kysymys, miten voidaan helposti ottaa yhteys tähän meidän juuri luotuun palvelimeen, siirtää sinne tiedostoja ja tietoa. Sekä asentaa sinne se Node.js, Mongoose ja muita tarvittavia lisäosia.

Tähän on hyvä tapa olemassa, “SSH”, eli “secure shell”. Perinteisesti esimerkiksi kouluissa opetetaan, että Putty:llä saadaan yhteys Linux servereihin Internetissä.

Yksi hyvä/parempi apuvälineohjelma Windows:lle on MobaxTerm. Sen avulla on myös helppo ottaa SSH-yhteys linux serverille ja siinä on paljon hyviä lisäominaisuuksia, mitä ei esimerkiksi Putty:ssä ehkä ole.

MobaXterm:llä tai vastaavalla ssh-yhteysohjelmalla, “luodaan uusi sessio”. Ja nyt näppäillään virtuaalipalvelimen julkinen IP-osoite “Remote host” kenttään. Valitaan käyttäjänimeksi “ubuntu”. Ja nyt “Advanced SSH settings” välilehdeltä, valitaan “Use private key”, eli nyt käytetään sitä privaattia salausavainta, jonka hetki sitten latasimme ja tallensimme varmaan paikkaan, omalla koneella. Tämän salaisen tiedoston avulla, meidän ei tarvitse jatkossa kirjoittaa salasanaa, joka ainoa kerta kun yhdistämme meidän omalle pienelle palvelinkoneelle.

Lopuksi painetaan “OK” painiketta, ja MobaXtermin pitäisi nyt luoda SSH-yhteys virtuaalipalvelimelle Saksassa.

Yleensä se onnistuukin varsin nopeasti. Palvelinkone yleensä kertoo, mistä IP-osoitteesta viimeksi on otettu yhteys.

Nyt MobaXterm:n avulla on helppoa esimerkiksi luoda uusia kansioita, siirtää tiedostoja yms. Vasemmalla puolella näkyy aina Tiedostonäkymä, jossa voi hiiren avulla liikkua hakemistosta toiseen, ja hiiren oikealla napilla, voi luoda uuden kansion tai tekstitiedoston. Oikealla puolen näkyy “musta terminaali ruutu”, johon voidaan kirjoittaa terminaali komentoja.

Kun “pelataan Linux palvelinkoneiden kanssa”. Aina tietysti ensimäisenä, kannattaakin päivittää paketit.

sudo su        (tällä komennolla pääsee super user:ksi eli root käyttäj.)
apt update     (tämä päivittää paketti-tiedot, ubuntun palvelimelta.)
apt upgrade    (tämä päivittää Linux käyttöjärjestelmän paketit ajan tasalle.)

Seuraavaksi voidaan lähteä asentamaan niitä paketteja, joita tulemme käyttämään, kun teemme tällä omalla pienellä virtuaalipalvelinkoneella Full stack web-kehitystä.

apt install nodejs
apt install npm
apt install yarn
apt install mc

Nyt jotta päästään keskustelemaan virtuaalipalvelimelta –> Internettiin, ulkomaailmaan. Meidän täytyy vielä tarkastaa turvallisuus verkkosääntöjä “Ingress”. Valitaan ensin “Default Security List for xxx”, täältä pääsee muokkaamaan portteja auki, internettiin.

Lisätään uusi “Ingress rules” sääntö, ja kirjoitetaan “Source CIDR” kenttään “0.0.0.0/0”. Tämä tarkoittaa, että voidaan keskustella näistä uusista porteista, mitä ollaan lisäämässä, minne vaan Internetissä.

Sitten “Destination Port Range” kenttään kirjoitetaan ne porttinumerot, jotka halutaan avata. Esimerkiksi 80, 81 ja 27017. (27017 on mongoose:n käyttämä, sen kautta voidaan käyttää MongoDB tietokantoja.)

Alkuvaiheessa kehitystä, voidaan kokeilla yksinkertaisesti laittaa Node.js Express web-palvelu vastaamaan portista 80 ulos, Internettiin. Kokeilla saadaanko sen kautta web-sivu näkyville, siitä julkisesta IP-osoitteesta, joka tälle virtuaalipalvelimelle luotiin.

Yksi asia mikä myös kannattaa muistaa tarkastaa on Ubuntu server palvelimen palomuuri, siellä Linux:n käyttöjärjestelmän puolella. (Sekin saattaa olla päällä, ja blokata omalta osaltaan portteja, joten voi tulla hetki, jolloin ihmettelee, miksi mikään ei toimi, vaikka Oraclen Cloud hallinnassa pitäisi olla auki..)

MobaXterm:n avulla, voidaan terminaalissa komentaa esimerkiksi;

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F

Näillä komennoilla, saadaan hetkeksi palomuuri pois päältä Ubuntu Server käyttöjärjestelmässä. Ja voidaan testata, että saadaanko nyt portista 80, web-sivu näkymään ulos Internettiin.

Jos saadaan, voidaan iptables komennoilla, tallentaa myöhemmin palomuuriasetukset talteen. Ja asettaa turvallisemmat asetukset, jossa kaikki muu paitsi halutut portit on kielletty.

Jatketaan Full stack projektiharjoitusta seuraavaksi, luomalla kehitysympäristö Node.js:lle ja käyttäen Github:ia versionhallintana. Tästä kannattaakin kirjoittaa jo oma blog-postaus.

Lisää tietoa Oracle:n Cloud pilvipalvelusta löytyy esimerkiksi youtube videoista;

One thought on “Full stack projekti – osa1 – Palvelimen asennus

Comments are closed.