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
Timing2023 early spring, period 3, weeks w03-w11
Credits5 cr
ClassesTue and Fri 14-16:45 online, mandatory participation
Max students30 (50+ enrolled, queue started)
LanguageFinnish (+reading material in English)
RemoteYes, fully remote
Feedback4.8 / 5 Excellent feedback Five star experience
ServicesMoodle, Jitsi, Laksu
First class2023-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

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? 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 läksyistä?
  • Suosittelisitko kurssia tai oletko jo suositellut? Kenelle kurssi sopisi? Koulutoverille tai kollegalle?
  1. 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.

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.

ViikkoAihe
w031. Asennus, lisenssit.
w042. Komentokehote. Ylläpito, paketinhallinta.
w053. Apache-weppipalvelin.
w064. Julkisen palvelimen ja nimen vuokraaminen
w075. Tietokantapalvelin, PostgreSQL.
w08(talvivapaa - Linuxilla saa leikkiä itse, jos haluaa)
w096. Ohjelmat weppipalvelimella, hei Python Django.
w107. Ohjelmointi.
w118. Kertaus. 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

h6 Real Internet(tm)

Tämän tehtävän oikea numero olisi ollut h7.

  • x) Lue ja tiivistä. Tiivistelmäksi riittää muutama ranskalainen viiva per artikkeli. (Tässä alakohdassa ei tarvitse tehdä testejä tietokoneella)
  • a) Vuokraa oma virtuaalipalvelin haluamaltasi palveluntarjoajalta. (Vaihtoehtona voit käyttää ilmaista kokeilujaksoa, GitHub Education krediittejä; tai jos mikään muu ei onnistu, voit kokeilla vagran:tia paikallisesti).
  • b) Tee alkutoimet omalla virtuaalipalvelimellasi: tulimuuri päälle, root-tunnus kiinni, ohjelmien päivitys.
  • c) Asenna weppipalvelin omalle virtuaalipalvelimellesi. Korvaa testisivu. Kokeile, että se näkyy julkisesti. (Muista tehdä reikä tulimuuriin).
  • d) Etsi merkkejä murtautumisyrityksistä.

Vinkit:

  • Aina hyvät salasanat
  • sudo ufw allow 22/tcp; sudo ufw allow 80/tcp
  • Wannabe-murtautujia voit löytää lokeista, /var/log/auth.log, joskus myös /var/log/apache2/access.log
  • Nykyisin demonin uudelleenkäynnistys 'sudo systemctl restart apache2' (ei enää service)

h8 Nimittäin

  • a) Vuokraa domainnimi ja aseta se osoittamaan virtuaalipalvelimeesi.*
  • b) Tutki oman nimesi tietoja 'host' ja 'dig' -komennoilla. Analysoi tulokset.

Vinkit

  • Julkisia nimiä vuokrataan:
  • Jos et jostain syystä halua vuokrata oikeaa nimeä, voit vaihtoehtotehtävänä kokeilla nimipalvelua tai sen simulointia hosts-tiedoston avulla. Tällöin voit tehdä nimipalvelutietojen analysoinnin mistä vain julkisessa käytössä olevasta nimestä. Suosittelen kuitenkin oikean nimen vuokraamista ja asettamista.

h9 Sequel

  • x) Yrityssoftaa. Keksi esimerkki palvelusta, jota käytetään wepissä selaimella, koodi ajetaan palvelimella ja taustalla on tietokanta. Mitä etuja tällä toteutustavalla on vaihtoehtoisiin toteutustapoihin verrattuna? (Tässä x-alakohdassa ei tarvitse tehdä testejä koneella tai toteuttaa mitään, pelkkä kuvittelu ja vastauksen kirjoittaminen riittää)
  • a) Postgre. Asenna PostgreSQL ja testaa se suorittamalla SQL-komento. (Jos teit jo tunnilla, tee uusi Linux-käyttäjä ja tälle tietokanta ja tietokantakäyttäjä.)
  • b) Crud. Kokeile CRUD (create, read, update, delete) kirjoittamalla SQL-käsin. (Artikkeli alla vinkeissä kertoo, kuinka tämä tehdään. Jos SQL on tuttua, voit keksiä tauluille ym omat aiheet ja nimet.)
  • n) Vapaaehtoinen: Maria. Asenna MariaDB ja kokeille sillä CRUD.

Vinkit:

h10 DJ Ango

  • a) Kannattavaa. Tee oma tietokantasovellus. jossa on weppiliittymä. Kirjautuneet käyttäjät saavat lisätä, muokata ja poistaa tietueita. (Voit käyttää Djangon kehityspalvelinta. Tee jotain muuta kuin asiakastietokanta.)
  • b) Vapaaehtoinen: Suhde. Tee monesta yhteen -suhde (many-to-one relationship) kahden taulun välille. Esim. Yksi yritys - monta työntekijää.

Vinkit:

  • Karvinen 2022: Django 4 Instant Customer Database Tutorial
  • Palautus tuttuun tapaan 24 h ennen seuraavan opetuskerran alkua, eli vasta hiihtoloman jälkeen.
  • Djangon testipalvelinta ei saa laittaa Internetiin näkyviin. Eli './manage.py runserver' ei sovi tuotantoon.
    • Tuotantoasennus tehdään Apachen ja mod_wsgi:n kanssa, mutta sitä ei tarvita tässä harjoituksessa
  • Käytä aina hyviä salasanoja.
  • Bonustehtäviin:
  • Kesäkurssini Djangosta
    • Ideoit ja toteutat oman weppisovelluksen, ja viet sen julkiseen Internetiin omalle pilvipalvelimelle
    • Kahdeksan päivää aamusta iltaan, online
      • Alkaa 2023-05-22 w21 ma
      • Päättyy 2023-05-31 w22 ke
      • Kurssi päättyy kokonaan viimeisenä kurssipäivänä. Kurssin päättymisen jälkeen ei voi, ei saa, eikä tarvitse palauttaa mitään.
    • Ilmoittautuminen käynnissä juuri nyt, paikkoja oli tätä kirjoittaessa vapaana
    • ICT8TN034-3003 Python weppipalvelu - ideasta tuotantoon

