Palvelinten hallinta ICT4TN022-3005

Vertaisarviointi


Laitteen/alustan tiedot, jolla arviointi suoritettiin:

  • Oracle VirtualBox 6.1.6
  • Xubuntu 18.04.03 LTS (+ VirtualBox guest additions)
  • 4GB RAM
  • 8GB Levytilaa (dynaaminen)
Tehtävä: Kolmen kurssin opiskelijan moduulin vertaisarviointi

Arvioitava: Markus Jauhiainen
Moduuli: Reverse proxy
Linkki: https://markusjauhiainenlinuxkurssi.design.blog/2020/05/17/palvelinten-hallinta-ict4tn022-3005-harjoitus-7/

Seurasin Jauhiaisen raportointia ja pääsin yhtenevään lopputulokseen raportin kanssa. Raportointi oli selkeää ja jokainen työvaihe kuvattu hyvin. Moduulin luomisessa käytetty selvästi paljon aikaa asian selvittämiseen ja opitun soveltamiseen. Tästä peräisin olevat lähteet mainittu hyvin raportoinnissa. Moduuli oli myös laitettu GitHubiin, joka teki sen testaamisesta ja arvioimisesta paljon miellyttävämpää. Aiheena reverse proxy erittäin kiinnostava ja sen käyttötarkoituksia oli myös pohdittu raportoinnissa erinomaisesti. Arvosanaksi moduulista antaisin 5.


Arvioitava: Joona Karvonen
Moduuli: Minecraft-palvelin
Linkki: https://joonakarvonen.design.blog/palvelinten-hallinta-joona-karvonen-harjoitus-7/

Seurasin Karvosen raportointia ja pääsin yhtenevään lopputulokseen raportin kanssa. Raportointi oli erittäin selkeää ja monimutkaisemmat asiat selitetty hyvin pala palalta. Moduulin tekemisessä käytetty ja sovellettu monipuolisesti opetettua, sekä selvästi itseopittua tietoa. Olisin toivonut moduulin olevan esimerkiksi GitHubissa, jolloin moduulin tiedostoja ei olisi tarvinnut kirjoittaa manuaalisesti omaa testausta varten. Aiheena Minecraft-palvelimen konfigurointi oli erittäin hyvä ja käytännöllinen tapa testata kurssin aikana opittuja taitoja. Arvosanaksi moduulista antaisin 4 tai 5.


Arvioitava: Markus Saikkonen
Moduuli: Nginx-webpalvelin & Virtual host
Linkki: https://markussaikkonen.com/2020/05/21/7-oma-moduuli-nqinx-virtual-host/

Seurasin Saikkosen raportointia ja pääsin yhtenevään lopputulokseen raportin kanssa. Raportointi oli selkeää ja työvaiheet oli kuvattu hyvin. Moduuli itsessään melko yksinkertainen ja olisin toivonut hieman lisää syvyyttä esim. muiden konfigurointien muodossa. Raportista/moduulista kuitenkin huomaa, että kurssilla opittuja asioita on käytetty hyvin moduulin luomisessa. Moduulin laittaminen esimerkiksi GitHubiin olisi ollut hyvä lisä, jottei tiedostoja olisi tarvinnut kirjoittaa käsin testausta varten. Aiheena webpalvelimen ja virtual hostin konfigurointi oli osuva valinta. Arvosanaksi moduulista antaisin 3 tai 4.


Lähteet:

Jauhiainen, Markus 2020: Palvelinten hallinta – ICT4TN022 – 3005 Harjoitus 7. https://markusjauhiainenlinuxkurssi.design.blog/2020/05/17/palvelinten-hallinta-ict4tn022-3005-harjoitus-7/, Luettu 25.5.2020

Karvonen, Joona 2020: Palvelinten Hallinta – Joona Karvonen – Harjoitus 7. https://joonakarvonen.design.blog/palvelinten-hallinta-joona-karvonen-harjoitus-7/, Luettu 26.5.2020

Saikkonen, Markus 2020: 7. Oma moduuli – Nqinx virtual host. https://markussaikkonen.com/2020/05/21/7-oma-moduuli-nqinx-virtual-host/, Luettu 26.5.2020

Palvelinten hallinta ICT4TN022-3005 Harjoitus 7

Oma moduli


Tehtävän suorittaminen aloitettu 18.5.2020 9:30

Laitteen/alustan tiedot, jolla tehtävä suoritettiin:

VM #1 (Xubuntu)

  • Oracle VirtualBox 6.1.6
  • Xubuntu 18.04.03 LTS (+ VirtualBox guest additions)
  • 4GB RAM
  • 8GB Levytilaa (dynaaminen)

VM #2 (Xubuntu2)

  • Oracle VirtualBox 6.1.6
  • Xubuntu 18.04.03 LTS
  • 2GB RAM
  • 10GB Levytilaa (dynaaminen)

b) Oma moduli (iso tehtävä). Ratkaise jokin oikean elämän tai keksitty tarve omilla tiloilla/moduleilla. Voit käyttää Salttia tai muuta valitsemaasi modernia keskitetyn hallinnan ohjelmaa. Esitä tulos viimeisellä opetuskerralla, 5-10 min (keskiviikon ryhmä). Live demo olisi kiva. Raportoi modulisi tarkoitus, koodi ja testit.

Päätin luoda moduulin, joka konfiguroi palomuurin, ssh-yhteyden ja apachen minioneilla.

1) UFW

Aloitin luomalla kansion nimeltä ufw /srv/salt hakemistoon, jonka sisälle loin init.sls-tiedoston. Määrittelin tiedostossa UFW:n käynnistyvän paitsi, jos se on jo käynnissä. Avasin myös SSH:ta varten portin 22, ja Apachea varten portin 80.

Jolloin init.sls tiedosto näytti UFW:n kohdalla tältä. Testasin ajaa tämän jälkeen tilan muutamaan otteeseen. Ensimmäisellä ajokerralla tila teki muutoksia onnistuneesti ja toisella kerralla tila ajettiin onnistuneesti, mutta muutoksia ei tehty. Tästä pystyin päättelemään tilan olevan idempotentti.


2) SSH

Aloitin luomalla kansion sshd /srv/salt hakemistoon, jonka sisälle loin init.sls tiedoston, jossa määriteltiin SSH:n asennus, sshd_config-tiedoston määrittely, motd-tiedoston määrittely sekä lopuksi tarkistettiin ssh-demonin olevan päällä.

Jolloin init.sls tiedosto näytti tältä. Tämän jälkeen loin vielä sshd kansioon init.sls-tiedostossa määritellyt sshd_config -ja motd-tiedostot, joiden sisältö oli seuraava.

Tämän jälkeen ajoin sshd-tilan jälleen kerran muutamaan otteeseen varmistuakseni sen olevan idempotentti. Ensimmäisellä kerralla tila ajettiin onnistuneesti ja muutoksia tehtiin, toisella kerralla tila ajettiin myös onnistuneesti, mutta muutoksia ei tapahtunut.


3) Apache 2

Aloitin luomalla kansion apache /srv/salt hakemistoon, jonka sisälle loin init.sls -tiedoston. Määrittelin tiedostossa Tero Karvisen ohjeen mukaan asetukset, jolla käyttäjän kotisivut saadaan toimimaan. Lisäsin myös muutaman määrityksen /etc/skel/ -hakemistoon, jolloin uutta käyttäjää luodessa kotisivut luodaan samalla.

Tämän jälkeen tein vielä apache-kansioon init.sls -tiedostossa määritellyt index.html -ja kayttaja-index.html -tiedostot. Ajoin tilan muutamaan otteeseen varmistuakseni sen toiminnasta ja idempotentiudesta.


4) Sovellukset

Päätin myös tehdä yksinkertaisen tilan, joka asentaa muutaman sovelluksen. Tein tätä varten uuden kansion sovellukset ja sen sisälle init.sls tiedoston, joka näytti seuraavalta.

Testasin jälleen ajaa tilaa muutamaan otteeseen varmistuakseni sen toiminnasta.


5) Top.sls

Tein tilojen luomisen jälkeen vielä Top.sls -tiedoston, jonka sisältö näytti seuraavalta.


Tehtyäni moduulini valmiiksi, tein uuden repon GitHubiin ja kopioin moduulini tänne.

https://github.com/tommygratschew/apachemoduuli

