Linux Palvelimet 2023 alkukevät
Kurssi ICI003AS2A-3002

Tux the Linux penguin

Learn to manage your own Linux server – in 8 weeks.

100% remote. Three hour video conference every Tuesday and Friday. Beginners welcome. Excellent feedback 4.8 out of 5. In Finnish.

Course name and code: Linux palvelimet ICI003AS2A-3002
Timing 2023 early spring, period 3, weeks w03-w11
Credits 5 cr
Classes Tue and Fri 14-16:45 online, mandatory participation
Max students 30 (50+ enrolled, queue started)
Language Finnish (+reading material in English)
Remote Yes, fully remote
Feedback 4.8 / 5 Excellent feedback Five star experience
Services Moodle, Jitsi, Laksu
First class 2023-01-17 w03 Tue 14: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

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: 16 iltapä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 tiistaisin ja perjantaisin 14:00 - 16:45 videokonfferenssina.

Viikko Aihe
w03 1. Asennus, lisenssit.
w04 2. Komentokehote. Ylläpito, paketinhallinta.
w05 3. Apache-weppipalvelin.
w06 4. Julkisen palvelimen ja nimen vuokraaminen
w07 5. Ohjelmat weppipalvelimella, hei Python Django.
w08 (talvivapaa - Linuxilla saa leikkiä itse, jos haluaa)
w09 6. Tietokantapalvelin, PostgreSQL.
w10 7. Kertaus
w11 8. Arvioitava lopputehtävä.

Oppituntien aiheisiin voi tulla muutoksia kurssin aikana.

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. Opiskelijoiden palaute kurssista on sivun lopussa kommenteissa.

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 Laksuun. Oman tehtävän palautuksen jälkeen riistiinarvioidaan kahden kurssikaverin tehtävät.

Läksyt tehdään ja raportoidaan kunkin tunnin jälkeen. Tehtävät saa julkaista missä haluaa ja palauttaa linkin Laksuun. 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, GitHub.com ja Gitlab.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. Raporteista tulee ilmetä tiedot, josta voi todeta että harjoitukset on tehty eikä sepitetty.

h1 Virtuaali-Linux

x) Lue ja tiivistä (Muutama ranskalainen viiva riittää. Tässä alakohdassa ei tarvitse tehdä testejä tietokoneella)

a) Asenna Linux virtuaalikoneeseen.

Vinkkejä

  • Install Debian on Virtualbox - Updated 2023
  • Tee täsmällinen ja toistettava raportti. Kuvaile myös ympäristö (host OS, rauta...). Sellainen, millä voi aiheuttaa samat virheet joita löysit, ja korjata ne samalla tavalla.
  • Kirjoita raporttia samalla kun työskentelet
  • Jos jäät jumiin, tee vielä tarkempi raportti hankalasta kohdasta. Ota kaikki virheilmoitukset talteen. Luettele eri valitsemasi lähestymistavat. Ja katsotaan tunnilla yhdessä lisää.
  • Vertaisarvioi kaksi tehtäväpalautusta, kun olet palauttanut omasi. (kuten aina)
  • Ota ruutukaappauksia. Kuvia on helppo lisätä Markdowniin.
  • Palautus aina 24 h ennen seuraavaa tapaamiskertaa. Esimerkiksi tässä tehtävässä palautus ennen torstaita 14:00, kun seuraava tunti on perjantaina 14:00.
  • Kohta sinulla on oma Linux-harjoitusympäristö, kokonaan omassa hallussa. Perjantaina nähdään!