h11 prod

  • a) Tee Djangon tuotantoasennus.
  • b) Vapaaehtoinen, vaikeahko: dev&prod: tee ja kokeile Django-projekti eri käyttäjällä tai koneella testipalvelimella ('./manage.py runserver'). Kopioi se tuotantopalvelimelle ja ota käyttöön ('touch */wsgi.py').
  • c) Vapaaehtoinen, vaikea: muutto: jatkoa b-kohtaan: muokkaa tietokannan rakennetta kehityspalvelimella. Kopioi koodi tuotantopalvelimelle, ja päivitä tietokannan rakenne migraatioilla.

Vinkit

h12 vianselvitys

Haasteita horisontissa. Tutki ongelmia Djangon tuotantotyyppisessä asennuksessa:

  • Aiheuta ongelma
  • Näytä oireet (esim. selaimella)
  • Etsi siihen liittyvät lokimerkinnät
  • Analysoi lokimerkinnät (eli selitä perusteellisesti, mitä eri kohdat tarkoittavat ja mitä kohdista on pääteltävissä)
  • Korjaa ongelma
  • Osoita testillä, että vika on korjattu

Tutkittavat ongelmat:

  • a) Kirjoitusvirhe Python-tiedostossa
  • b) Django-projektikansio väärässä paikassa (siis se, jossa on manage.py)
  • c) Projektikansiolla väärät oikeudet ('chmod ugo-rwx teroco/', 'chmod u+rx teroco/')
  • d) Kirjoitusvirhe Apachen asetustiedostossa (/etc/apache2/sites-available/terokarvinen.conf tms)
  • e) Apachen WSGI-moduli puuttuu ('sudo apt-get purge libapache2-mod-wsgi-py3' tms)
  • f) Väärät domain-nimet ALLOWED_HOSTS-kohdassa (settings.py, ja DEBUG=False)
  • e) Vapaaehtoinen bonus: oma, itse keksitty ongelma.

Vinkit

  • Aloita toimivasta tilanteesta. Silloin tiedät, ettei asennuksessa ole muita ongelmia kuin ne, joita olet itse aiheuttanut.
  • 'sudo tail -F /var/log/apache2/access.log /var/log/apache2/error.log /var/log/apache2/other_vhost.log'
    • ja tähän voi lätkiä rivinvaihtoja, niin erottaa, mitkä rivit tulevat mistäkin sivunlatauksesta
  • '/sbin/apache2ctl configtest'
  • 'sudo systemctl status apache2'

h13 Hello world!

  • a) Käännä "Hei maailma" kolmella kielellä.
  • b) Vapaaehtoinen: greetme. Tee ohjelma, joka ottaa käyttäjän nimen komentoriviparametrina ja tervehtii 'greetme Tero' vastaa "Hello, Tero" ja 'greetme foo' vastaa "Hello, foo".
  • c) Vapaaehtoinen: Tee greetme kahdella muullakin kielellä.

Vinkit:

  • Karvinen 2018: Hello World Python3, Bash, C, C++, Go, Lua, Ruby, Java
  • Mille vain kielelle voi hakea hakukoneesta hei maailman "hello world python"
  • Javalla yksi luokka per tiedosto, luokan nimi pitää olla sama sekä tiedoston nimessä että sisällä, isoja ja pieniä kirjaimia myöten. Hello.java, "class Hello".
  • Pythonista käytetään versiota kolme, usein komento 'python3'.
  • Käyttäjän syötteet kannattaa ottaa ensisijaisesti suoraan komentoriviltä. Kumpaa itse käyttäisit mieluummin: 'curl https://terokarvinen.com' - vai 'zlur' "Hei, syötä haluamasi weppisivun osoite..."

h14 Uusi komento

  • a) Tee Linuxiin uusi komento Bashilla. Komennon tulee toimia kaikilla käyttäjillä, työhakemistosta riippumatta. Tee jotain muuta kuin "hei maailma".
  • b) Tee Linuxiin uusi komento Pythonilla. Komennon tulee toimia kaikilla käyttäjillä, työhakemistosta riippumatta.
  • c) Tee Linuxiin komento, joka tekee jotain monelle tiedostolle

Vinkit

  • Kannattaa harjoitella arviotavaa labraa varten
    • Voit esimerkiksi tehdä kaikki kurssin harjoitukset läpi tyhjälle tietokoneelle (ilman että raportoit niitä uudelleen).
    • Vanhoja arvioitavia labroja löytyy netistä. Toki eri kursseilla olen saattanut opettaa eri ohjelmilla tai kielillä, joten kannattaa katsoa tehtäviä soveltuvin osin
    • Perusasiat: aina hyvät salasanat, testaa kaikki, oikeudet oikein...
  • Tuletko "Palvelinten hallintaan" seuraavalla jaksolla? Torstain ryhmään mahtuu ICI001AS3A-3002 "Palvelinten hallinta"

Adminstrivia

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

Tux logo by Larry Ewing.