Tämän jälkeen loin kokonaan uuden Xubuntu-virtuaalikoneen (VM #2), jolle asensin salt-minionin, avasin portit 4505 ja 4506, sekä määrittelin masterin (VM #1) IP-osoitteen ja minionin id:n. Hyväksyin tämän virtuaalikoneen master-virtuaalikoneella (jossa olin tehnyt aikaisemmat testit yms.) ja ajoin luomani moduulin komennolla ”sudo salt ’xubuntu2’ state.highstate”. Pienen odottelun jälkeen moduuli suoritettiin onnistuneesti. Ajoin komennon vielä kerran uudestaan varmistuakseni sen olevan kokonaisuutena idempotentti. Tila ajettiin uudestaan onnistuneesti ilman muutoksia. Tämän jälkeen testasin vielä kaiken asentamani toimivuuden yksitellen.

SSH

myös motd näkyy halutusti.


UFW


Apache 2 kotisivut

Tein uuden käyttäjän “testi”, jonka jälkeen testasin selaimessa päästä käyttäjän kotisivulle.


Sovellukset


Päättelin näistä testeistä luomani moduulin toimivan halutulla tavalla.

Tehtävä suoritettu 18.5.2020 klo. 16:25


Lähteet

Karvinen, Tero 2020: Configuration Managment Systems – Palvelinten Hallinta – Spring 2020, h7. http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/, Luettu 18.5.2020

Karvinen, Tero 2018: Apache User Homepages Automatically – Salt Package-File-Service Example. http://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example, Luettu 18.5.2020

Bloglinux.me 2018: Using salt to automate apache2 and php installation (h2). https://www.bloglinux.me/node/11, Luettu 18.5.2020

Gratschew, Tommy 2020: Palvelinten hallinta ICT4TN022-3005 Harjoitus 2. https://tgratschew.news.blog/2020/04/13/palvelinten-hallinta-ict4tn022-3005-harjoitus-2/, Luettu 18.5.2020

Gratschew, Tommy 2020: Palvelinten hallinta ICT4TN022-3005 Harjoitus 5. https://tgratschew.news.blog/2020/04/30/palvelinten-hallinta-ict4tn022-3005-harjoitus-5/, Luettu 18.5.2020

Gratschew, Tommy 2020: Palvelinten hallinta ICT4TN022-3005 Harjoitus 6. https://tgratschew.news.blog/2020/05/12/palvelinten-hallinta-ict4tn022-3005-harjoitus-6/, Luettu 18.5.2020

Github linkki: https://github.com/tommygratschew/apachemoduuli

Palvelinten hallinta ICT4TN022-3005 Harjoitus 6

Yksi totuus


Tehtävän suorittaminen aloitettu 12.5.2020 klo. 11:00

Laitteen/alustan tiedot, jolla tehtävä suoritettiin:

VM #1 (Xubuntu)

  • Oracle VirtualBox 6.1.6
  • Xubuntu 18.04.03 LTS (+ VirtualBox guest additions)
  • 4GB RAM
  • 8GB Levytilaa (dynaaminen)

VM #2 (CentOS)

  • Oracle VirtualBox 6.1.6
  • CentOS 8.1.1911
  • 2GB RAM
  • 16GB Levytilaa (dynaaminen)

a) Asenna jokin toinen Linux-levityspaketti orjaksi Saltille. CentOS on hyvä vaihtoehto. Voit esimerkiksi asentaa CentOS:n VirtualBoxiin ja tehdä koneiden välille virtuaaliverkon. Jos käytät Vagrantia, ‘cent.vm.box = “centos/7″‘ on kätevä.

Aloitin lataamalla CentOS-käyttöjärjestelmän ISO-tiedoston CentOS-projektin verkkosivuilta. Tämän jälkeen loin VirtualBoxin GUI:ssa uuden virtuaalikoneen, jonka käyttöjärjestelmäksi määritin yleisesti RedHat-perheen. RAM-muistin määräksi asetin 2GB ja loin virtuaalikoneelle myös 16GB virtuaalisen kovalevyn. Tämän jälkeen mounttasin virtuaalikoneen levyasemaan lataamani ISO-tiedoston ja käynnistin koneen. Tämä aloitti käyttöjärjestelmän asentamisen ja määrittelin samalla käyttäjän asetuksen, näppäimistöasetukset yms. Pienen odottelun ja uudelleenkäynnistyksen jälkeen CentOS oli käyttövalmis. Päätin olla asentamatta VirtualBox Guest Additionsia tälle virtuaalikoneelle, sillä en kokenut sitä tarpeelliseksi tehtävän suorittamista varten. Tämän jälkeen asensin virtuaalikoneelle Salt Minionin SaltStackin ohjeen mukaan. Huomasin myös, että minion piti CentOS:lla käynnistää erikseen komennolla ”sudo systemctl start salt-minion.service”, sillä se ei automaattisesti asentamisen jälkeen käynnistänyt itseään.

Tämän jälkeen tein VirtualBoxin GUI:n kautta uuden Nat-verkon, jotta voisin yhdistää CentOS-minionin Xubuntulla olevaan masteriin. Löysin verkon luomisesta videon, jota seurasinkin verkon luomisessa. Käytin apuna myös Teemu Aittomäen harjoitus 4 raportissa olevia ohjeita verkon luomisessa. Tämän jälkeen liitin molemmat virtuaalikoneet luomaani NAT-verkkoon VirtualBoxin käyttöliittymän kautta.

Tämän jälkeen ajoin Xubuntu-masterilla komennon ”hostname -I”, jolla sain masterin osoitteen. Muutin tämän osoitteen molempien Xubuntu ja CentOS minioneiden ”Minion” tiedostoon ja asetin myös molemmille omat ID:t. Masterilla ajoin komennon ”sudo salt-key -A”, jolla sainkin hyväksyttyä CentOS-minionin (Xubuntu-minion oli jo hyväksytty aikaisemmissa harjoituksissa). Testasin vielä molempien toimivuuden/vastauksen komennolla ”sudo salt ’*’ cmd.run ’whoami’”, johon sainkin molemmilta vastaukset.


b) Kerää grains.items avulla tiedot orjista, joissa on eri levityspaketti.

Keräsin minioneista levityspaketin tiedot, joka onnistui komennolla ”sudo salt ’*’ grains.item osfinger”. Tämä palautti minioneilta terminaaliin seuraavan

Komennolla voi tarkastella vaikka mitä tietoja minioneista. Tarkistin vielä RAM-muistin määrän komennolla ”sudo salt ’*’ grains.item mem_total”, joka palauttikin oletetut määrät vastauksena (Xubuntulla 4GB, CentOS 2GB)


c) Tee päivän viesti (motd), jossa koneen tyyppi tulee grains osfinger -muuttujasta. Kokeile, että saat eri levityspaketeilla eri tuloksen. Voit hyödyntää aiemmin tekemääsi motd:ia.

Käytin tämän tehtävän suorittamiseen aikaisemmin luotuja motd ja ssh määrityksiä. Testasin suoraan ajaa sshd-tilan komennolla ”sudo salt ’*’ state.apply sshd”, joka onnistui Xubuntu-minionilla suoraan (niin kuin pitäisikin) ja osittain CentOS-minionilla. Jostain syystä motdissa ollut grainssin eräs komento ei halunnut toimia, joten poistin sen tekemästäni motdista. Tämä poisti virheen yrittäessä ajaa tilaa uudestaan. Toinen ongelma oli sshd_config tiedostossa, joka esti jostain syystä demonin käynnistämisen. Löysin tähän selvityksen, jossa selitettiin, että ssh-portin vaihtaminen saattaa estää demonin käynnistämisen. Vaihdoinkin portin aikaisemmin määritellystä 8888 takaisin porttiin 22 ja sain ajettua tilan tämän jälkeen onnistuneesti molemmilla minioneilla. Testasin vielä ottaa ssh-yhteyden molempiin ja tämä onnistui, sekä näytti muokatun motdin.


d) Tee tila, joka tekee RedHat-perheellä (esim. CentOS) tiedoston /tmp/redhat ja Debian-perheellä (esim Ubuntu) tiedoston /tmp/debian. Voit käyttää mitä vain eri perheiden levityspaketteja.

Aloitin luomalla /srv/salt -hakemistoon uuden kansion komennolla ”sudo mkdir tiedosto”. Siirryin kansion sisälle ja loin sls-tiedoston komennolla ”sudoedit init.sls”. Tähän tiedostoon kirjoitin Tero Karvisen tunnilla näyttämään esimerkkiin perustuvan koodin

Tämän jälkeen ajoin tilan komennolla ”sudo salt ’*’ state.apply tiedosto” ja se suoritettiin molemmilla minioneilla onnistuneesti.

Ajoin komennon vielä uudestaan varmistuakseni sen olevan idempotenssi ja tilan ajaminen onnistui ilman muutoksia.


e) Tee tila, joka asentaa ja konfiguroi Apachen kahteen erilaiseen järjestelmään, esim. CentOS ja Ubuntu. Paketin nimi on CentOS:ssa “httpd”. Käytä Salt-koodin generointia muoteilla.

Aloitin poistamalla aikaisemman Nginx-asennuksen Xubuntu-virtuaalikoneelta komennolla ”sudo apt-get purge nginx”, sekä poistin tätä varten tehdyn tilan ja index.html -sivun /var/www/html/ -hakemistosta.

Tämän jälkeen loin masterin /srv/salt/ -hakemistoon uuden kansion komennolla ”sudo mkdir apache” ja tämän kansion sisälle sls-tiedoston komennolla ”sudoedit init.sls”. Lisäsin tämän tiedoston sisälle Tero Karvisen tunnilla näyttämän esimerkkikoodin, jolloin tiedoston sisältö näytti seuraavalta

Ajoin tilan ja se suoritettiin onnistuneesti. Testasin palvelinten toimivuuden selaimella. Localhost-osoitteessa näkyi onnistuneesti Xubuntulla pyörivä Apache-palvelin. Yrittäessäni päästä CentOS:lla pyörivälle palvelimelle Xubuntun selaimella tämä ei toiminutkaan. Löysin ongelmaani ratkaisun eräästä CentOS-foorumeiden postauksesta. Ajoin CentOS-terminaalissa komennon ”firewall-cmd --add-service=http”, jonka jälkeen palvelin näkyi selaimessa onnistuneesti.

Tämän jälkeen muokkasin aikaisemmin tehtyä init.sls -tiedostoa seuraavasti

ja loin apache-kansioon index.html tiedoston komennolla ”sudoedit index.html”. Tiedostoon kirjoitin satunnaisen testaustekstin. Tämän jälkeen ajoin tilan uudestaan ja se suoritettiin molemmilla minioneilla onnistuneesti. Tarkistin vielä selaimesta molempien sivujen muutokset ja ne olivat päivittyneet haluttuun tiedostoon

Tehtävä suoritettu 12.5.2020 klo. 18:30


Lähteet

Karvinen, Tero 2020: Configuration Managment Systems – Palvelinten Hallinta – Spring 2020, h6. http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/, Luettu 12.5.2020

SaltStack Package Repo. https://repo.saltstack.com/#rhel, Luettu 12.5.2020

Aittomäki, Teemu 2020: Palvelinten hallinta – Harjoitus 4. https://teemuaittomaki.wordpress.com/2020/04/29/palv-hallinta-h4/, Luettu 12.5.2020

Asecurity: How to create NAT Network in Virtualbox. https://www.youtube.com/watch?v=X-uBoEW9H2Q, Katsottu 12.5.2020

Gratschew, Tommy 2020: Palvelinten hallinta ICT4TN022-3005 Harjoitus 5. https://tgratschew.news.blog/2020/04/30/palvelinten-hallinta-ict4tn022-3005-harjoitus-5/, Luettu 12.5.2020

