Linux Palvelimet 2022
ict4tn021-3020
Learn to manage your own Linux server – in 8 weeks. Remotely, in evenings.
Beginners welcome. Excellent feedback. 4.8 out of 5. Course is in Finnish, 100% remote.
Course name and code: | Linux palvelimet ict4tn021-3020 |
Timing | 2022 period 1 early autumn, w34-w41 |
Credits | 5 cr |
Classes | Fri 08:15 - 13:45, online, mandatory participation |
Max students | 30 (45 enrolled, queue started) |
Language | Finnish (+reading material in English) |
Remote | Yes, fully remote |
Feedback | 4.8 / 5 Excellent feedback |
Services | Moodle, Jitsi, Laksu |
First class | 2022-08-26 w34 Fri 08:15, Tero emails video conference link |
The course is in Finnish (and requires full fluency in Finnish), so the rest of this page is in Finnish.
Tavoite
Aloita nollasta. Opiskele 8 viikkoa ja hallitset omaa Linux-palvelinta. Opintojakson suoritettuaan opiskelija:
- Osaa hallita Linuxia palvelimena
- Osaa tehdä tärkeimmät asetukset tärkeimmille palvelimille (Apache, OpenSSH)
- Osaa asentaa www-ohjelmointiin sopivan alustan
- Osaa tehdä itselleen uusia asetuksia palvelinohjelmistoihin ohjeiden avulla
- Tietää esimerkkejä palvelintilan tarjoajista ja hinnoista sekä fyysisten palvelinten vastaavista ominaisuuksista
Osallistumiseen tarvitaan
- Jitsi-videokonfferenssiin: tietokone, kuulokemikrofoni, kamera, internet-yhteys.
- Linux-käyttöön: tietokone, jolla voit ohjeiden mukaan asentaa virtuaalikoneen ja Linuxin (edistyneemmät voivat toki asentaa Linuxin ihan oikean, erillisen koneen raudalle).
- Aikaa: seitsemän päivää oppitunteihin + joka viikko runsaasti aikaa läksyihin (oppitunneille pitää osallistua aktiivisesti ja kaikki läksyt palauttaa)
Linuxia ei tarvitse osata yhtään. Omalle tietokoneelle pitäisi osata asentaa ohjelmia, esimerkiksi virtuaalikone. Ja tietysti ratkoa tavallisia tietokoneongelmia kokeilemalla ja wepistä tietoa hakemalla.
Aikataulu
Kurssin kahdeksan kertaa jakautuvat neljään osaan: peruskäyttö, demonit, automatisointi ja loppuhuipennus.
Oppitunnit ovat perjantaisin 8:15 - 13:45 videokonfferenssina.
Päivä | Aihe |
---|---|
2022-08-26 w34 pe | 1. Asennus, lisenssit. |
2022-09-02 w35 pe | 2. Komentokehote. Ylläpito, paketinhallinta. |
2022-09-09 w36 pe | 3. Apache-weppipalvelin. |
2022-09-16 w37 pe | 4. Julkisen palvelimen ja nimen vuokraaminen |
2022-09-23 w38 pe | 5. Ohjelmat weppipalvelimella, hei Python Django. |
2022-09-30 w39 pe | 6. 08:15 Pasi Lammi, debug. Django tuotantoasennus. |
2022-10-07 w40 pe | 7. Tietokantapalvelin, PostgreSQL. |
2022-10-14 w41 pe | 8. Arvioitava lopputehtävä. |
Oppituntien aiheisiin voi tulla muutoksia kurssin aikana.
Anna palautetta
- Vapaamuotoinen palaute kommenttina tämän kurssisivun perään.
Vapaamuotoiseen palautteeseen saa kirjoittaa mitä vain, eikä kysymyksiä tarvitse toistaa. Mutta tässä vinkiksi:
- Opitko jotakin – eli osaatko nyt sellaista, mitä et osannut ennen kurssia?
- Teitkö jotain ensimmäistä kertaa? Vuokrasit koneen julkiseen Internetiin, asensit Linuxin, löysit tunkeutumisyrityksen...
- Oliko opittu hyödyllistä? Luuletko, että sille on käyttöä esim. tulevaisuudessa töissä tai kotona?
- Miten voisin parantaa kurssia?
- Viihdyitkö kurssilla?
- Mitä pidit labrasta?
- Suosittelisitko kurssia tai oletko jo suositellut? Kenelle kurssi sopisi? Koulutoverille tai kollegalle?
- Numeerinen palaute Haaga-Helian palautejärjestelmään MyNetissa
Numeerisen palautteen avulla mm. verrataan Haaga-Helian kursseja toisiinsa.
Numeeriset: Asteikko 1-välttävä (huonoin) ... 5-kiitettävä (paras)
- Oma aktiivisuutesi opiskelussa 1-5
- Osaamistavoitteiden saavuttaminen 1-5
- Työskentelytavat tukivat oppimista 1-5
- Opiskeluympäristö tuki oppimista 1-5
- Hyödyllisyys työelämään 1-5
Avoimet kysymykset (näihin voi myös kopioida samat vastaukset jotka kirjoitit aiemmin)
- Mitkä asiat edistivät oppimistasi?
- Miten kehittäisit toteutusta / toteutuskokonaisuutta, jotta osaamistavoitteet saavutettaisiin paremmin?
Kokonaisarviosi toteutuksesta / toteutuskokonaisuudesta 1-5
Suosittelisitko 1 - 10 (1 en varmasti, 10 aion varmasti suositella tai olen jo suositellut)
Kiitos palautteesta ja jännittävästä kurssista! Seuraavilla kursseilla nähdään.
Peruskäyttö
1. Asennus, työpöytä ja lisenssit FSF Free Software Definition, Rise of Open Source: Chapter 5. Raportin kirjoittaminen.
2. Komentokehote, ylläpito ja paketinhallinta w04 Command Line Basics, Commands for Admin.
Demonit
3. Apache-weppipalvelin Install Apache Web Server on Ubuntu Instant Firewall – sudo ufw enable.
4. Julkisen palvelimen ja nimen vuokraaminen Apachen oletussivu, Monta nimeä samaan IP-osoitteeseen. Virtuaalipalvelimia vuokrataan: Linode (associate link), Digitalocean, Amazon (monet Amazonin palvelut skaalautuvat automaattisesti, maksimihinnan rajoittaminen voi olla tarpeen). Julkisia nimiä vuokrataan: NameCheap, Gandi. Harjoittelua varten voit kokeilla myös http://www.dot.tk/ (ei tärkeille nimille). First Steps on a New Virtual Private Server – an Example.
Automatisointi
5. Ohjelmat weppipalvelimella. Palvelinpään ohjelmointi, Python Flask framework. Flask-asennus.
6. Shell scriptit, bash-skriptaus. Shell Scripting, aboutusers.sh, Over the Wire: bandit
Loppuhuipennus
7. Kertaus
8. Arvosteltava lopputehtävä
Suhde muihin kursseihin
Tälle kurssille ei vaadita mitään kursseja esitietoina. Linuxia ei tarvitse osata yhtään. Omalle tietokoneelle pitäisi osata asentaa ohjelmia, esimerkiksi virtuaalikone. Ja tietysti ratkoa tavallisia tietokoneongelmia kokeilemalla ja wepistä tietoa hakemalla.
Tämä kurssi (Linux palvelimet ict4tn021) on esitietona monille kursseille, esimerkiksi
Ja pilvessähän palvelimet ovat pääosin Linuxeja, joten noilla kursseilla tästä lienee hyötyä.
Vanhoja kurssitoteutuksia
Vanhoilta kurssitoteutuksilta löytyy runsaasti opiskelijoiden palautteita ja linkkejä kotitehtävien esimerkkiratkaisuihin.
- Linux Server Course - Linux palvelimet ict4tn021-3014 - alkukevät 2021
- Linux Server Course - Linux palvelimet ict4tn021-3010 Aikataulu
- Aikataulu – Linux palvelimet ict4tn021-3004 ti – alkukevät 2019 – 5 op
- Aikataulu – Linux palvelimet ict4tn021 8-ma, 7-ti ja 6-to – alkukevät 2018 – 5 op
- Aikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op
- Aikataulu – Linux palvelimet ict4tn021-1 – 5 op – alkusyksy 2016.
Vanhoja arvioitavia laboratorioharjoituksia:
- Final lab test for group 4-Tuesday.
- Final lab test for group 5-Thursday.
- Arvioitava laboratorioharjoitus – Linux palvelimet ict4tn021-2 (uusi OPS) alkukeväällä 2017 p1
- Arvioitava laboratorioharjoitus – Linux palvelimet ict4tn021-3 (uusi OPS) alkukeväällä 2017 p1
Suoritukset
- Läksyt
- Aktiivinen etäosallistuminen opetukseen
- Lopputehtävä (ilmoitetaan myöhemmin)
Arvosana perustuu kokonaisarvioon kurssisuorituksista.
Läksyt
Kotitehtäväraporttien linkit palautetaan 24 h ennen lähiopetuskerran alkua Moodleen.
Läksyt tehdään ja raportoidaan kunkin tunnin jälkeen. Tehtävät saa julkaista missä haluaa ja palauttaa linkin Moodleen. Kotitehtäväraportin tulee olla suoraan selaimella katseltavassa muodossa, tavallisena HTML-weppisivuna. Ei odt, ei odp, ei ppt, ei docx, ei doc, ei pdf. Kotitehtäviä ei voi palauttaa sähköpostitse. Linkit palautetaan Moodleen, mutta itse raportteja ei voi palauttaa Moodleen. Maksutonta kotisivutilaa saa esimerkiksi WordPress.com (helppo) ja GitHub.com.
Läksyt käydään läpi seuraavalla tapaamiskerralla, ratkotaan yhdessä ongelmia ja annetaan suullista palautetta. Arvosana kotitehtäväpaketista tulee vasta kurssin lopuksi, mutta tehtävät tulee silti palauttaa aina vuorokautta ennen seuraavia tunteja. Kurssilta poistetaan ne, jotka eivät ala suorittaa kurssia palauttamalla tehtäviä. Julkaiseminen on vapaaehtoista, mutta erittäin suositeltavaa. Jos et jostain syystä uskalla tai muuten halua julkaista, voit laittaa työn weppisivulle salasanan taakse (kaikille kotitehtäville sama salasana) ja jakaa tämän salasanan kurssilaisten kanssa. Jos tuntien yhteydessä järjestetään testejä läksyjen aiheista, niiden pisteet sisältyvät arvostelun kohtaan läksyt.
Läksyt pitää tehdä tietokoneella kokeilemalla ja raportoida tapahtumien kulku, ellei kyseisessä alakohdassa erikseen muuta lue.
Muuta: Jos kurssilla otetaan riistiinarviointi käyttöön, määräaika siirtyy aiemmaksi. Jos haluat, voit laittaa Moodlen lisäksi linkin läksyihisi tämän sivun kommentteihin, jolloin sivusi saattaa nousta hakukoneissa.
Alustavat tehtävänannot
Tehtävät ovat virallisia vasta, kun ne on annettu tunnilla. Tehtävänannot muuttuvat vielä, koska tuntien aiheetkin voivat muuttua, ja lopullisessa arvioinnissa tehtävät arvioidaan niiden annettujen, virallisten tehtävien mukaan.
h1
- x) Lue ja tiivistä. Tiivistelmäksi riittää muutama ranskalainen viiva per artikkeli. (Tässä z-alakohdassa ei tarvitse tehdä testejä tietokoneella)
- FSF: FSF Free Software Definition
- Karvinen 2021: Install Debian on VirtualBox
- Karvinen 2016: Raportin kirjoittaminen
- Välimäki 2005: Rise of Open Source: 5 Open Source Licenses as Alternative Governance Mechanisms: 5.1.1 - 5.1.4 (sivu 113 - 121)
- a) Asenna Linux joko 1) VirtualBoxiin (helpompaa) tai 2) Kokeile omaa Linux-tikkua raudalla. Tämä kohta ei vaadi asentamista suoraan raudalle (koneelle ilman virtualisointia) – jos kuitenkin asennat, ota ensin varmuuskopiot. Jos sinulla on jo Linux virtuaalikoneessa, voit kokeilla tikkua raudalla tai tehdä toisen asennuksen raportointia varten.
- b) Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’). Selitä listaus.
- c) Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa. Ota ruutukaappaus.
- d) Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa.
- e) Vapaaehtoinen lisätehtävä: Listaa käyttämäsi ohjelmat (esim. MS Word), kunkin ohjelman käyttötarkoitus (esim. Tekstinkäsittely) ja vastaava vapaa Linux-ohjelma (esim. LibreOffice Writer). Jos johonkin tarkoitukseen ei löydy vapaata Linux-ohjelmaa, listaa sekin.
- f) Vapaaehtoinen lisätehtävä: varmuuskopioi tiedostosi (voit käyttää esimerkiksi ulkoista USB-levyä)
Vinkkejä
- Tiivistelmään kannattaa lisätä yhtenä viivana oma huomio, ajatus tai kysymys artikkelista
- Live-tikkua kannattaa pitää aina mukana. Tikun teko: Windows: Rufus; Linux: gnome-disk-utility tai edistyneille dd. 'sudo apt-get update && sudo apt-get -y install gnome-disks-utility; gnome-disks'
- Ohjelmien asennus onnistuu aptilla: 'sudo apt-get update', 'apt-cache search vector illustration', 'sudo apt-get -y install inkscape'. Seuraavalla tunnilla puhutaan näistä tarkemmin, mutta ainahan voi kurkistaa komentoja jo etukäteen.
- Kotisivutilaa saa helposti ja mainosrahoitteisesti Wordpress.com:sta ja ilmaiseksi mutta haastavammalla käyttöliittymällä Githubista.
- Raporttia kannattaa kirjoittaa koko ajan, samalla kun tekee. Mitä teit, mitä tapahtui, mitkä ovat päätelmät.
- Linuxille etsitään tietysti Linux-ohjelmat. Mieluiten ilmaiset ja vapaat ohjelmat. Ne ovat eri kuin Windowsille, esimerkiksi suljettulla rajoittavalla lisenssillä Illustrator, vapaa vastine Linuxille Inkscape.
- Muista viitata kaikkiin käyttämiisi lähteisiin: kurssiin, läksyjen tehtävänantoon, artikkeleihin, toisten kotitehtäväraportteihin, weppisivuihin, man-sivuihin... Suorat lainaukset (esim. tehtävänanto) tulee merkitä suoriksi lainauksiksi vaikkapa lainausmerkein.
- Jos jäät jumiin: tee, raportoi ja palauta kaikki kohdat, jotka osaat. Raportoi jumiin jäänyt kohta erityisen tarkasti virheilmoituksineen. Katsotaan tunnilla yhdessä ratkaisut. Ja kahdeksan viikon päästä osaat Linuxia!
h2
CLI
x) Lue ja tiivistä. Tiivistelmäksi riittää muutama ranskalainen viiva per artikkeli. (Tässä z-alakohdassa ei tarvitse tehdä testejä tietokoneella)
- Karvinen 2020: Command Line Basics Revisited
- YCombinator Hacker News, vapaavalintainen artikkeli kommentteineen Linuxin komentokehotteesta (Kommentit aukeavat siitä pienestä "420 comments" linkistä. Riittää, kun silmäilet artikkelin ja kommentit soveltuvin osin, osa voi olla kirjan mittaisia etkä ehdi tässä lukea niitä kokonaan. Samoin tiivistelmäksi riittää muutama bulletti, ei tarvitse kattaa koko sisältöä)
a) FHS. Esittele kansiot, jotka on listattu "Command Line Basics Revisited" kappaleessa "Important directories". Näytä kuvaava esimerkki kunkin tärkeän kansion sisältämästä tiedostosta tai kansiosta. Jos kyseessä on tiedosto, näytä siitä kuvaava esimerkkirivi. Työskentele komentokehotteessa ja näytä komennot, joilla etsit esimerkit.
b) My CLI. Keksi jokin asia, jota haluaisit tehdä komentokehotteessa. Etsi ja asenna komentokehotteen paketinhallinnasta ohjelmat, joilla asian voi ratkaista. Asenna ainakin kolme itsellesi uutta komentorivillä (command line interface, CLI) tai tekstitilassa (text user interface, TUI) toimivaa ohjelmaa. Näytä, miten kuvitteellista ongelmaa voi ratkoa näillä ohjelmilla. Voit valita jonkin helpon tai yksinkertaistetun esimerkin.
c) Tukki. Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.
d) The Friendly M. Näytä 2-3 kuvaavaa esimerkkiä grep-komennon käytöstä. Ohjeita löytyy 'man grep' ja tietysti verkosta.
e) Pwnkit. Päivitä kaikki Linux-ohjelmat ja asenna tietoturvapäivitykset.
y) cdlspwd! Opettele tärkeimmät komennot ulkoa ja harjoittele suurella määrällä kokeiluja. Opeteltavat komennot ovat artikkelissa Karvinen 2020: Command Line Basics Revisited (tätä y-alakohtaa ei tarvitse raportoida lainkaan)
Bonus: Recursive. Pystytkö etsimään kaikki rivit, joilla lukee Tero isolla tai pienellä, kun tiedostoja on sisäkkäisissä kansioissa? (Eli tutkimaan jonkin kansion kaikkine alihakemistoineen)
g) Sshecrets. Vaikeampi vapaaehtoinen bonuskohta, ei ole opetettu vielä: Asenna SSH-demoni. Kokeile omalla ssh-palvelimellasi jotain seuraavista: ssh-copy-id, sshfs, scp tai git. (Helpoin lienee scp: ‘scp foo.txt tero@example.com:’)
Vinkkejä:
- Tärkeimmät komennot oppii tietysti ulkoa väkisinkin, jos käyttää Linuxia päivittäin töissä. Kurssilla on tarkoitus oppia ne nopeammin, joten opettele ne tässä.
- Näitä komentoja käytetään kaikissa tulevissa harjoituksissa (ja joka päivä Linux-uralla)
- Ensin kannattaa selvittää ja ymmärtää, mitä komennot tekevät
- Sitten kannattaa opetella ne ulkoa (sanoja on vähemmän kuin ranskan sanakokeessa)
- Lopuksi kannattaa harjoitella niitä suurella määrällä käytännön harjoituksia komentokehotteessa
- Päivittäinen harjoittelu nopeuttaa oppimista
- Kaikki haastavammat tehtävät ovat paljon helpompia, kun komennot osaa automaatiotasolla. (Demonien asentaminen ja hallinta, tavallinen ylläpito, vianselvitys...)
- Lokirivit
- Helppo tapa aiheuttaa lokitapahtumia on autentikointi. Esim 'sudo -k' unohtaa, että olit jo antanut salasanan sudoon. Nyt voit yrittää kirjautua väärällä ja oikealla salasanalla. Keksitkö muita tapoja?
- Pääloki on /var/log/syslog
- Kannattaa lukea komennolla, joka ei vahingossa muokkaa lokeja: tail, less, cat, grep
- Analysointi tarkoittaa, että kerrot kaiken, mitä rivistä voit päätellä
- Arvioi tarvittaessa varmuuden astetta, onko kyseessä tieto ja lähdeviittaus, tieto, päättely, arvaus tms.
- Paljon analyysia, vähän lokia
- Jos ajatuksena on käyttää hakukoneita, palvelimilla se haettava juttu lukee yleensä lokissa
- man man
- man-sivut käyttävät less-komentoa
- space seuraava sivu, b edellinen sivu, q quit, / hakee
- kannattaa käyttää spacea liikkumiseen, nuolinäppäimillä vain hienosäätöä
- alussa on Synopsis, lopussa on Examples ja Files.
- nämä ovat referenssidokumentaatiota, jokaista lippua (-abcABC...) ei ole järkevää tai mahdollista opetella ulkoa
- Tarkista, että raporteissasi on lähdeviitteet: kurssiin, tehtävänantoihin, muiden opiskelijoiden raportteihin weppisivuihin, man-sivuihin ja kaikkeen muihinkin käyttämiisi lähteisiin.
- Päivitykset
- sudo apt-get update; sudo apt-get dist-upgrade
- Uudelleenkäynnistys tarvittaessa
h3
Apassi
Tee viisi vapaavalintaista kohtaa. Säädä vaikeustaso oikeaksi: helpoimmat ovat ensimmäiset a b c d e. Jos osaat jo perusteet, tee useampia tai vaikeampia kohtia. Tarkoitus on, että tehtävät tehtyäsi osaat enemmän kuin osasit ennen. Tee tehtävät alusta lähtien koneella, vaikka olisitkin kokeillut samaa asiaa tunnilla.
- a) Asenna Apache ja osoita testillä, että se toimii.
- b) Laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.
- c) Tee validi HTML5 sivu, ja testaa sen toiminta https://validator.w3.org
- d) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit eli kerro jokaisesta rivistä niin paljon yksityiskohtia kuin osaat.
- e) Vaihda Apachen esimerkkisivu johonkin lyheen sivuun niin, että vanha esimerkkisivu ei näy. (Tämä lienee ainoa kohta, jossa ikinä muokkaat weppisivua pääkäyttäjän oikeuksin. /var/www/html/index.html)
- f) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.
- g) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi
- h) Asenna ja kokeile PhpMyAdmin:a tai jotain muuta valmista weppiliittymää tietokantojen hallinnointiin.
- i) Tee palvelimella ajettava weppiohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)
- j) Tee palvelimella ajettava weppiohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan
- k) Tee Apachelle uusi sivu, joka näkyy suoraan palvelimen pääsivulla, mutta jonka sivuja voi muokata normaalin käyttäjän oikeuksilla (name based virtual host, DocumentRoot käyttäjän kotihakemistoon).
- i) Kuinka monta eri HTTP Status:ta (200, 404, 500…) saat aiheutettua lokeihin? Selitä, miten aiheutit tilanteet ja analysoi yksi rivi kustakin statuksesta.
- l) Asenna LAMP (Linux, Apache, MySQL, PHP). Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (Voit aloittaa tilanteesta, jossa Linux-käyttöjärjestelmä on jo asennettu, mutta ei muita (AMP) osia.
- m) Kokeile jotain Flaskin uutta ominaisuutta flask-testipalvelimessa. Voit kokeilla esim. muotteja (templates), tietokantaa tai syötteiden ottamista lomakkeilta (forms).
- n) Asenna Python Flask + PostgreSQL + Apache mod WSGI. Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (vaikea) ja voit muokata sitä ilman pääkäyttäjän oikeuksia.
- o) Laita kaksi nimeä samaan IP-osoitteeseen. Voit simuloida nimipalvelun toimintaa /etc/hosts -tiedoston avulla. Eli niin, että samalla palvelimella osoitteella teronlenkkisivu.com tulee eri sisältö kuin osoitteella opipentest.com.
h4
Real life
Valitse sellaiset tehtävävaihtoehdot, että voit raportoida ne samalla tehdessä (ei muistelemalla).
- x) Lue ja tiivistä. Tiivistelmäksi riittää muutama ranskalainen viiva per artikkeli. (Tässä z-alakohdassa ei tarvitse tehdä testejä tietokoneella)
- a) Pilvi. Vuokraa ja asenna oma julkinen palvelin Internetiin. Vuokraa nimi osoittamaan siihen. (Jos sinulla on jo oma palvelin, ks kohta b. Jos et halua vuokrata palvelinta, ks kohta c. Jos haluat kokeilla vuokrattavia palveluita ilmaiseksi, voit käyttää GitHub Education pakettia tai eri pilvioperaattoreiden ilmaisia tutustumistarjouksia.)
- b) Handed over. Vaihtoehtotehtävä, korvaa kohdan a. Asenna uusi palvelin vanhan rinnalle, ja laita domain-nimi osoittamaan sen IP-osoitteeseen. Silloin vaihto koneiden välillä menee ilman katkoa. Muista poistaa vanha palvelin, kun et enää tarvitse sitä, sillä useimmat pilvioperaattorit laskuttavat myös sammutetuista palvelimista.
- c) Simulated. Vaihtoehtotehtävä, korvaa kohdan a. Suosittelen mieluummin tekemään a tai b-kohdan, koska vuokrausta ei voi harjoitalla vuokraamatta. Kokeile virtuaalikoneiden tekoa vagrant:lla omalla paikallisella koneellasi. Sovella muut kohdat siten, että ne toimivat paikallisen koneen kanssa: esim testaa weppsivut paikallisesti curlilla, simuloi hyökkäys syöttämällä väärä salasana omaan ssh-palvelimeesi jne.
- d) Suuri muuri. Suojaa palvelin tulimuurilla. Muista ensin reikä ssh-palvelimelle.
- e) Served. Laita koneellesi Apache-weppipalvelin. Korvaa testisivu. Laita käyttäjän kotisivut toimimaan. Kokeile eri koneelta, esim. kännykällä, että sivut toimivat. Vinkki: tee kotisivut normaalina käyttäjänä public_html/ alle.
- f) Päivitys. Päivitä palvelimesi kaikki ohjelmat.
- g) Rosvot porteilla. Etsi lokeistasi merkkejä murtautumisyrityksistä ja analysoi ne.
- h) Vapaaehtoinen: Etusivu uusiksi. Laita weppipalvelimesi etusivu (http://example.com/ eikä http://example.com/~tero) näkyviin, tietysti niin, että sivuja voi muokata normaalin käyttäjän oikeuksin ja ne ovat jonkun käyttäjän kotihakemistossa.
- i) Vapaaehtoinen: Laita TLS-salakirjoitus (https) toimimaan Let's Encrypt avulla. Vinkki: certbot tai lego.
- j) Vapaaehtoinen: Tee weppisivuja omalla, paikallisella koneellasi ja kopioi ne palvelimmelle scp-komennolla.
- k) Vaikea, vapaaehtoinen vaihtoehtotehtävä Tämä on vain niille parille propellihatulle, jotka halusivat vaikeamman tehtävän. Korvaa muut h4 koti- ja tuntitehtävät. Koodaa ja julkaise uusi tietokantaa hyödyntävä weppipalvelu. Palvelun pitää ratkaista jokin käytännön ongelma, esimerkiksi ilmoittautuminen tapahtumaan, pisteytä tunti, äänestä suosikkia tms. Voit hyödyntää vanhoja koodejasi, kunhan lopputulos on uusi. Voit käyttää mitä vain kehitysalustaa (framework), esimerkiksi LAMP, Flask, Django, Postgre, Mariadb... Muista lisätä raporttiin ruutukaappaukset keskeisestä toiminnallisuudesta. Ohjelman tulee olla uusi ja tätä tehtävää varten tehty, vanhoja omia komponentteja saa toki käyttää.
Vinkkejä:
- Käytä aina hyviä salasanoja. Huonot salasanat johtavat siihen, että koneelle murtaudutaan
- Perustele tehdyt valinnat.
- A-kohta on näistä ylivoimaisesti laajin, joten siihen varmaankin menee enemmän aikaa kuin muihin kohtiin. Muista siis jakaa se mahdollisimman pieniin, erikseen testattaviin osiin.
- Kun teet jotain askelta, tee ensin testi, joka ei onnistu (esim. surffaa palvelimen IP-osoitteeseen, joka ei vasta). Sitten tee asennuksia, asetuksia, lue lokeja jne. Tee sitten sama testi uudelleen. Onko tulos nyt toivottu?
- Tee muistiinpanot samalla, kun työskentelet
- Laita kaikki yhden viikon tehtävät samalle weppisivulle. Merkitse selkeästi, mihin alakohtaan (a, b...) olet vastannut.
- Tarkista, että olet viitannut kaikkiin lähteisiin: tehtävänantoihin, ohjekirjoihin, kurssiin, weppisivuihin, toisten opiskelijoiden kotitehtäväraportteihin, man-sivuihin jne.
- Se oikea virheilmoitus lukee lokissa
- /var/log/ sisältää kaikki järjestelmän yhteiset lokit
- apache2/access.log tiedot sivulatauksista
- apache2/error.log weppipalvelimen virhetilanteet
- auth.log kirjautumisyritykset
- lokeja on kätevä lukea komennoilla 'tail', 'less' ja 'grep hakusana loki'
- Tehtävän voi tehdä kokonaan ilmaiseksi. Koska monet palvelut saa ilmaiseksi tutustuttavaksi tai muutaman euron hinnalla, niitä kannattaa kokeilla. Voit saada sekä palvelimen että nimen ilmaiseksi Github Education -paketilla. Eri pilvioperaattoreilla on myös ilmaisia tutustumistarjouksia
- Weppipalvelin vaatii tietysti reiän HTTP-porttiin 80/tcp. Jos laitat TLS-salakirjoituksen päälle, niin reikä myös HTTPS-porttiin 443/tcp.
h5
DJ Ango!
- a) CRUD. Make a simple web program, that allows multiple users modify the same data. Have user accounts and logins. You can use Django development server and admin interface here. Single table is enough. We already did a Customer (CRM) database, so it might be interesting to do something as simple, but slightly different.
Vinkkejä
- Karvinen 2022: Django 4 Instant Customer Database Tutorial
h6
DJ Prod
- a) Tee tuotantotyyppinen asennus Djangosta.
Vinkkejä
- Karvinen 2022: Deploy Django 4 - Production Install
- Tee pienin mahdollinen testattava kokonaisuus kerralla
- Asenna Apache, mod_wsgi ja laita DEBUG pois päältä.
- Tässä harjoituksessa ei tarvitse vaihtaa tietokannanhallintajärjestelmää (oletus SQLite on ihan hyvä tähän)
- Kannattaa harjoitella asentamista omalla paikallisella virtuaalikoneella, ei julkisessa netissä olevalla vuokratulla palvelimella
- Ensi kerralla palataan normaaliin tahtiin. Tänään oli kyllä hieno vierailu ja minulla paljon kiinnostavia juttuja, mutta tahti oli minusta lähes hengästyttävä.
- Humiseeko päässä? Siihen auttaa tauko ja harjoittelu.
- Jos jokin asia tuntuu hämmentävältä, kannattaa tehdä samasta aiheesta useita helppoja harjoituksia omalla virtuaalikoneella. Silloin usein ajatukset palaavat päähän.
h7
All your base
- x) Kaikki tehtävät arvioitavaksi. Palauta linkit kaikkiin kotitehtäväraportteihisi. Arviointi tehdään ensisijaisesti tästä linkistä. (tässä alakohdassa ei tarvitse tehdä testejä koneella)
- y) Tarkista, että olet viitannut jokaisessa tehtävässä kaikkiin lähteisiin. Esimerkiksi kurssiin, tehtävänantoihin, käyttämiisi toisten kotitehtävärapotteihin, manuaalisivuihin, kotisivuihin... (tässä alakohdassa ei tarvitse tehdä testejä koneella)
- a) Asenna PostgreSQL, tee sille tietokantakäyttäjä ja tietokanta, osoita että se toimii (esim "SELECT 1+1;")
- b) Ota Djanogsta yhteys Postgre-tietokantaasi.
- e) Ratkaise valitsemasi vanha arvioitava laboratorioharjoitus tältä kurssilta. (Löytyy DuckDuckGolla, Googlella, linkeistä tältä sivulta tai hakemalla yläreunan hakutoiminnolla). Sovella tarvittaessa tehtäviä tähän toteutukseen sopivaksi, esimerkiksi PHP:n tilalta voi tehdä vastaavan Pythonilla; Flaskin tilalta käyttää Djangoa. Tai jättää pois jonkin epärelevantin kohdan.
- f) Tee uusi tyhjä virtuaalikone (tai oikea kone) viimeisen kerran arvioitavaa labraa varten. Koneella ei saa olla luottamuksellisia tietoja. Kannattaa tehdä koneelle tarpeeksi iso virtuaalinen levy ja laittaa riittävästi RAM:ia. Guest additions saa olla asennettuna. Koneella ei saa olla muita asetuksia ennakkoon, eikä ylimääräisiä asennettuja ohjelmia.
Adminstrivia
This has been updated after publishing, and will be updated as needed.
Tux logo by Larry Ewing.