Linux Palvelimet 2022
Linux Palvelimet ict4tn021-3018

Tux the Linux penguin

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 and in evenings.

Course name and code:Linux palvelimet ict4tn021-3018
Timing2022 period 3 early spring, w03-w11, not w08
Credits5 cr
ClassesWed 15:00 - 13:45, online, mandatory participation
Max students30, Enroll 2021-11-29 w48 Monday at 08:00.
LanguageFinnish (+reading material in English)
RemoteYes, fully remote
Feedback4.8 / 5 Excellent feedback Five star experience
ServicesMoodle, Jitsi
First class2022-01-19 w03 Wed 15:00, 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: kahdeksan päivää oppitunteihin + joka viikko 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 keskiviikkoisin 15:00 - 19:50 videokonfferenssina. Opetusta ei ole viikoilla w08 ja w10.

PäiväAihe
2022-01-19 w031. Asennus, lisenssit.
2022-01-26 w042. Komentokehote. Ylläpito, paketinhallinta.
2022-02-02 w053. Apache-weppipalvelin.
2022-02-09 w064. Julkisen palvelimen ja nimen vuokraaminen
2022-02-16 w075. Ohjelmat weppipalvelimella, Python Django
2022-03-02 w096. Ohjelmointiympäristöt, shell scripting.
2022-03-16 w117. Arvioitava lopputehtävä.

Oppituntien aiheisiin voi tulla muutoksia kurssin aikana.

Anna palautetta

  1. 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? Hyökkäsit weppiin, käytit jotain työkalua, skannasit kokonaisen verkon; käytit jotain kieltä, tekniikkaa tai työkalua?
  • 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?
  1. Numeerinen palaute Haaga-Helian uuteen palautejärjestelmään MyNetissa

Verrataan muihin Haaga-Helian kursseihin

Kiitos palautteesta ja jännittävästä kurssista!

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.

Vanhoja arvioitavia laboratorioharjoituksia:

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

  • z) Lue ja tiivistä. Tiivistelmäksi riittää muutama ranskalainen viiva per artikkeli. (Tässä z-alakohdassa ei tarvitse tehdä testejä tietokoneella)
  • 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

  • z) Lue ja tiivistä. Tiivistelmäksi riittää muutama ranskalainen viiva per artikkeli. (Tässä z-alakohdassa ei tarvitse tehdä testejä tietokoneella)

  • 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).

  • z) 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.
  • b) Prod. Make a production style Django install. Use Apache and mod_wsgi, disable DEBUG.

Tips:

  • Karvinen 2022: Django 4 Instant Customer Database Tutorial
  • Karvinen 2022: Deploy Django 4 - Production Install
  • This is a challenging task, as there are many components
    • Do the smallest testable task
    • Know your goal. What test shows you're there?
    • Write the report while you're working.
  • When stuck
    • keep writing report while you work
    • list all your approaces taken
    • any hypothesis why it's (not) working like that?
    • list any sources you found and their recommendations
    • list any approaches you've discarded
    • sometimes it's good to stop for a while and summarize what you know
    • and take breaks
  • Yep, I noticed I wrote it in English, but it's done now and I don't want to write it again. Feel free to answer in Finnish or in English, which ever you prefer.
  • Save the date: Enroll Django course 2022-03-14 w11 Mon 08:00. The course is w21-w22.

h6

Näemme seuraavan kerran 2022-03-16 eli w11 keskiviikkona 15:00. Tehtävän määräaika on 24 h ennen opetuskerran alkua, eli w11. Ensi viikolla w10 ei ole lähiopetusta eikä tehtävän määräaikaa. Viimeisellä tapaamiskerralla on arvioitava laboratorioharjoitus, joten on tärkeää ja pakollista olla etänä mukana.

  • a) 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)
  • b) 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)
  • c) Uusi komento Linuxiin. Tee uusi komento, joka tulostaa käyttäjälle hyödyllistä tietoa. Kokeile, että komento toimii kaikista hakemistoista ja muillakin käyttäjillä kuin omallasi.
  • d) Parametreja. Tee skripti, joka ottaa komentoriviparametreja. Esim. 'greetuser Tero' joka tulostaa "moi" ja parametrinä olevan nimen, esim "moi Tero".
  • 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.
  • g) (vapaaehtoinen) Käytä Linuxia kurssin ulkopuolella.
  • h) (vapaaehtoinen) Varaa kalenteristasi viikon välein aikoja Linux-harjoitteluun kurssin jälkeen.

Vinkkejä:

  • Tapaamme seuraavan kerran w11 keskiviikkona kello 15:00 tutulla Jitsi-kanavalla. Silloin on arvioitava laboratorioharjoitus, ja on tärkeää ja pakollista olla etänä mukana. Ensi viikolla w10 ei ole online-tuntia.
  • Arvioitava laboratorioharjoitus on yksilötehtävä. Varaa keskeytyksetöntä ja häiriötöntä aikaa tehtävän ajaksi.
  • Hyödyllisiä ja hauskoja tietoja saa esim: uname -a; date --iso=min; cat /etc/lsb-release; uptime; w; whoami; last; hostname -I; df -h /home/
  • Parametrit ovat skriptissä automaattisesti muuttujissa $1, $2, $3... Tai kaikki $* (ja hienommin "$@")
  • Muista ilmoittautua
    • Palvelinten hallinta. Suositeltava jatkokurssi. Tosin tänne taitaa suuri osa ollakin jo ilmoittautunut. Opit, miten tämän kurssin taidot laajenevat kymmenien, satojen tai tuhansien koneiden hallintaan. Viime toteutuksen palaute 5.0/5, eli jokainen palaute oli paras mahdollinen 5.
    • Python weppikurssi w21-w22, ilmoittautuminen 2022-03-14 w11 maanantaina 08:00. Palaute 4.9/5.
    • Tunkeutumistestaus, jos täytät ennakkovaatimukset ja hakkerointi / kyberturvallisuus kiinnostaa. Palaute 4.9/5. Tervetuloa!

Adminstrivia

This has been updated after publishing, and will be updated as needed.

Tux logo by Larry Ewing.