StackExchange: sshd service fails to start. https://serverfault.com/questions/538037/sshd-service-fails-to-start, Luettu 12.5.2020

CentOS Forums: Unable to access Apache over LAN. https://forums.centos.org/viewtopic.php?t=59161, Luettu 12.5.2020

CentOS ISO-tiedosto. https://www.centos.org/download/, Luettu 12.5.2020

Palvelinten hallinta ICT4TN022-3005 Harjoitus 5

Muotteja & Moduleja


Tehtävän suorittaminen aloitettu 30.4.2020 klo. 13:00

Laitteen/alustan tiedot, jolla tehtävä suoritettiin:

  • Oracle VirtualBox 6.1.6
  • Xubuntu 18.04.03 LTS (+ VirtualBox guest additions)
  • 4GB RAM
  • 8GB Levytilaa (dynaaminen)

Aloitin harjoituksen suorittamisen ajamalla komennot ”sudo apt-get update”, ”sudo  ufw status” ja ”sudo salt ’*’ cmd.run ’whoami’”. Virtuaalikoneelle oli asennettu Salt master/slave -installaatio, sekä tehty muita muutoksia aikaisempien harjoitusten ja tuntitehtävien perusteella.


a) Hello templates! Tee muotilla esimerkkitiedosto, jossa on muuttujien (esim grains) arvoja.

Päätin tehdä muoteilla mukautetun motd-viestin yhdistäessä minionille ssh:n avulla. Aloitin luomalla varsinaisen motd-tiedoston /srv/salt/ -hakemistoon komennolla ”sudoedit /srv/salt/motd”, johon kirjoitin seuraavan:

Tämän jälkeen loin lisäsin aikaisemmin porttimäärittelyä varten tehtyyn sshd.sls tiedostoon seuraavan kohdan:

Tässä määrittelin motd-tiedoston löytyvän etc-hakemistosta, mikäli sitä ei ole (tässä tilanteessa ei vielä ole, koska oletuksena tiedosto pitää luoda manuaalisesti). ”Master” -tiedoston sijainnin polku on määritelty /srv/salt/ -sijaintiin (salt://motd) ja templaten formaattina käytetään jinjaa. Muutin myös aikaisemmassa tehtävässä luodusta sshd_config tiedostosta kohdan ”PrintMotd” no -> yes, mutta tämä sai aikaan luomani motd viestin printtautumisen kaksi kertaa (ajoin tässä välissä moneen otteeseen komentoa ”sudo salt ’*’ state.apply sshd”, muutosten tarkistelemiseksi). Laitoinkin tämän valinnan takaisin no-tilaan ja sain motd viestissäni näkymään käyttöjärjestelmän grainssin avulla.

Olin tässä kohtaa jo muutellut ja poistanut motd:sta kaiken ylimääräisen, mutta palaan tähän tarkemmin vasta kohdassa x.


b) Message of the Day. Sisäänkirjautuessa näytetään päivän viesti. Lisää päivän viestiin tietoa ympäristöstä käyttäen muotteja. Sopiva tiedosto on /etc/motd.

Olin aikaisemmassa kohdassa jo vahingossa tehnyt myös tämän kohdan. Päätinkin lisätä vielä lisää erilaisia muuttujia aikaisempaan motd-templateen. Päätin muuttaa motd-tiedostoa seuraavanlaiseksi:

Tämän jälkeen ajoin tilan vielä komennolla ”sudo salt ’*’ state.apply sshd”, joka ilmoitti muutosten onnistuneen. Kirjauduin ssh:n kautta minionille komennolla ”ssh -p 8888 tommy@10.0.2.15” ja uusi motd näkyikin oikein.


c) Bash. Tee bashiin asetuksia Saltilla. Ensin käsin, vasta toimivaa automatisoidaan. Muista testata lopputulos käyttäjän näkökulmasta.

Päätin vaihtaa shell promptin väriä ja muotoilua. Bash:in asetukset sijaitsivat ”.bashrc” tiedostossa, jota pääsin muokkaamaan komennolla ”nano /home/tommy/.bashrc”. Lisäsin tänne rivin Vivek Giten ohjeesta ja se vaihtoikin promptin väriä ja muotoilua.

Poistin aluksi lisäämäni rivin .bashrc-tiedostosta ja käynnistin terminaalin uudestaan, jolloin terminaalin promptin värit vaihtuivat takaisin oletuksiin. Loin uuden kansion komennolla ”sudo mkdir /srv/salt/bash”. Tein tämän kansion sisälle .sls -tiedoston komennolla ”sudoedit init.sls” johon kirjoitin seuraavan:

(Kuvissa värit ovat vaihdetut, sillä kuvat otettu tilan onnistuneen testaamisen jälkeen)

Tein myös toisen tiedoston kansioon komennolla ”sudoedit vari”, jonka sisälle liitin Vivek Giten aikaisemmin testatun värinvaihto-koodipätkän. Tämän jälkeen ajoin tilan komennolla ”sudo salt ’*’ state.apply bash”, joka ilmoitti ajamisen onnistuneen. Käynnistin terminaalin uudestaan ja värit olivatkin vaihtuneet onnistuneesti.


d) Nginx. Tee nginx-weppipalvelimeen asetuksia Saltilla. Voit esimerkiksi tehdä uuden site:n, niin että etusivu vaihtuu. Kun nginx on todennäköisesti sinulle uusi palvelin, tässä tehtävässä on siis ensin laaja osuus valita sopiva asetus nginx:lle ja saada se toimimaan käsin. Vasta toimivaa, käsin kokeiltua kannattaa automatisoida. Muista lopputuloksen testaus käyttäjän näkökulmasta.

Virtuaalikoneella oli asennettuna valmiiksi aikaisempien tehtävien takia Apache2-webpalvelin, joten poistin sen ja kaikki sille tehdyt salt-tilat/moduulit ennen Nginx:n asentamista. Tyhjensin myös selaimen välimuistin, jolloin aikaisempaa sivua ei enää näkynyt. Jouduin myös poistamaan index.html tiedoston /var/www/html/ -hakemistosta, jolloin sain Nginx:n default sivun näkyviin selaimessa.

Aloitin asentamalla Nginx:n manuaalisesti komennolla ”sudo apt-get install nginx”. Tutkin tämän jälkeen demonin asetuksia /etc/-hakemistossa ja huomasin sen olevan hyvin samantyyppinen apachen kanssa. Testasin muuttaa oletussivun sisältöä komennolla ”echo ”tama on manuaalisen maarittelyn testi”|sudo tee /var/www/html/index.nginx-debian.html”. Käynnistin demonin uudestaan komennolla ”sudo systemctl restart nginx.service” ja sainkin haluamani sisällön näkyviin localhost-osoitteessa.

Tein uuden kansio /srv/salt/ -sijaintiin komennolla ”sudo mkdir nginx”, jonka sisälle loin .sls -tiedoston komennolla ”sudoedit init.sls”. Tiedoston sisälle kirjoitin seuraavan:

Tämän jälkeen loin myös samaan nginx-kansioon html-sivun komennolla ”sudoedit default-index.html”, johon kirjoitin satunnaisen lauseen. Tämän jälkeen ajoin tilan komennolla ”sudo salt ’*’ state.apply nginx”, joka suoritettiin onnistuneesti. Selaimella localhost-osoitteessa näkyy myös sisällön muuttuneen manuaalisesti määritellystä uuteen html-sisältöön.

Voidaan siis päätellä tilan toimineen oikein.


x) Vapaaehtoinen: poista kaikki ylimääräinen motd:sta niin, että vain oma viestisi näkyy.

Poistin kaiken ylimääräisen motd:sta muokkaamalla sshd-määritystiedostoa komennolla ”sudoedit /etc/pam.d/sshd” ja kommentoimalla ulos rivin, jossa määritellään dynaamisesti luotu motd.

Jolloin vain itse luotu motd-tiedosto näkyy kirjautuessa ssh-yhteydellä.

Tunnilla selvisi kuitenkin, että pam.d -hakemistossa (Pluggable authentication modules) olevien tiedostojen muokkaamien voi olla väärin tehtynä riskialtista, joten parempi tapa ylimääräisen tiedon poistamiseen olisi ollut skriptien poistaminen/muuttaminen /etc/update-motd.d/ -hakemistosta.

Harjoitus suoritettu 30.4.2020 klo. 16:46


Lähteet

Karvinen, Tero 2020: Configuration Managment Systems – Palvelinten Hallinta – Spring 2020, h5. http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/, Luettu 30.4.2020

Lähdesmäki, Miko 2018: 3. Viikkotehtävä (Palvelinten hallinta). https://lahdemi.wordpress.com/2018/04/15/3-viikkotehtava/, Luettu 29.4.2020

Kunnari, Irene 2019: Packet-File-Service with Salt – homework 2. https://irenekunnari.wordpress.com/2019/04/09/packet-file-service-with-salt/, Luettu 29.4.2020

askubuntu.com: How do I disable the Message of the Day (MOTD) on Ubuntu 14.04?, Luettu 29.4.2020

SaltStack: SLS TEMPLATE VARIABLE REFERENCE. https://docs.saltstack.com/en/latest/ref/states/vars.html, Luetu 29.4.2020

Gite, Vivek: BASH Shell Change The Color of Shell Prompt on Linux or UNIX. https://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/, Luettu 30.4.2020

Palvelinten hallinta ICT4TN022-3005 Harjoitus 4

Modulikimara


Tehtävän suorittaminen aloitettu 27.4.2020 klo. 12:00

Laitteen/alustan tiedot, jolla tehtävä suoritettiin:

  • Oracle VirtualBox 6.1.4
  • Xubuntu 18.04.03 LTS (+ VirtualBox guest additions)
  • 4GB RAM
  • 8GB Levytilaa (dynaaminen)

Aloitin harjoituksen suorittamisen ajamalla komennot ”sudo apt-get update”, ”sudo  ufw status” ja ”sudo salt ’*’ cmd.run ’whoami’”. Virtuaalikoneelle oli asennettu Salt master/slave -installaatio aikaisempien harjoitusten pohjalta.


