Linux Server Course - Linux palvelimet ict4tn021-3014 - alkukevät 2021

Tux the Linux penguin

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

Beginners welcome. Student feedback excellent 4.7 out of 5. Course is in Finnish.

Linux palvelimet, Haaga-Helian kurssi ict4tn021-3014. Keskiviikkoisin 8-13:45, alkukevään 2021 eli 3. periodin. 5 op. Moodle (Haaga-Helian tunnuksilla)

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

Aikataulu

Kurssin kahdeksan kertaa jakautuvat neljään osaan: peruskäyttö, demonit, automatisointi ja loppuhuipennus.

Peruskäyttö

1. Asennus, työpöytä ja lisenssit FSF Free Software Definition, Rise of Open Source: Chapter 5. Raportin kirjoittaminen. w03

2. Komentokehote, ylläpito ja paketinhallinta w04 Command Line Basics, Commands for Admin. w04

Demonit

3. Apache-weppipalvelin Install Apache Web Server on Ubuntu Instant Firewall – sudo ufw enable. w05

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. w06

Automatisointi

5. Ohjelmat weppipalvelimella _w09. Palvelinpään ohjelmointi, Python Flask framework. Flask-tuotantoasennus. w07

w08 on talviloma, voit leikkiä koko viikon Linuxilla.

6. Shell scriptit, bash-skriptaus. Shell Scripting, aboutusers.sh, Over the Wire: bandit w09

Loppuhuipennus

7. Kertaus w10

8. Arvosteltava lopputehtävä w11

Suhde muihin kursseihin

Tämä kurssi (Linux palvelimet ict4tn021) on esitietovaatimuksena monille kursseille, esimerkiksi

  • Palvelinten hallinta
  • Monialaprojekti
  • Linuxin keskitetty hallinta

Vanhoja kurssitoteutuksia

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 opAikataulu – Linux palvelimet ict4tn021 4-ti ja 5-to – alkusyksy 2017 – 5 op, Aikataulu – Linux palvelimet ict4tn021 2-ti ja 3-ke – Alkukevät 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.

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

a) Tee oma Linux-livetikku. Kokeile sitä jossain muussa kuin koulun koneessa. _Tämä kohta ei edellytä asentamista – jos kuitenkin asennat, ota ensin varmuuskopiot. Jos ehdit tehdä tikun jo tunnilla, voit poikkeuksellisesti raportoida muistin perusteella jälkikäteen, mutta muista silloin mainita muistinvaraisuudesta.
_
b) Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’).
c) Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.
d) Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa.
e) 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. (Päivitetty: korjasin tämän kohdan tunnuskirjaimen d->e)
f) Vapaaehtoinen lisätehtävä: varmuuskopioi tiedostosi (voit käyttää esimerkiksi ulkoista USB-levyä)

Vinkkejä

  • Debian Linuxin asentaminen virtuaalikoneeseen. Tunnilla on kätevä olla jokin Linux, ja virtuaalisesta on helppo aloittaa.
  • 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'.
  • 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. Raportin kirjoittaminen.
  • 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.
  • 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

Päivitin tämän tehtävän heti tuntien jälkeen 2021-01-27 14:10.

  • a) Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.
  • b) Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi.
  • c) Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.
  • d) Tarkista, että raporteissasi on lähdeviitteet: kurssiin, tehtävänantoihin, muiden opiskelijoiden raportteihin weppisivuihin, man-sivuihin ja kaikkeen muihinkin käyttämiisi lähteisiin. (tätä "Tarkista, .." alakohtaa ei tarvitse raportoida)
  • e) Opettele ulkoa ja harjoittele tärkeimmät komennot (tätä “opettele ulkoa” alakohtaa ei tarvitse raportoida):
    Karvinen 2020: Command Line Basics Revisited
  • f) Harjoittele komentokehotetta päivittäin. On hyvä, jos osaat komennot täysin automaatiotasolla lihasmuistista, kun siirrymme demonien pariin. (Kuten sovimme, tätä "Harjoittele komentokehotetta päivittäin" alakohtaa ei tarvitse raportoida)
  • g) 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:’)

h3