h2 Komentaja Pingviini

  • x) Lue ja tiivistä (Muutama ranskalainen viiva riittää. Tässä alakohdassa ei tarvitse tehdä testejä tietokoneella)
  • a) Micro. Asenna micro-editori
  • b) Rauta. Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’). Asenna lshw tarvittaessa. Selitä ja analysoi listaus.
  • c) Apt. Asenna kolme itsellesi uutta komentoriviohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa. Ota ruutukaappaus. Kaikki terminaaliohjelmat kelpaavat, TUI (text user interface) ja CLI (command line interface). Osaatko tehdä apt-get komennon, joka asentaa nämä kolme ohjelmaa kerralla?
  • d) 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.
  • e) The Friendly M. Näytä 2-3 kuvaavaa esimerkkiä grep-komennon käytöstä. Ohjeita löytyy 'man grep' ja tietysti verkosta.

Vinkkejä:

  • Ohjelmien asennus
    • sudo apt-get update
    • apt-cache search version control
    • apt-cache show git
    • sudo apt-get -y install git
  • Selitä ja analysoi - rautatehtävässä tärkeää on siis oma analyysi ja selitys, ei pelkkä listaus

h3 Vapaus!

  • x) Lue ja tiivistä (Muutama ranskalainen viiva riittää. Tässä alakohdassa ei tarvitse tehdä testejä tietokoneella)
  • a) Kolmen ohjelman lisenssit. Tarkastele kolmen edellisessä harjoituksessa asentamasi ohjelman lisenssejä. Selvitä kustakin ohjelmasta:
    • Mitä lisenssiä kyseinen ohjelma käyttää?
    • Mistä päättelit lisenssin?
    • Onko kyseessä vapaa lisenssi?
    • Mitkä ovat tämän lisenssin tärkeimmät oikeusvaikutukset?
    • Jääkö tämän ohjelman lisenssoinnista jotain avoimia kysymyksiä tai epäselvyyttä? (kirjaan tämän itselleni muistiin, jos selvitän jonkun ohjelman lisenssejä)
  • b) Säännöllistä. Poimi tekstitiedostosta tietoa grep-komennolla käyttäen säännöllisiä lausekkeita (regexp, regular expressions).
  • c) Pipe. Näytä esimerkki putkista (pipes).
  • d) Vapaaehtoinen: Regex Crossword, tutorial.

Vinkkejä

  • 'grep -P "T..o"' näyttää kaikki rivit, joilla on merkkijono, joka alkaa "T", kaksi mitä vain kirjainta, päättyy "o"

h4 Tukki

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

    • YCombinator Hacker News, vapaavalintainen artikkeli kommentteineen Linuxin komentokehotteesta
      • Voit valita minkä vain joka ei ole suosituimman top 3 joukossa, niin pääset todennäköisesti lukemaan eri artikkelin kuin luokkakaverit.
      • 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, poimi keskeisimmät asiat.
  • a) Tukki. Analysoi yksi esimerkkirivi kustakin näistä lokeista

    • /var/log/syslog - yleisloki, tänne kaikki joilla ei ole omaa lokia
    • /var/log/auth.log - kirjatumiset, sudo:n käyttö
    • /var/log/apache2/access.log - onnistunut surffailu 2xx, 3xx; käyttäjän virheet 4xx client error
    • /var/log/apache2/error.log - apachen omat virheet, 5xx server error
  • b) Aiheuta. Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.

Vinkki

  • YCombinator Hacker News
  • Lokin analysoiminen tarkoittaa, että selität kaiken
    • Vähän lokia, paljon selitystä
    • Kello - onko oikeassa, mikä aikavyöhyke
    • Mitä kukin osa tarkoittaa
    • Mitä numerot merkitsevät
    • Mitä tämä kokonaisuutena tarkoittaa
    • Mitä puuttuu
    • Mitä osia et vielä ymmärtänyt tai selvittänyt tässä yhteydessä
    • Kerro se itsellesi ilmeinen asia ensin

h5 Hello Web

  • x) Kuuntele ja tiivistä. Tiivistelmäksi riittää muutama ranskalainen viiva per artikkeli. (Tässä alakohdassa ei tarvitse tehdä testejä tietokoneella)
  • a) 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)
  • b) Laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.
  • c) Tee uusi käyttäjä. Kirjaudu ulos omastasi ja sisään uutena käyttäjänä. Tee uudellekin käyttäjälle kotisivu.
  • d) Tee validi HTML5 sivu.