b) Modulikimara.
Moduuli/tila 1. UFW

Päätin luoda palomuurille moduulin, joka varmistaa palomuurin olevan päällä ja avaa SSH-hallintaa varten portin 22. Moduulin luonti perustui Tero Karvisen tunnilla näyttämään esimerkkiin, jota en sillä hetkellä ehtinyt itse vielä testata.

Aloitin navigoimalla itseni /srv/salt/ -tiedostosijaintiin, johon moduuleita luodaan. Loin tänne uuden kansion komennolla ”sudo mkdir ufw”. Tämän jälkeen loin init.sls tiedoston tähän kansioon komennolla ”sudoedit ufw/init.sls”, jonne kirjoitin seuraavan:

Jonka jälkeen tarkistin palomuurin tilan komennolla ”sudo ufw status”, joka palautti seuraavan

Tästä selvisi, että portti 22, ei ollut valmiiksi auki esimerkiksi aikaisempien tehtävien takia. Ajoin moduulin komennolla ”sudo salt ’*’ state.apply ufw”, joka ilmoitti toiminnon onnistuneen. Ajoin moduulin vielä uudestaan varmistuakseni sen olevan idempotentti ja tällä kertaa mitään muutoksia ei tehty, eli moduuli toimii oikealla tavalla. Tämän jälkeen tarkistin vielä varmuuden vuoksi ufw:n statuksen ja portti 22 oli kuin olikin auki.


Moduuli/tila 2. Apache

Toiseksi päätin tehdä moduulin, joka luo automaattisesti käyttäjille mahdollisuuden luoda omat kotisivunsa. Tein tämän Tero Karvisen ohjeiden pohjalta.

Aloitin luomalla kansion komennolla ”sudo mkdir apache” ja tämän kansion sisälle loin komennolla ”sudoedit apache/init.sls” moduulin määritystiedoston. Tämän tiedoston sisälle kopioin seuraavan sisällön Tero Karvisen ohjeesta:

Ja tein vielä samaan kansioon default-index.html -tiedoston komennolla ”sudoedit apache/default-index.html”, jonka sisälle kirjoitin yksinkertaisesti tekstin ”This is the default-index.html page!”. Tämän jälkeen ajoin vain luoman moduulin komennolla ”sudo salt ’*’ state.apply apache”, joka ilmoitti toiminnon onnistuneen ja selatessa localhost-osoitetta selaimessa sainkin kirjoittamani tekstin näkyviin.

Tämän jälkeen navigoin itseni vielä käyttäjän tommy, hakemistoon ja testasin käyttäjän kotisivujen luomista komennoilla ”mkdir public_html” ja tämän kansion sisälle loin index.html tiedoston komennolla ”nano public_html/index.html”. Kirjoitin tämän tiedoston sisälle ”Kayttajan Tommy kotisivut!” ja ajoin moduulin vielä kertaalleen uudestaan jolloin sain kotisivut näkyviin!


Moduuli/tila 3. Krita

Halusin tehdä moduulin joka muuttaisi Kritan asetuksia automaattisesti tiettyihin asetuksiin. Valitsin asetukseksi taustavärin sovelluksessa, jota muutin ensin manuaalisesti sovelluksen käyttöliittymästä ja tämän jälkeen etsin tiedostosijaintia find-komennolla. Löydettyäni sijainnin etsin asetustiedostosta taustavärin kohtaa komennolla ”cat kritarc|grep Background”, joka palautti seuraavan:

En kuitenkaan onnistunut tekemään tiedostoon muutoksia ja testaaman manuaalisesti värin vaihtamista, sillä yrittäessäni sudoeditillä muokata tiedostoa sain vastaukseksi vain ”sudoedit: kritarc: editing files in a writable directory is not permitted”. En saanut selvitettyä mahdollista syytä tälle ongelmalle, joten jätin moduulin luonnin tähän.


Moduuli/tila 4. Verkkotyökaluja

Loin seuraavaksi tilan Saltstackin verkkosivujen ohjeesta. Tein uuden kansion komennolla ”sudo mkdir nettools” ja tein tämän kansion sisälle sls-tiedoston komennolla ”sudoedit nettools/init.sls” johon kirjoitin seuraavan.

Tämän jälkeen ajoin tilan komennolla ”sudo salt ’*’ state.apply nettools” ja tilan ajaminen onnistui onnistuneesti. Ajoin tilan vielä uudestaan varmistuakseni sen toimivuudesta ja ettei se yrittäisi asentaa tiedostossa olevia paketteja jostain syystä uudestaan. Mitään muutoksia ei tapahtunut, joten tiedosto toimi onnistuneesti. Testasin vielä asennettujen pakettien toimimista komennolla ”sudo salt ’*’ cmd.run ’curl localhost’” ja sainkin vastaukseksi seuraavan

Josta voin päätellä tilan asentaneen paketit onnistuneesti.


Moduuli/tila 5. SSH

Tein seuraavaksi tilan, joka muutti SSH:n porttia Tero Karvisen ohjeen mukaan. Aloitin luomalla SSH tilan komennolla ”sudoedit sshd.sls” jonka sisään liitin ohjeesta seuraavan koodin:

Tämän jälkeen loin toisen tiedoston, jossa varsinaiset konfiguraatiot sijaitsevat komennolla ”sudoedit sshd_config”, johon liitin ohjeesta seuraavan tekstin:

Tämän jälkeen ajoin tilan komennolla ”sudo salt ’*’ state.apply sshd”, joka suoritti komennon onnistuneesti. Testasin uuden portin toimivuutta ensin yrittämällä ottaa yhteyden normaaliin 22 porttiin. Tämä vastasi ”Connection refused”. Testasin seuraavaksi yhteyttä porttiin 8888 komennolla ”ssh -p 8888 tommy@10.0.2.15” ja tämä päästikin minut sisään, eli tila toimi.


Moduuli/tila 6. Dokumentti

Jäin tässä kohtaa jumiin tehtäväannossa, sillä en keksinyt mitään moduulia tai tilaa, jota vielä suorittaa aikaisempien lisäksi. Päätinkin siis vain tehdä simppelin tekstitiedoston, jotta saisin kuudennen moduulin edes tehtyä.

Tein uuden .sls-tiedoston komennolla ”sudoedit teksti.sls”, johon kirjoitin seuraavan:

Tämän jälkeen tein vielä uuden tekstitiedoston komennolla ”sudo tekstitiedosto.txt”, johon lisäsin satunnaisen tekstin. Tämän jälkeen ajoin tilan komennolla ”sudo salt ’*’ state.apply teksti”. Tarkistin, että tiedosto oli varmasti kopioitunut tmp-kansioon ja otin muodon vuoksi vielä ssh-yhteyden minioniin. Tiedosto oli paikallaan, joten voidaan päätellä tilan toimineen.

Tehtävä suoritettu 27.4.2020 klo: 16:45


Lähteet

Karvinen, Tero 2020: Configuration Managment Systems – Palvelinten Hallinta – Spring 2020, h4. http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/, Luettu 27.4.2020

Karvinen, Tero 2018: Apache User Homepages Automatically – Salt Package-File-Service Example. http://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example, Luettu 27.4.2020

Karvinen, Tero 2018: Pkg-File-Service – Control Daemons with Salt – Change SSH Server Port. http://terokarvinen.com/2018/pkg-file-service-control-daemons-with-salt-change-ssh-server-port, Luettu 27.4.2020

SALTSTACK: Create a Salt State. https://docs.saltstack.com/en/getstarted/fundamentals/states.html, Luettu 27.4.2020

Palvelinten hallinta ICT4TN022-3005 Harjoitus 3

Git & Markdown


HARJOITUS LÖYTYY OIKEASSA MUODOSSA OSOITTEESTA: https://github.com/tommygratschew/palvelintenhallintaharjoitus3/blob/master/harjoitus3.md

# Palvelinten hallinta ICT4TN022-3005 Harjoitus 3

###### Tehtävän suorittaminen aloitettu 19.4.2020 klo. 15:30

Laitteen/alustan tiedot, jolla tehtävä suoritettiin:

* Oracle VirtualBox 6.1.4
* Xubuntu 18.04.03 LTS (+ VirtualBox guest additions)
* 4GB RAM
* 8GB Levytilaa (dynaaminen)

Aloitin tehtävän ajamalla komennon
`sudo apt-get update`
Sekä testasin minionin toimivuuden komennolla
`sudo salt '*' cmd.run 'whoami'`

---

#### a) MarkDown. Tee tämän tehtävän raportti MarkDownina. Helpointa on tehdä raportti GitHub-varastoon, jolloin md-päätteiset tiedostot muotoillaan automaattisesti. Tyhjä rivi tekee kappalejaon, risuaita ‘#’ tekee otsikon, sisennys merkitsee koodinpätkän.

Aloitin harjoituksen luomalla uuden repon githubin verkkosivulla.
 Annoin tälle repolle luovasti nimen "palvelintenhallintaharjoitus3".
 Valitsin vielä, että github luo tälle repolle valmiiksi README-tiedoston, sekä lisenssiksi GNU GPL v3.0 -lisenssin.
Tämän jälkeen sain seuraavan näkymän esiin selaimeen:

![1]