Tee viisi vapaavalintaista kohtaa. Säädä vaikeustaso oikeaksi: jos olet ihan alussa ja tämä on haastavaa, tee helpoimmat a b d i m. 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, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.
  • b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.
  • c) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi
  • d) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.
  • e) Asenna ja kokeile PhpMyAdmin:a tai jotain muuta valmista weppiliittymää tietokantojen hallinnointiin.
  • f) Tee palvelimella ajettava weppiohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)
  • g) Tee palvelimella ajettava weppiohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan
  • h) 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.
  • j) 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.
  • k) Kokeile jotain Flaskin uutta ominaisuutta flask-testipalvelimessa. Voit kokeilla esim. muotteja (templates), tietokantaa tai syötteiden ottamista lomakkeilta (forms).
  • l) Asenna Python Flask + PostgreSQL + Apache mod WSGI. Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (vaikea)
  • m) Vaihda Apachen oletussivu. Eli laita palvelimen etusivulla (ilman tildeä) näkyvä sivu niin, että alkuperäinen on jonkun käyttäjän kotihakemistossa ja voit muokata sitä ilman pääkäyttäjän oikeuksia.
  • n) 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

a) Tee alusta lähtien oma julkinen palvelin Internetiin.

Vinkkejä: Tee siis uusi virtuaalipalvelin (esim "Droplet") ja sille tarvittavat alkutoimet. Tee uusi DNS-nimi. Alanimiä voi yleensä tehdä maksutta: esim. jos hallitsee TeroKarvinen.com, voi tehdä hattu.TeroKarvinen.com. Tässä tehtävässä on tarkoitus sujuvoittaa koko prosessi, tee siis uusi A-tietue nimipalvelimeen ja uusi virtuaalipalvelin alusta lähtien, vaikka sinulla olisi jo sekä nimi että palvelin. Kun kaikki toimii ja raportti on valmis, voit poistaa turhan palvelimen ja jättää itsellesi esimerkiksi vain yhden käyttöön. Jos jäät jumiin, pyri päättelemään, mitkä osat toimivat ja mitkä eivät; ratkomme viimeiset ongelmat yhdessä tunnilla. Palautusaika on tuttuun tapaan 24h ennen seuraavaa tapaamiskertaa, eli vasta talvivapaan jälkeen.

b) Vapaaehtoinen: Etsi lokeistasi merkkejä murtautumisyrityksistä ja analysoi ne.

c) Vapaaehtoinen: Laita TLS-salakirjoitus (https) toimimaan certbot ja Let's Encrypt avulla.

d) Vapaaehtoinen: Tee weppisivuja omalla, paikallisella koneellasi ja kopioi ne palvelimmelle scp-komennolla.

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

h5

Tee kukin tehtävä alusta lähtien ja kirjaa samalla, vaikka olisit kokeillut tunnilla. Jos pidät propellihattua, katso kohta x.

a) Hello Flask! Tee Python Flask hei maailma kehitysympäristössä. Voit siis käyttää tuotantoon sopimatonta app.run(debug=True) ajoa.

b) Tuotanto-Flask. Tee tuotantotyyppinen asennus Flaskista käyttäen Apachen WSGI-modulia. Kokeile, että pystyt muokkaamaan koodia ilman sudoa ja saat uuden version käyttöön käynnistämättä Apachea uudelleen. ('touch foo.wsgi').

c) Lisää tuotanto-Flaskiin muotit (templates).

d) Sun IP. Tee Flask-sivu, jolla näkyy tietoja käyttäjästä. Esimerkiksi request.user_agent.string, request.remote_addr. Muista "from flask import request".

e) Vapaaehtoinen. Tee palvelinohjelma, joka laskee jotain käyttäjän antamista luvuista. Painoindeksi, tonttunimesi, pisteytys salasanallesi tms. Tässä tarvitaan lomakkeita (forms) ja POST-pyyntöjen lukemista.

x) Propellivaihtoehto, vapaaehtoinen, korvaa muut kohdat. Julkaise hyödyllinen Flask-ohjelma, joka käyttää tietokantaa ja lomakkeita. Hyöty voi olla pienikin, mutta ohjelman tulee tehdä jotain järkevää. (OK: äänestä paras kissankuva, ilmoittaudu arpajaisiin, nallekarhujen lainausjärjestelmä. Ei käy: lue esimerkkitietueita foo ja bar tietokannasta.) Hauskaa koodailua!

