DevOps perusteet 2: Websovellus Linux-palvelimelle
Tässä oppaassa:
- Alkusanat
- Verkkotunnus palvelimelle
- 2.1. Oman verkkotunnuksen rekisteröinti - Namecheap
- 2.1.1. Nimipalvelu (DNS) verkkotunnukselle - Cloudflare
- 2.1.2. Cloudflare DNS-tietueiden lisääminen
- 2.1.3. Cloudflare SSL/TLS Full (strict) -tila
- 2.1.4. Cloudflare välimuisti (caching)
- 2.1.5. DNSSEC
- 2.1.6. Cloudflare sähköpostin uudelleenohjaus
- 2.2. Ilmainen aliverkkotunnus (DuckDNS, No-IP)
- 2.1. Oman verkkotunnuksen rekisteröinti - Namecheap
- Nginx välityspalvelin
- 3.1. Hieman teoriaa...
- 3.2. Nginx asennus
- 3.3. Nginx konfigurointi
- 3.4. Certbot: SSL/TLS-varmenne
- Dockerista lisäturvaa
- 4.1. Dockerin asennus
- 4.2. Dockerfile: Node sovelluksesta Docker image
- 4.3. Docker-kontin käynnistys imagesta
- 4.4. docker compose ja MongoDB:n lisäys
- Full stack -esimerkkisovellus
- 5.1. Full stack -esimerkki: Backend
- 5.2. Full stack -esimerkki: Frontend
- 5.3. Full stack: docker-compose.yaml
- 5.4. Full stack: MongoDB autentikointi
- 5.5. Full stack: Sovelluksen käynnistys ja testaus
- 5.6. Full stack: Node-sovelluksen ylläpito
- 5.7. Full stack: Muutosten julkaisu palvelimelle
- Tietoturva
- Loppusanat, mihin tästä?
- Extrat
- 8.1. MongoDB:n varmuuskopiointi - Azure Storage Account
- 8.2. MongoDB:n varmuuskopiointi - Amazon S3
- 8.3. MongoDB:n varmuuskopiointi - Google Cloud Storage
- 8.4. Dockerfile: Docker imagen optimointi
1. Alkusanat
Tervetuloa DevOps perusteet kurssi 2:een! Tässä kurssissa perustamme olemassaolevalle Ubuntu Linux -virtuaalipalvelimelle tuotantokäyttöä kestävän full stack -pinkan. Stäkkiin kuuluu Docker, Nginx, Node.js ja MongoDB. Kurssi on suoraa jatkoa DevOps perusteet 1: Virtuaalipalvelin pilveen -kurssille.
Lähdemme rakentamaan stäkkiä tekemällä palvelimelle verkkotunnuksen. Vaihtoehtoisesti voit rekisteröidä ilmaisen aliverkkotunnuksen tai käyttää palvelimella jo olemassa olevaa verkkotunnusta. Jatkamme asentamalla nginx-välityspalvelimen sekä certbot-työkalun, jolla saamme sivustolle automaattisesti uusiutuvan TLS-varmenteen. Jos rekisteröit oman verkkotunnuksen, otamme käyttöön Cloudflare DNS-palvelun ja samalla Cloudflaren erinomaiset ilmaispalvelut, kuten suojan palvelunestohyökkäyksiä vastaan (DDoS mitigation) sekä web-välimuistin (caching). Ja tietoturvafriikeille tiedoksi: kyllä, kytkemme DNSSEC:n päälle! Käymme muutenkin läpi mitä tietoturvan näkökulmasta on hyvä ottaa huomioon.
Näiden jälkeen paketoimme Node-prosessin Docker-ympäristöön, josta saamme Dockerin muiden hyötyjen ohessa vielä yhden tietoturvakerroksen lisää. Käymme myös läpi docker compose -työkalun käytön ja lisäämme Dockeriin MongoDB NoSQL tietokannan.
Lopuksi perustamme vielä kokonaisen full stack esimerkkisovelluksen jossa koostamme yhteen kaikki yllä mainitut: MongoDB, REST API backend sekä yksinkertainen frontend.
Ainoa kurssista koituva lisäkulu itse kurssimaksun lisäksi tulee oman verkkotunnuksen rekisteröinnistä (alkaen n. 6€/vuosi riippuen halutusta osoitteesta). Jos haluat, voit ohittaa tämän vaiheen ja hankkia ilmaisen aliverkkotunnuksen esimerkiksi DuckDNS tai No-IP palveluista.
Huomaa, että vaikka tästä kurssista löytyy sekä Node.js että HTML/CSS/Javascript koodia, niin kurssi ei ole koodausopas. Tarvittavat esimerkit löytyvät kurssista, mutta tämän syvemmälle itse koodauksen ei tämän kurssin puitteissa mennä. Varsinaisen koodauksen opettelun jätämme kurssisarjan myöhempiin osioihin. Koodeja voit kuitenkin käyttää ponnahduslautana, jos haluat lähteä opettelemaan backend- tai frontend-koodausta.
1.1. Vaatimukset
Kurssin läpikäyntiä varten tarvitset:
- Ubuntu Linux (virtuaali)palvelimen, johon pystyt luomaan SSH-yhteyden ja johon sinulla on pääkäyttäjäoikeudet (sudo)
- Portit 80/http sekä 443/https auki palvelimella sisääntulevalle liikenteelle
- JOKO: Palvelimelle kiinteän IP-osoitteen joka on tiedossasi
- ...TAI: Palvelimelle muuttumattoman DNS-osoitteen dynaamiselle IP-osoitteelle. Tämän pystyy asettamaan esimerkiksi Azuressa, vaikka Azure ei tarjoa kiinteää IP-osoitetta ilmaiseksi. Muuttumattoman DNS-osoitteen avulla pystymme osoittamaan palvelimelle oman verkkotunnuksen, kiitos Cloudflaren CNAME flattening -ominaisuuden. Palaamme tähän osiossa Cloudflare DNS-tietueiden lisääminen.
- Node.js sovelluksen, josta voimme tehdä Docker imagen. Tähän käy esimerkiksi yksinkertainen "Hello, World" Node/Express-sovellus.
Kaikki yllämainitut käydään läpi DevOps perusteet 1: Virtuaalipalvelin pilveen -kurssissa.
Lisäksi seuraavat taidot ovat hyödyllisiä, mutta eivät pakollisia:
- Kokemus Linuxin komentorivistä
- Kokemus Node.js ohjelmoinnista, esim. Node/Express
- Kokemus HTML/CSS/JavaScript -ohjelmoinnista
Tärkeintä on aito kiinnostus oppaassa käsiteltäviin asioihin sekä kyky itseoppimiseen ja opitun soveltamiseen.
1.2. Tekijästä + kiitokset
Aloitin webbikoodauksen 2000-luvun alussa. Silloin tech stäkki oli PHP/MySQL/HTML/CSS. Javascript oli vielä paha sana ja sitä vältettiin. Opettelin kaiken itse; jo silloin oppaita sun muita alkoi löytyä netistä. *NIX käyttisten kanssa säätämisen alotin samoihin aikoihin; käytössä on ollut mm. Red Hat, Debian ja Net/Free/OpenBSD. Kaikkeen oli hirveä kiinnostus ja tekemisen meininki.
Ekan ihan oikean kaupallisen käytön "web sovelluksen" tein vuosina 2003-2005 Raskassarja Groupille, se oli tilausjärjestelmä heidän jäsenyritysten sisäiseen käyttöön. Sitä tehdessä taisin olla jotain 16-18 kesäinen. Yhtäjaksoisesti en ole ollut alalla, sanoisin että tänä päivänä kokemusta on yhteensä n. 10 vuotta.
Nykyisin asun Hollolassa maaseudulla avopuolisoni ja kahden koiran kanssa. Minulla on "yhden miehen" osakeyhtiö Nurminen Development Oy Ltd ja teen konsulttimuotoisesti tuntitöitä IT-alan yrityksille. Lisää minusta ja töistäni voi lukea virman sivuilta osoitteesta https://nurminen.dev. Vapaa-ajalla tykkään "harrastella" mm. puutöitä.
Kurssin teossa ovat auttaneet
- Mika Peltomaa / Phenomenal Development Oy Ltd – https://phenomenal.fi/
Kurssin maksujärjestelmä. Palaute ja vinkit liittyen kurssin sisältöön. Cloudflare sekä tietoturvaan liittyvät hyvät käytännöt. - Erik Hausen – https://portfolio.erikhausen.com/
Palaute ja vinkit liittyen kurssin sisältöön sekä ulkoasuun.
2. Verkkotunnus palvelimelle
Aloitetaan full stack -palvelimen kasaus luomalla verkkotunnus. Verkkotunnuksen tarkoituksena on tietenkin toimia sovelluksen osoitteena, kun sivustolle mennään selaimella. Oma verkkotunnus luo ammattimaisuutta ja katu-uskottavuutta sivustolle tai sovellukselle. Testaus- tai harrastelukäyttöön taas voi käyttää ilmaista aliverkkotunnusta.
Osta kurssi
Osta tämä kurssi hintaan 14,90€ ALV 25,5% (kertamaksu, ikuinen lukuoikeus).
Kirjaudu sisään
PALVELINVIRHE; osto ja kurssin avaus pois käytöstä. Yritä ladata sivu uudelleen. Jos ongelma jatkuu, ota yhteys kurssit@nurminen.dev tai 050 505 4611 / Riku (arkisin klo 14 jälkeen).