Kloonasin tämän jälkeen luomani repon virtuaalikoneelle komennolla
`git clone https://github.com/tommygratschew/palvelintenhallintaharjoitus3.git`, joka kloonasi kaikki repossa olleet
tiedostot repon nimiseen kansioon käyttäjän kotihakemistoon. Siirryin tähän kansioon komennolla
`cd palvelintenhallintaharjoitus3/` ja loin uuden markdown-tiedoston komennolla `nano harjoitus3.md`. Aloitin
raportin kirjoittamista tähän tiedostoon, jonka jälkeen tallensin sen ja siirsin sen githubbiin komennolla
`git add . && git commit; git pull && git push` (komento päivittää samalla myös muiden repon käyttäjien tekemät muutokset omalle koneelle). Pienen taistelun sisäänkirjautumistietojen ja access tokenien kanssa,
sain kuin sainkin tiedoston siirrettyä ja sitä pystyi tarkastelemaan repon github-sivulla. Ajoin tässä kohtaa myös 
komennon `git config --global credential.helper "cache --timeout=3600"` Tero Karvisen [ohjeesta](http://terokarvinen.com/2016/publish-your-project-with-github), jotta minun ei tarvinnut jokaista committia tehdessäni kirjoittaa kirjautumistietoja uudestaan.

![2]

![3]

Huomasin, että kaikki kirjoittamani asiast eivät olleet menneet sellaiseen muotoiluun kun olisin toivonut.
Löysinkin [cheatsheetin](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet), jonka avulla sain muokattua
muotoilun haluamaani muotoon, jolloin se näytti tältä

![4]

![5]

---

#### d) Näytä omalla git-varastollasi esimerkit komennoista ‘git log’, ‘git diff’ ja ‘git blame’. Selitä tulokset.

* `git log`

log-komento näyttää repoon tehdyt muutokset/commitit. Muutoslokista selviää jokaisen muutoksen token, muutoksen tehnyt henkilö (author),
muutoksen tarkka aika (date) sekä muutoksentekijän jättämä kommentti muutoksesta (esim. "Raportointia")

![6]

* `git diff`

diff-komennolla voidaan verrata miten ja missä tiedostoissa on eroja githubissa oleviin tiedostoihin verrattuna.

![7]

Esimerkiksi en commitannut vielä viimeisimpiä muutoksia raporttiin, jolloin diff-komento näytti nämä eroavat rivit + -merkillä.

* `git blame`

blame-komennolla selviää, kuka on kirjoittany minkäkin rivin kustakin tiedostosta. Esimerkiksi ajamalla komennon `git blame harjoitus3.md` 
terminaalissa näkyy kyseisen tiedoston jokainen rivi numeroituna, sen sisältö, kirjoittaja ja aikaleima.

![8]

---

#### e) Tee tyhmä muutos gittiin, älä tee commit:tia. Tuhoa huonot muutokset ‘git reset –hard’. Huomaa, että tässä toiminnossa ei ole peruutusnappia.

Kirjoitin raportin tiedostoon "TYHMÄ MUUTOS" ja tallensin tiedoston.

![9]

Tämän jäleen ajoin komennon `git reset --hard`, joka antoi seuraavan ilmoituksen

![10]

Eli muutokset oltiin muutettu takaisin viimeisimpään committiin.

---

#### f) Tee uusi salt-moduli. Voit asentaa ja konfiguroida minkä vain uuden ohjelman: demonin, työpöytäohjelman tai komentokehotteesta toimivan ohjelman. Käytä tarvittaessa ‘find -printf “%T+ %p\n”|sort’ löytääksesi uudet asetustiedostot. (Tietysti eri ohjelma kuin aiemmissa tehtävissä, tarkoitushan on harjoitella Salttia)

Päätin tehdä moduulin, joka asentaa Kritan. Aloitin luomalla Krita-kansion komennolla `sudo mkdir /srv/salt/krita/`, jonka sisälle loin vielä init.sls -tiedoston komennolla `sudoedit /srv/salt/krita/init.sls`. Tiedoston sisällöksi kirjoitin seuraavan

![11]

Jonka jälkeen ajoin moduulin komennolla `sudo salt '*' state.apply krita`, sain vastaukseksi toiminnon onnistuneen

![12]

Ajoin saman komennon kuitenkin uudestaan varmistaakseni, että se oli idempotentti.

![13]

Vastaukseksi sain sen, että komento onnistui (mutta mitään ei muutettu). Eli moduuli oli idempotentti.
Tarkistin vielä ohjelman varmasti asentuneen hakemalla sitä käynnistys-valikosta ja löysinkin ohjelman myös sieltä.

![14]

###### Tehtävä suoritettu 19.4.2020 klo. 20:00

---

#### Lähteet

Karvinen, Tero 2020: Configuration Managment Systems – Palvelinten Hallinta – Spring 2020, h3. http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/, Luettu 19.4.2020

Pritchard, Adam: Markdown Cheatsheet. https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet, Luettu 19.4.2020

Karvinen, Tero 2016: http://terokarvinen.com/2016/publish-your-project-with-github, Luettu 19.4.2020

[1]: https://i.imgur.com/oO3menW.png "1"
[2]: https://i.imgur.com/mkj9XqB.png "2"
[3]: https://i.imgur.com/myY7IjR.png "3"
[4]: https://i.imgur.com/ZJIr09P.png "4"
[5]: https://i.imgur.com/VxrfteK.png "5"
[6]: https://i.imgur.com/tNnqEtF.png "6"
[7]: https://i.imgur.com/T6xjfR4.png "7"
[8]: https://i.imgur.com/cCAEnMW.png "8"
[9]: https://i.imgur.com/9X3SFd3.png "9"
[10]: https://i.imgur.com/W8K58sJ.png "10"
[11]: https://i.imgur.com/jOL5kYQ.png "11"
[12]: https://i.imgur.com/doCz4ir.png "12"
[13]: https://i.imgur.com/GDqrsn4.png "13"
[14]: https://i.imgur.com/qBROrxs.png "14"

Palvelinten hallinta ICT4TN022-3005 Harjoitus 2

Package-File-Service


Tehtävän suorittaminen aloitettu 13.4.2020 klo. 13:30

Laitteen/alustan tiedot, jolla tehtävä suoritettiin:

  • Oracle VirtualBox 6.1.4
  • Xubuntu 18.04.03 LTS (+ VirtualBox guest additions)
  • 4GB RAM
  • 8GB Levytilaa (dynaaminen)

Aloitin harjouituksen ajamalla komennon “sudo apt-get update“.

a) Demonin asetukset. Säädä jokin demoni (asenna+tee asetukset+testaa) package-file-service -rakenteella. Tunnilla muutettiin ssh:n porttinumeroa, joten tee jotain muuta.

Harjoituksessa käytetyssä virtuaalikoneessa oli jo valmiiksi asennettu Salt master-slave installaatio aikaisemman harjoituksen pohjalta, joten en asentanut sitä uudestaan. Päätin säätää Apache2-demonin käyttäjien kotisivujen asetukset Tero Karvisen ohjeen mukaan. Tätä varten asensin Apachen komennolla ”sudo apt-get install apache2”. Tein myös reiän palomuuriin porttiin 80 komennolla ”sudo ufw allow 80/tcp”. Tämän jälkeen testasin asennuksen toimivuutta avaamalla localhost-osoitteen verkkoselaimesta, joka näyttikin Apachen default-verkkosivua. Muutin vielä verkkosivun sisällön tästä default-sivusta komennolla ”echo ”Cool stuff, coming soon!”|sudo tee /var/www/html/index.html”, jolloin localhost osoitteessa näkyi tehty muutos.

Tämän jälkeen enabloin userdir-moduulin komennolla ”sudo a2enmod userdir” ja käynnistin Apache-demonin uudestaan vielä komennolla ”sudo systemctl restart apache2”, jolloin tekemäni muutos tuli voimaan. Antamalla osoitteen localhost/~tommy/, sainkin näkyviin 403 Forbidden -virheen. Kyseinen virhe johtuukin mitä todennäköisimmin vain siitä, että käyttäjälle ei ole tehty vielä varsinaisia kotisivuja.

Aloin tämän jälkeen konfiguroimaan varsinaisia asetuksia. Loin ensin ”apache”-kansion komennolla ”sudo mkdir /srv/salt/apache”. Loin tämän kansion sisälle init.sls -tiedoston komennolla ”sudoedit /srv/salt/apache/init.sls”, johon liitin määritykset Tero Karvisen ohjeesta.

Loin vielä samaan apache-kansioon default html -sivun komennolla ”sudoedit /srv/salt/apache/default-index.html”, johon kirjoitin vain tekstin ”Kotisivu template!”. Tiedostojen luonnin jälkeen levitin luodut asetukset vielä minioneille komennolla ”sudo salt ’*’ state.apply apache”. Tämä palautti terminaaliin komennon onnistuneen.

Testasin luoda käyttäjälle kotisivut. Navigoin itseni ensin käyttäjän kotihakemistoon komennolla ”cd /home/tommy”. Loin tänne public_html-kansion komennolla ”mkdir public_html” ja tämän sisälle index-html-tiedoston komennolla ”echo ”Tommyn kotisivu”|tee public_html/index.html”, joka palauttikin odotetusti tekstin ”Tommyn kotisivu”. Varmistin kuitenkin toimivuuden myös selaimen kautta, joka näytti myös toimivan halutusti.


b) Uusi ohjelma. Asenna + tee asetukset + testaa jokin sovellus, jota ei ole käsitelty tunnilla. Asenna ensin käsin, ja käytä sen jälkeen find-komentoa etsiäksesi muuttuneet tiedostot.

Etsin aikaisemmassa tehtävässä muutettuja Apachen tiedostoja. Navigoin itseni ensin Apachen asetuskansioon komennolla ”cd /etc/apache2/”, jonka jälkeen ajoin find-komennon ”find -printf ”%T+ %p\n”|sort”. Komento palautti muutokset muodossa muokkausaika (%T+) + tiedoston nimi polulla (%p) ja \n lopussa laittoi jokaisen tapahtuman uudelle/omalle rivilleen. |sort laittoi löydetyt muutokset ajallisesti siihen järjestykseen, että viimeisimmät muutokset olivat viimeisenä. Komennosta näkyi selvästi Apachen asentamisesta johtuneet muutokset (klo. 14:01 tehdyt muutokset) ja aikaisemmin ajetun ”sudo a2enmod userdir” -komennon tekemät muutokset (klo. 14:18 tehdyt muutokset), jossa ”mods-enabled” -kansioon on luotu symlinkit ”mods-available” kansiossa olevista moduuleista.

Ajamalla hieman yksityiskohtaisempi komento ”sudo find -printf ‘%T+ M %p\n%A+ A %p\n%C+ C %p\n’|sort” (Tero Karvisen ohjeesta), saadaan myös selville mitä tiedostoja on muokattu (M), katseltu (A) ja minkä tila on muuttunut (C).