h6

a) Tietokanta wepissä. Tee oma yksinkertainen, tietokantaa käyttävä ohjelma. Ohjelmalla tulee olla jokin käyttötarkoitus. Voit tehdä ohjelman muokkaamalla Teron koodia (muista lähdeviite).

b) Laita tietokantaohjelmasi toimimaan mod_wsgi:n kanssa.

c) Vapaaehtoinen: Tauluja. Tee Flask-ohjelma, jossa on vähintään kaksi taulua (tables).

d) Vapaaehtoinen: Tunnussana! Tee Flask-ohjelma, jossa on autentikoituminen. Voit käyttää kovakoodattua käyttäjätunnusta ja salasanaa. Tiivisteen teko onnistuu esimerkiksi werkzeug.check_password_hash() -funktiolla.

c) Vapaaehtoinen, vaikea: Pankki vai luotto? Tee Flask-ohjelma, joka ottaa vastaan maksuja. Voit käyttää Paypal tai Stripe -palveluita ohjelmointirajapinnan läpi. Maksun maksamisen jälkeen voi esimerkiksi lukea jonkun sivun tai ladata itselleen PDF-tiedoston. Tässä harjoituksessa käsittelet rahaa ja harjoittelet ulkopuolisen ohjelmointirajapinnan (API) käyttöä.

d) Vapaaehtoinen: CRUD. Tee Flask-ohjelma, jossa tietueita voi luoda (Create), lukea (Read), päivittää (muokata, Update) ja poistaa (Delete). Aimmissa harjoituksissa olet jo luonut ja lukenut tiedostoja, joten lisäät vaan muokkauksen ja poiston.

h7

a) Ratkaise valitsemasi vanha arvioitava laboratorioharjoitus tältä kurssilta. (Löytyy DuckDuckGolla tai Googlella sekä linkeistä tältä sivulta).
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... c) Kaikki tehtävät arvioitavaksi. Palauta linkki sivuun, josta löytyvät kaikki kotitehtäväraporttisi. Arviointi tehdään ensisijaisesti tästä linkistä. Linkki voi olla esimerkiksi blogin etusivu (jos blogissa on vain kotitehtävät) tai sivuun, jossa on linkki kuhunkin tehtävään. Kaikki tehtävät -linkin palautus Moodlessa kohtaan "Kaikki tehtävät arvioitavaksi". d) (vapaaehtoinen) Käytä Linuxia kurssin ulkopuolella.
e) (vapaaehtoinen) Varaa kalenteristasi viikon välein aikoja Linux-harjoitteluun kurssin jälkeen.

Muista ilmoittautua kursseille: Palvelinten hallinta (suositeltava kurssi tämän jatkoksi), Python weppikurssi w21 (varmistunee tällä viikolla) ja Tunkeutumistestaus (katso ennakkovaatimukset). Tervetuloa!

Palautetta

Palaute on todella tärkeä tapa kehittää kurssia – kiitos kommenteista jo etukäteen!

Olette antaneet runsaasti palautetta oppituntien yhteydessa. Nyt on aika kommentoida koko kurssia.

  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 Linuxista sellaista, mitä et osannut ennen kurssia?
  • Mitä pidit arvioitavasta laboratorioharjoituksesta?
  • Oliko opittu hyödyllistä? Luuletko, että sille on käyttöä esim tulevaisuudessa töissä tai kotona?
  • Miten voisin parantaa kurssia?
  • Missä aiot hyödyntää taitoja kurssin ulkopuolella? Töissä, harrastuksissa, muualla?
  • Viihdyitkö kurssilla?
  • Suosittelisitko kurssia? Kenelle? Koulutoverille tai kollegalle?
  • => vapaamuotoinen palaute kommenttina kurssisivun perään
  1. Numeerinen palaute Haaga-Helian Peppiin
  • Numeerisen palautteen avulla verrataan Haaga-Helian kursseja
  • Voit kopioida vapaiden tekstikenttien palautteen äsken kirjoittamastasi tekstistä
  • On tärkeää saada jokaiselta palaute

Adminstrivia: tämä sivu päivittyy kurssin kuluessa.