Vinkit

  • Indie Hackers
    • Jakson voi kuunnella myös käytännön tehtävien jälkeen
    • AntennaPod on hyvä ohjelma podcastien kuunteluun. Löytyy F-Droid:sta ja Google Playsta. Podcastien kuunteluun on tietysti satoja muitakin ohjelmia.
    • Jos valitset vahingossa jakson, jossa weppi jääkin sivurooliin, voit silti käyttää sitä, ei tarvitse kuunnella koko katalogia läpi.
  • Poista tarvittaessa vanha asennus, niin pääset kokeilemaan uudelleen
    • 'sudo apt-get purge apache2 apache2-bin; sudo systemctl stop apache2' tai palauta virtuaalikoneen snapshot
  • 'sudo adduser erkki'
    • Aina hyvät salasanat, varsinkin harjoitellessa
    • Testikäyttäjät on hyvä merkitä omalla nimellä. Esim jos Erkki Esimerkki tekee testikäyttäjiä, kunkin Full name / Real name -kohtaan "test user for Erkki Esimerkki"
    • Helpot käyttäjänhallintakomennot alkavat verbillä, adduser ja deluser
  • Esimerkkisivun korvaaminen
    • 'echo Hello|sudo tee /var/www/html/index.html' tai 'sudoedit /var/www/html/index.html'
    • roottina/sudona ei ruveta tekemään varsinaisia kotisivuja
  • Onko weppisivu validi https://validator.w3.org
  • Karvinen 2012: Short HTML5 page
  • Nykyisin weppipalvelimen käynnistys on 'sudo systemctl start apache2'. Monissa ohjeissa on vielä vanha komento, tai odotetaan demonin käynnistyvän itsestään pakettia asentaessa.

h6 Based

  • x) Lue ja tiivistä. Tiivistelmäksi riittää muutama ranskalainen viiva per artikkeli. (Tässä alakohdassa ei tarvitse tehdä testejä tietokoneella)
  • a) Vaihda Apachelle uusi etusivu. Varmista, että voit muokata sivua normaalilla käyttäjällä (ilman sudoa).
  • b) Tee Apachen asetustiedostoon kirjoitusvirhe. Etsi se työkalujen avulla. Vertaa 'apache2ctl configtest' ja virhelokin /var/log/apache2/error.log virheilmoituksia.
  • n) Vapaaehtoinen: Tee Apachelle kaksi nimipohjaista palvelua (name based virtual host), foo.example.com ja bar.example.com. Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.

Vinkit

  • Jos haluat pilvestä koneen ilmaiseksi, ota "Github Education" paketti etukäteen. Kannattaa lisätä Github-tunnukselle @haaga-helia.fi sähköposti ja vahvistaa se, ennenkuin aloittaa paketin haun.
  • Kannattaa ottaa ensi viikolla luottokortti (tai debit-luottokortti) mukaan pilvipalveluiden vuokraamiseen. (Minulla on myös vaihtoehtotehtävä, mutta vain oikea palveluiden käyttö on oikeaa palveluiden käyttöä).
  • '/usr/sbin/apache2ctl configtest'
    • "Couldn't .. determine .. domain name" lukee siinä melkein aina.
    • "Syntax OK", jos ei kirjoitusvirheitä
  • Lukuläksyt ovat osa Apachen virallista dokumentaatiota
    • Helpoimmat artikkelit ovat keskellä "Users' Guide" ja oikealla "How-To / Tutorials".
  • Vapaaehtoiseen tehtävään löytää vinkkejä esimerkiksi hakemalla vanhoja tehtäväraportteja, Googleen "karvinen apache"
    • Muista viitata kaikkiin käyttämiisi lähteisiin, myös toisten opiskelijoiden raportteihin

Adminstrivia

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

Tux logo by Larry Ewing.