c) Aja jokin tila paikallisesti ilman master-slave arkkitehtuuria. Tutki debug-tulostetta. ‘sudo salt-call –local state.apply hellotero –state-output terse’

Päätin ajaa aikaisemmin luodun apache-tilan paikallisesti. Ajoin siis komennon “sudo salt-call --local state.apply apache --state.output terse”. Terminaalin tulostuikin tieto komennon ajamisen onnistumisesta. Debug-tulosteesta selviää läpikäydyt kohdat (apache.sls-tiedostosta). Ensimmäiseksi tarkistettiin, onko apache2-paketti asennettu. Tuloksena oli ”Clean Started”, josta voi päätellä paketin olleen asennettu ja käynnissä. Tämän jälkeen tarkistettiin Apachen default-verkkosivun tila, joka oli myös olemassa. Seuraavaksi symlinkkien tila, jotka olivat myös kunnossa ja viimeiseksi oliko palvelu käynnissä, joka palautti myös onnistuneen tilan.

Tehtävä suoritettu 13.4.2020 klo. 17:00


Lähteet

Karvinen, Tero 2020: Configuration Managment Systems – Palvelinten Hallinta – Spring 2020, h2. http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/, Luettu 13.4.2020

Karvinen, Tero 2018: Apache User Homepages Automatically – Salt Package-File-Service Example. http://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example, Luettu 13.4.2020

Karvinen, Tero 2018: Pkg-File-Service – Control Daemons with Salt – Change SSH Server Port. http://terokarvinen.com/2018/pkg-file-service-control-daemons-with-salt-change-ssh-server-port, Luettu 13.4.2020

Karvinen, Tero 2013: Forensic File Recovery with Linux – Undelete. http://terokarvinen.com/2013/forensic-file-recovery-with-linux, Luettu 13.4.2020

Gratschew, Tommy 6.2.2020: Linux palvelimet ICT4TN021-3010 Harjoitus 3. https://tgratschew.news.blog/2020/02/06/linux-palvelimet-ict4tn021-3010-harjoitus-3/, Luettu 13.4.2020

Palvelinten hallinta ICT4TN022-3005 Harjoitus 1

Salt & Idempotenssi


Tehtävän suorittaminen aloitettu 5.4.2020 klo. 22:00

Laitteen/alustan tiedot, jolla tehtävä suoritettiin:

  • Oracle VirtualBox 6.1.4
  • Xubuntu 18.04.03 LTS (+ VirtualBox guest additions)
  • 512MB RAM
  • 8GB Levytilaa (dynaaminen)
a) Asenna Salt ja siihen uusi orja. Voit tehdä ne esimerkiksi uudelle virtuaalikoneelle, niin pääset kokeilemaan puhtaalta pöydältä.

Aloitin ajamalla peruskomennot ”sudo apt-get update” ja ”sudo ufw enable”. Tämän jälkeen tein vielä palomuuriin reiät Salttia varten komennoilla ”sudo ufw allow 4505/tcp” ja ”sudo ufw allow 4506/tcp”.

Tämän jälkeen aloitin varsinaisesti itse salt masterin asentamisen virtuaalikoneelle. Asensin virtuaalikoneelle molemmat salt-masterin ja salt-minionin komennoilla ”sudo apt-get -y install salt-master” ja ”sudo apt-get -y install salt-minion”. Tämän jälkeen selvitin koneen IP-osoitteen komennolla ”hostname -I”, jotta voin editoida salt-minionin konfiguraatiotiedostoa sisältämään masterin IP:n. Tämän jälkeen editoin salt-minionin konfiguraatioita komennolla ”sudoedit /etc/salt/minion”. Poistin kommentoinnin ”master:” ja ”id:” kohdista ja lisäsin master kohtaan aikaisemmasta hostname-komennosta saamani IP-osoitteen ja id kohtaan laitoin salt-minionin nimeksi luovasti ”tommyminion”.

Tämän jälkeen käynnistin salt-minionin vielä uudestaan komennolla ”sudo systemctl restart salt-minion.service”, jolloin tekemäni muutokset tulivat voimaan. Komennolla ”sudo salt-key -A” sainkin hyväksyttyä luomani minionin

Testasin vielä minionin ja masterin välisen yhteyden toimivuutta ajamalla komennon ”sudo salt ’*’ cmd.run ’whoami’”, joka palauttikin vastauksena minionin nimen ja (oletettavasti) oikeudet.


b) Tee saltille idempotenssi hei maailma (siis tiedostosta, foo.sls)

Aloitin luomalla uuden kansion komennolla ”sudo mkdir -p /srv/salt/”, jonne loin foo.sls -tiedoston komennolla ”sudoedit /srv/salt/foo.sls”. Tiedoston sisällön kopioin Tero Karvisen ohjeesta (http://terokarvinen.com/2018/salt-states-i-want-my-computers-like-this), jonka jälkeen tiedoston sisältö oli seuraava:

Muotoilu erittäin tärkeä, väärin sisennetty tiedosto ei toimi.

Tämän jälkeen tein vielä tekstitiedoston, jonka sisällä ”Hei maailma” teksti oli. Tämä tapahtui komennolla ”sudoedit /srv/salt/footommy.txt”. Tehtyäni nämä toimet levitin vielä tämän tekstitiedoston kaikille minioneilleni (eli tässä tilanteessa vain tommyminion) komennolla ”sudo salt ’*’ state.apply foo”, joka ilmoitti komennon onnistuneen.

Loin tämän jälkeen vielä top.sls -tiedoston komennolla ”sudoedit /srv/salt/top.sls”, jonka sisältö oli myös Tero Karvisen ohjeesta. Sisältö näytti seuraavalta:

Tiedoston ideana on automaattisesti määrittää, mitä paketteja minioneilla pitää olla asennettuna. Levitinkin tämän tiedoston heti komennolla ”sudo salt ’*’ state.highstate”, jolloin sain viestin komennon onnistumisesta.


d) Kerää tietoa koneesta saltin avulla (grains.items)

Keräsin tietoa komennoilla ”sudo salt ’*’ grains.items” ja ”sudo salt ’*’ grains.items|less”, joita tarkastelemalla selviää tietoja salt-minionista. Näitä tietoja olivat esimerkiksi koneen prosessorin tiedot, käyttöjärjestelmän versio ja IP-osoitteet.


e) Kokeile jotain toista tilaa kuin file.managed. Tärkeitä ovat pkg.installed, file.managed, service.running, file.symlink, user.present, group.present. Ohjeita saa esim ‘sudo salt kissa sys.state_doc pkg.installed|less’

Päätin testata pkg.installed -tilaa komennolla ”sudo salt tommyminion pkg.install httpie”. Olin aluksi hieman yllättynyt sillä komento, joko ei koskaan tullut valmiiksi ja jouduin tappamaan sen painamalla ctrl + c, tai se antoi seuraavan vastauksen:

Tämän takia luinkin tilan ohjeita komennolla ”sudo salt tommyminion sys.state_doc  pkg.installed|less”. En kuitenkaan löytänyt ohjeista mitään merkkiä mahdollisesta kirjoitusvirheestä yms. komentoa ajaessani. Päätinkin testata komennon ajamista uudelleen n. 15 minuuttia ensimmäisestä yrityksestä, jolloin komento menikin yhtäkkiä läpi ja sain seuraavan vastauksen:

Mietin mistä tällainen oikkuilu olisi voinut johtua ja päädyin siihen lopputulokseen, että RAM-muistin vähäinen määrä (512MB) voisi aiheuttaa ongelmia järjestelmälle. Huomasin nimittäin yrittäessäni avata selainta virtuaalikoneella sen olevan melkeinpä käyttökelvottoman hidas. Tarkistinkin muistin käytön komennolla ”free -m”, josta selvisikin muistia olevan saatavilla erittäin niukasti virtuaalikoneen perustilassa salt-master ja -minion asennettuna.

Pitääkin siis tulevaisuudessa allokoida enemmän muistia virtuaalikoneelle, jotta ongelma ei toistuisi.

Tehtävä suoritettu 6.4.2020 klo. 1:50


Muokkaukset:

8.4.2020, Korjattu top.sls -tiedoston toiminnan väärä selitys ja tekstin muotoilu (mb -> MB, gb -> GB)

Lähteet

Karvinen, Tero 2020: Configuration Managment Systems – Palvelinten Hallinta – Spring 2020, h1. http://terokarvinen.com/2020/configuration-managment-systems-palvelinten-hallinta-ict4tn022-spring-2020/, Luettu 6.4.2020

Karvinen, Tero 2018: Salt Quickstart – Salt Stack Master and Slave on Ubuntu Linux. http://terokarvinen.com/2018/salt-quickstart-salt-stack-master-and-slave-on-ubuntu-linux, Luettu 6.4.2020

Karvinen, Tero 2018: Salt States – I Want My Computers Like This. http://terokarvinen.com/2018/salt-states-i-want-my-computers-like-this, Luettu 6.4.2020

Karvinen, Tero 2020: Remote Learning Tools for Tero’s Courses. http://terokarvinen.com/2020/remote-learning-tools-for-my-courses/, Luettu 6.4.2020

Oracle VirtualBox: https://www.virtualbox.org/

Linux palvelimet ICT4TN021-3010 Harjoitus 8

Prosessinhallintaa ja lokeja


Tehtävän suorittaminen aloitettu 23.3.2020 klo. 12:00

Laitteen tiedot, jolla tehtävä suoritettiin:

  • CPU: Intel i5-4670k
  • GPU: Nvidia GTX 1060 6 Gt VRAM
  • RAM: 16 Gt DDR3
  • Kingston DataTraveler G4 16 Gt, jossa Xubuntu 18.04.03

Aloitin harjoituksen ajamalla peruskomennot ”setxkbmap fi”, ”sudo apt-get update” sekä ”sudo ufw enable”.

a) Kuormitusta yli ajan. Tietysti palvelin hidastelee juuri silloin, kun olet nukkumassa. Seuraisipa joku kuormitusta tuolloin. Asenna heti aluksi jokin ohjelma seuraamaan kuormitusta, jotta voit tarkastella sitä koko tehtävän ajalta. Sopivia ohjelmia ovat esimerkiksi ‘munin’ ja sysstat (‘sar’).

Päätin asentaa suositelluista ohjelmista Muninin, jonka asensin komennolla ”sudo apt-get install munin”. Halusin varmistaa asennuksen onnistuneen, joten ajoin komennon ”man munin” saadakseni lisätietoa sovelluksesta. Halusin kuormitustiedot html-sivulle, johon löysinkin ohjeet Eino Liimatan tehtävänpalautuksesta (http://terokarvinen.com/oldsite/otherauthors/eliimatt-wordpress-org-puppet-liimatta-2013/eliimatt.wordpress.com/tag/munin/index.html). Ohjeesta selvisi, että tarvitsen tähän myös apachen, jonka asensinkin komennolla ”sudo apt-get install apache2” ja tein myös palomuuriin reiän komennolla ”sudo ufw allow 80/tcp”. Sain default-sivun näkyviin verkkoselaimesta, josta päättelin asennuksen onnistuneen. Liimatan ohjeesta selvisi myös se, että tarvitsen perus munin asennuksen lisäksi munin-node asennuksen. Yrittämällä asentaa sen komennolla ”sudo apt-get install munin-node” selvisi kuitenkin, että minulla olikin se jo asennettuna (todennäköisesti tuli aikaisemman munin-asennuksen mukana). Tässä kohtaa huomasin kuitenkin, että Liimatan ohje ei vastannutkaan enää omaa installaatiotani, joten siirryin käyttämään DigitalOceanin ohjetta asiasta (https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04#step-3-%E2%80%94-configuring-the-munin-master). Tein ohjeen step 3. mainitut muutokset .conf tiedostoihin ja käynnistin apachen ja munin-noden uudestaan. Verkkosivu kuitenkin antoi 404-erroria, joten kokeilin luoda muninille virtualhostin Apachen sites-available -kansioon.

Tämän jälkeen enabloin luomani .conf tiedoston komennolla ”sudo a2ensite munin.conf” ja disabloin default-sivun komennolla ”sudo a2dissite 000-default.conf”. Sitten vielä käynnistin Apache-demonin uudelleen ja sainkin Muninin näkyviin localhost osoitteeseen.


b) Kuormita järjestelmän eri osa-alueita. Esim. ‘stress’. Etsi prosessi toisesta ikkunasta ‘top’ tai ‘htop’, järjestystä voi vaihtaa “P” ja “M”.

”top” -komennolla normaalitilanne näytti koneella tältä.

Asensin stress-työkalun komennolla ”sudo apt-get install stress” ja ajoin sen komennolla ”stress”. Tämä ei itsestään aloittanut vielä järjestelmän kuormittamista vaan kertoi mitä parametrejä yms. voin valita kuormittamiseen. Päätin ajaa ohjelman ehdottaman peruskomennon ”stress –cpu 8 –io 4 –vm 2 –vm-bytes 128M –timeout 10s”. Tämä sai toisen terminaalin, jossa top-ohjelma oli päällä näyttämään seuraavaa.


Kokeile käytännössä, selitä ja analysoi. Muista selittää, mitä komennolla halutaan selvittää ja tulkitse kokeilusi tulokset. Aiheuta tarvittaessa kuormaa tai muuta työkalulla näkyvää tulkittavaa.
c) iotop; iotop -oa

Asensin iotop-ohjelman komennolla ”sudo apt-get install iotop” ja ajoin sen komennolla ”sudo iotop”. Tämä avasi hyvin samanlaisen näkymän terminaaliin kuin top-ohjelma, mutta kyseinen ohjelma keskittyy selvästi (nimensäkin mukaan) tiedon siirräntään ja sen seuraamiseen. En saanut selvää ns. kuormitusta aikaan testeissäni, mutta esimerkiksi verkkosivujen lataaminen näkyi hetkellisesti ohjelmassa. Oletan, että esimerkiksi suuria tiedostoja siirtelemällä/lataamalla näkyisi ohjelmassa selviä tietoja prosessista.


d) dstat

Asensin dstat-ohjelman komennolla ”sudo apt-get install dstat” ja ajoin sen. Tämä avasi ikkunan, joka näytti prosessorin, levyn, verkon ja järjestelmän kuormituksen tilan reaaliajassa. Ajoin uudelleen saman stress-komennon kuin aikaisemmin. Huomasinkin, kuinka prosessorinkäyttö hyppäsi heti dstatin mukaan n. 60% kuormitustestin ajaksi.

Avaamalla selaimessa eri verkkosivuja näkyy tämä selvästi myös dstat:n ”net/total” -osiossa verkkoliikenteenä.

Komento vaikuttaa hyvältä ja etenkin selkeältä tavalta seurata koneen reaaliaikaista kuormitusta.


e) ss –listening –tcp –numeric; ss –listening –tcp; ss –tcp; ss –listening –udp; ss –listening –udp;

Kyseisillä viidellä komennolla selviää: tällä hetkellä ”kuunneltavat” portit, selitykset porteille (esim. http (80) ja munin (4949)), koneen paikallinen osoite ja portti sekä avoinna olevat udp-portit.


f) grep -i error /var/log/syslog; grep -ir error /var/log/

Komennolla listataan järjestelmän lokeista rivejä, jotka sisältävät errorin. Tällä voidaan selvittää mahdollisia ongelmatilanteita tai esim. yhteydenottoyrityksiä, joita järjestelmään on kohdistunut. Suurin osa erroreista, joita minulla oli selvästi muninin asennuksen aikana syntyineitä ongelmia. Uusimmat errorit (koodi 1534), johtuiva selvityksen jälkeen siitä, että asennettu ohjelma (todennäköisesti tässä tilanteessa munin) yrittää yhdistää osoitteeseen, jota ei ole olemassa (https://askubuntu.com/questions/1058750/new-alert-keeps-showing-up-server-returned-error-nxdomain-mitigating-potential).


g) Load average näkyy esim ‘uptime’, ‘top’, ‘htop’. Prosessoriydinten määrä näkyy ‘nproc’. Miten load average tulkitaan? Miksi prosessoriydinten määrä on tässä kiinnostava? Vapaaehtoisena bonuksena voit miettiä, mitä hyötyä on kuormituslukemasta, joka voi mennä yli yhden eli yli 100%.

Ajamalla komennon ”uptime; nproc” terminaali palauttaa tämänhetkisen ajan (14:12:38), koneen käynnissä oloajan (3:39), käyttäjien määrän (1) ja kuormituksen keskiarvon viimeisen 1, 5 ja 15 minuutin sisällä (0.02, 0.10, 0.10). Nproc-komento puolestaan palauttaa numerona prosessorien lukumäärän (4) tietokoneessa. Kuormituksen keskiarvot vaikuttavat järkeviltä, sillä konetta ei oltu kuormitettu vähään aikaan. Ajamalla aikaisemman kuormitustestin jälleen uudelleen ja tämän jälkeen antamalla komennon ”uptime

näkyy, että tulokset ovat muuttuneet radikaalisti. Esimerkiksi yhden minuutin keskiarvo on mennyt yli 100% (2.26), joka tarkoittaa prosessorin olleen hetkellisesti ylikuormittunut.


h) Analysoi lopuksi koko ajalta keräämäsi kuormitustiedot. Löydätkö esimerkiksi aiheuttamasi kuormituspiikin?

Prosessorinkäyttö-kaavio vaikutti kaikista kiinnostavimmalta analysoida, joten keskityin sen analysoimiseen (en valitettavasti saanut kaavion zoomausta toimimaan oikein, joten kaavio on hieman pienehkö tämän takia). Kaavion alla olevista kentistä selviää prosessorin kuormituksen tämänhetkinen, pienin, keskiarvo ja suurin arvo ja esimerkiksi system-kohdan suurin arvo on todennäköisesti yhden kuormitustestin aikana syntynyt arvo. Kaaviossa on myös selvästi korkeampia piikkejä, jotka todennäköisesti vastaavat kahteen tehtävän alkupuolella tehtyyn kuormitustestiin. Kaavion Idle-arvosta selviää myös, että resursseja on myös reilusti saatavilla.

Tehtävä suoritettu 23.3.2020 klo. 17:00


Lähteet

Karvinen, Tero 2020: Aikataulu, h8. http://terokarvinen.com/2020/aikataulu-linux-palvelimet-ict4tn021-3010-torstai-aamu-alkukevat-2020-5-op#h1, Luettu 23.3.2020

Liimatta, Eino 2.9.2012: Harjoitustehtävä 2: Prosessinhallintaa. http://terokarvinen.com/oldsite/otherauthors/eliimatt-wordpress-org-puppet-liimatta-2013/eliimatt.wordpress.com/2012/09/02/harjoitustehtava-2-prosessinhallintaa/index.html, Luettu 23.3.2020

die.net: iotop(1) – Linux man page. https://linux.die.net/man/1/iotop, Luettu 23.3.2020

die.net: dstat(1) – Linux man page. https://linux.die.net/man/1/dstat, Luettu 23.3.2020

StackExhange. 2018: New alert keeps showing up: Server returned error NXDOMAIN, mitigating potential DNS violation DVE-2018-0001. https://askubuntu.com/questions/1058750/new-alert-keeps-showing-up-server-returned-error-nxdomain-mitigating-potential, Luettu 23.3.2020

Kili, Aaron 31.5.2017: Understand Linux Load Averages and Monitor Performance of Linux. https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/, Luettu 23.3.2020

finid 20.6.2015 How To Install the Munin Monitoring Tool on Ubuntu 14.04. https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04#step-3-%E2%80%94-configuring-the-munin-master, Luettu 23.3.2020

Linux palvelimet ICT4TN021-3010 Harjoitus 7

Vanha arvioitava laboratorioharjoitus


Tehtävän suorittaminen aloitettu 17.3.2020 klo. 11:00

Laitteen tiedot, jolla tehtävä suoritettiin:

  • CPU: Intel i5-4670k
  • GPU: Nvidia GTX 1060 6 Gt VRAM
  • RAM: 16 Gt DDR3
  • Kingston DataTraveler G4 16 Gt, jossa Xubuntu 18.04.03

Valitsin suorittevaksi tehtäväksi tämän harjoituksen: http://terokarvinen.com/2018/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-6-torstai-alkukevat-2018-5-op

Asenna LAMP (Linux, Apache, MySQL, PHP) ja testaa sen toiminta.
Tee tietokanta, jossa on seuraavat asiakkaat:
  • Kulta ja Kaivos ky
  • Piilosana ry
  • MetalliMake
Apache

Aloitin harjoituksen suorittamisen peruskomennoilla ”setxkbmap fi”, ”sudo apt-get update” ja ”sudo ufw enable”. Tämän jälkeen aloitin LAMP-stackin asentamisen asentamalla Apache-demonin komennolla ”sudo apt-get install apache2”, jonka jälkeen testasin tämän toiminnan avaamalla localhost-osoitteen web-selaimeen ja sainkin näkyviin Apachen default-sivun. Lisäsin myös tässä vaiheessa reiän palomuurin porttiin 80, jotta en ainakaan sen kanssa ajautuisi turhiin ongelmiin myöhemmin tehtävässä. Korvasin myös Apachen default-sivun sisällön komennolla ”echo ”valiaikainen sivu”|sudo tee /var/www/html/index.html”.

MySQL/MariaDB

Apachen jälkeen siirryin asentamaan MySQL:ää, joka tapahtui komennolla ”sudo apt-get install mysql-server”, joka ei jostain syystä onnistunut. En jäänyt selvittämään asiaa sen enempää vaan yritin siirtyä tehtävässä eteenpäin, ensin poistamalla epäonnistuneen asennuksen komennolla ”sudo apt-get –purge remove mysql-server” ja asentamalla MySQL:n sijasta MariaDB:n. Tämä tapahtui komennolla ”sudo apt-get install mariadb-client mariadb-server”, joka ei myöskään onnistunut ja näytölle pomppasikin myös system error -ikkuna. Käynnistin koneen uudelleen ja tein sille samat toimet uudestaan, mutta sain edelleen tässä samassa kohdassa ”system error” -ilmoituksen. Käynnistin koneen uudelleen vielä toisen kerran ja tein samat toimet kuin aikaisemmin paitsi en yrittänyt ensimmäiseksi asentaa MySQL:ää ja yritinkin asentaa MariaDB:n suoraan. Sainkin tämän asennettua ilman ongelmia. Tein myös reiän porttiin 22, jotta pääsen myöhemmin käsiksi koneeseen ssh:n kautta. Onnistuneen asennuksen jälkeen ajoin vielä skriptin, joka turvaa tietokannan paremmin komennolla ”sudo mysql_secure_installation”.

Asiakkaat-taulu

Tämän jälkeen tein tietokantaan taulun asiakkaille. Aloitin kirjautumalla tietokantaan root-käyttäjällä komennolla ”sudo mariadb -u root” ja tein uuden käyttäjän komennolla ”create database asiakkaat;”. Tämän jälkeen annoin vielä asiakkaat-käyttäjälle oikeudet tietokantaan tämän nimen alla olevassa kansiossa komennolla ”grant all on asiakkaat.* to asiakkaat@localhost identified by ’[SALASANA]’;”. Tämän jälkeen poistuin tietokannasta exit-komennolla ja kirjauduin takaisin sisään asiakkaat-käyttäjällä komennolla ”mariadb -u asiakkaat -p”. Hyppäsin asiakkaat käyttäjän kohtaan komennolla ”use asiakkaat;”. Tänne tein uuden taulun komennolla ”create table asiakkaat (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024) );”. Lisäsin luotuun tauluun tehtävän asiakkaat komennolla ”insert into asiakkaat(name ) values (”Kulta ja Kaivos ky”)” ja sama myös muille asiakkaille. Tällöin taulu näytti tältä:

PHP

Aloitin PHP:n asentamisen komennoilla ”sudo apt-get install libapache2-mod-php” ja ”sudo apt-get install php-mysql”, jonka jälkeen siirryin vielä PHP:n conf tiedostoon muokkaaman sen toimimaan käyttäjien kanssa.

(samalla ajoin myös komennon ”sudo a2enmod userdir”), jonka jälkeen käynnistin Apache2-demonin uudestaan. Tämän jälkeen loin xubuntu-käyttäjän kotihakemistoon public_html-kansion ja sen sisälle index.php tiedoston, johon liitin lyhyen testikoodin Tero Karvisen ohjeesta (http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo) ja avasin tämän jälkeen selaimen osoitteesta localhost/~xubuntu/, joka näyttikin lukua 4. Tästä voin päätellä php:n toimivan.


Tee PHP-ohjelma, joka lukee nämä tietueet. Laita tämä sivu näkyviin osoitteessa http://sorkkacrm.example.com (Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.)

Olinkin tehnyt tehtävässä 1. melkeinpä kaikki alustukset tämän tehtävän suorittamiseen, jonka takia lisäsinkin vain Tero Karvisen ohjeesta php-koodin (http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo), jo aikaisemmin luotuun index.php-tiedostoon ja käynnistin Apache2-demonin uudestaan. Tällöin selain näyttikin tietokannan sisällön!

Tämän jälkeen loin vielä uuden virtual host .conf-tiedoston Apachen sites-available kansioon. Poistin default .conf-tiedoston käytöstä ja laitoin tekemöni .conf tiedoston päälle. Sitten lisäsin vielä hosts-tiedostoon kohdan, joka ohjaa sorkka.example.com osoitteesta käyttäjän sivulle. Tällöin sain php-sivun näkymään halutulla osoitteella.


(Onko koneellemme yritetty murtautua? (Kyllä). Etsi omalta paikalliselta koneeltasi todisteet)

Tarkistin Apachen logeista (esim. access.log) mahdollisia murtautumisyrityksiä, mutta niitä ei löytynyt (toisaalta ihan oletettavissa, sillä suoritus onkin vanha laboratorioharjoitus (eikä käynnissä oleva).

Tee staattinen HTML5 weppisivu, jonka otsikkona (molemmat title ja h1) on “Sorkka ja Rauta Oy”. Laita sivu näkyviin osoitteeseen http://rauta.example.com/ . (Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.)

Tein xubuntu-käyttäjän kotihakemistoon kansion komennolla ”mkdir sitekaksi”, jonka sisään loin komennolla ”nano index.html” html-tiedoston. Liitin tiedostoon HTML5-pohjan Tero Karvisen ohjeesta (http://terokarvinen.com/2012/short-html5-page) ja tein siihen tarvittavat muokkaukset titlen ja h1 muuttamiseksi. Tämän jälkeen loin uuden .conf tiedoston Apache:n sites-available kansioon.

ja enabloin tiedoston komennolla ”sudo a2ensite sitekaksi.conf”, jonka jälkeen käynnistin vielä Apache-demonin uudestaan komennolla ”sudo systemctl restart apache2”. Tämän jälkeen lisäsin vielä halutun osoitteen hosts-tiedostoon, jolloin sain sivun näkymään normaalisti selaimessa halutulla osoitteella.


Einari Vähä-aho ryhtyy koodaamaan. Tee einarille käyttäjä ‘einari’.
Tee einarille esimerkkikotisivu PHP:lla ja laita se näkymään osoitteessa http://localhost/~einari/ . Esimerkkisivun pitää tulostaa “Einari” käyttäen PHP:n print-funktiota.

Tein uuden käyttäjän komennolla ”sudo adduser einari” tämän jälkeen hyppäsin Einarin kotihakemistoon komennolla ”cd /home/einari/”, johon tein uuden kansion komennolla ”sudo mkdir public_html” ja tämän kansion sisälle uuden php-tiedoston komennolla ”sudoedit index.php”. Kirjoitin tähän php-tiedostoon lyhyen koodin:

, jonka jälkeen käynnistin vielä Apache-demonin uudestaan ja sivu tuli näkyviin halutussa osoitteessa.

Mikä kyseessä olisi ollut oikea tuotantoon menevä nettisivu, jollekkin käyttäjälle olisin tämän jälkeen muuttanut luomieni kansioiden ja tiedostojen käyttöoikeudet tälle käyttäjälle ”chown” -komennolla, mutta en ajan säästämiseksi näin nyt tehnyt!


Kuormitukset

Tehtävä suoritettu 17.3.2020 klo. 15:00


Muokkaukset:

23.3.2020, Lisätty laitteen tiedot, jolla tehtävä on suoritettu. Muokattu tekstin ulkoasua siistimmäksi.

Lähteet

Karvinen, Tero 2020: Aikataulu, h7. http://terokarvinen.com/2020/aikataulu-linux-palvelimet-ict4tn021-3010-torstai-aamu-alkukevat-2020-5-op#h1, Luettu 17.3.2020

Karvinen, Tero 2016: Read MySQL database with PHP – php-pdo. http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo, Luettu 17.3.2020

Karvinen, Tero 2012: Short HTML5 page. http://terokarvinen.com/2012/short-html5-page, Luettu 17.3.2020

Karvinen, Tero 2018: Install MariaDB on Ubuntu 18.04 – Database Management System, the New MySQL. http://terokarvinen.com/2018/install-mariadb-on-ubuntu-18-04-database-management-system-the-new-mysql, Luettu 17.3.2020

Karvinen, Tero 2018: Arvioitava laboratorioharjoitus – Linux palvelimet ict4tn021-6 torstai – alkukevät 2018 – 5 op. http://terokarvinen.com/2018/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-6-torstai-alkukevat-2018-5-op

Gratschew, Tommy 6.2.2020: Linux palvelimet ICT4TN021-3010 Harjoitus 3. https://tgratschew.news.blog/2020/02/06/linux-palvelimet-ict4tn021-3010-harjoitus-3/, Luettu 17.3.2020

Design a site like this with WordPress.com
Get started