Harjoitus H3

Tero Karvisen Linux Palvelimet – kurssin 3. viikon kotitehtävä vuorossa. Tehtävät löytyvät kokonaisuudessaan osoitteesta

http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op

Tehtävänanto kokonaisuudessa oli tälle viikolle:

h3

Tämä h2 tehtävä on päivitetty siten, että voit ratkoa tehtäviä valintasi mukaan LAMP:illa, Python Flask + Postgrella tai jollain muulla valitsemallasi kehikolla. Helppoja rivi tiistaina opetetuilla aiheilla voisi olla esim a-b-i tai a-b-h. Ja guruille tässä on paljon haastavia vapaaehtoisia tehtäviä.

a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla. Tämä a-kohta on vaihdettu.

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.Tee jokin seuraavista (yksi riittää, useampi vapaaehtoisena lisätehtävänä):

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)

Näistä valitsin oman tasoni mukaan helpomman polun, eli tehtävät a, b sekä i.

Ensimmäisten kahden harjoituksen tavoin teen tehtävät omalla Asuksen kannettavalla tietokoneella:

Tehtävässä käytetty tietokone:

Asus G551J

Intel Core i7-4710HQ @ 2.50GHz

RAM 8Gt

Windows 10 64bit

NVIDIA Geforce GTX 860M

sekä ensimmäisessä harjoituksessa luodulla XUbuntu live-tikulla.

image1

A) Avattu terminaalinäkymä ja syötetty komento “sudo apt-get update”, jolla haettu uusimmat päivytykset.

Tämän jälkeen asennettu Apache2 palvelin komennolla “sudo apt-get install apache2”.

Omalla IP-osoittella sekä kirjoittamalla “localhost” URL-kenttään avautui toimiva palvelinsivu:

image3

Luotu oma Virtualhost komennolla “sudoedit /etc/apache2/sites-available/kirik.conf”, jonne löin komennot: ”

<VirtualHost *:80>
DocumentRoot /home/xubuntu/public_html/

<Directory /home/xubuntu/public_html/>
Require all granted
</Directory>
</VirtualHost>

Enabloin confit ja otin defaultit pois käytöstä komennoilla:

sudo a2ensite kirik.conf
sudo a2dissite 000-default.conf

jonka jälkeen uudelleenkäynnistin apache – palvelimen.

Tein oman public-html kansion sivustoa varten:

mkdir public_html/

jonne tein index,html tiedoston, jonne laitoin testitekstiä.

Tehävänannon mukaisesti sain sivun toimimaan osoitteilla “omaIP/~xubuntu/” sekä “localhost/~xubuntu”. Kuvassa näkyy vain jälkimmäin testaus, koska en halua omaa IP-osoitettani nettiin näytille:

image6

B) Etsitty lokista onnistunut sekä epäonnistunut latauskerta.

Siirryin kohteeseen: /var/log/apache2 ja syötin komennon “sudo tail -F*”, jonka avulla sain viimeiset lokitiedot kaikista hakemistossa olevista kolmesta lokista “access.log, error.log other_whosts_access.log”.

Löytyi onnistunut latauskerta, jonka lokirivi kertoo:

127.0.1.1:80 127.0.0.1 – – [08/Sep/2017:10:47:30 +0000] “GET / HTTP/1.1” 200 500 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0”

“127.0.1.1:80 127.0.0.1” Viittaa localhostin IP-osoitteeseen, joka on oma tietokone tässä tapauksessa ja :80 on http:n käytössä oleva portti. “[08/Sep/2017:10:47:30 +0000]” kertoo päivämäärän eli 8. syyskuuta 2017 sekä kellonajan, joka on 10:47:30. Kellonaika on GMT+0, eli kello on Suomen ajassa tätä harjoitusta tehdessä 13:47:30.

“GET / HTTP/1.1″ 200 500” Hakupyyntö webbiselaimelta sekä onnistunut palautekoodi “200 ok” “500” viittaa merkkimäärän, joka palautteessa lukee.

“(X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0” Ilmaistaan käytetyn Ubuntun mallia sekä Firefoxin versiota.

 

Epäonnistunut latauskerta:

127.0.1.1:80 127.0.0.1 – – [08/Sep/2017:10:47:47 +0000] “GET / HTTP/1.1” 404 496 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0”

“404 496” Kertoo epäonnistuneen latauskerran virhekoodin: Page not found. Ja 496 palautteen merkkimäärän.

 

I) Sain aikaiseksi HTTP – Statukset 200 sekä 404 kuvassa näkyvät kaksi alinta lokia:

image10

Onnistunut eli “200” syntyi menemällä onnistuneesti sivulle osoitteella “localhost/~xubuntu”. Epäonnistunut eli “404” syntyi kirjoittamalla URL – kenttään virheellinen osoite, joka oli tällä kertaa “localhost/~xubun”, jolloin tuli virheilmoitus: Page not found.

Linux Palvelimet Harjoitus 2 / Kirik Ainetdin

Käynnissä olevan Tero Karvisen Linux Palvelimet – kurssin toisen viikon kotitehtävät.

Tehtävät löytyvät osoitteesta:

http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op

Tehtävän tekemiseen kului aikaa 4 tuntia.

Harjoitus 2

a) Aiheuta lokiin kaksi eri tapahtumaa: yksi esimerkki onnistuneesta ja yksi esimerkki epäonnistuneesta tai kielletystä toimenpiteestä. Analysoi rivit yksityiskohtaisesti.

b) Vapaaehtoinen kohta, 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:’)

c) Tee unelmien apt-get -komento: yksi komentorivi, joka asentaa suosikkiohjelmasi.

d) Asenna komentokehotteen paketinhallinnasta kolme itsellesi uutta komentorivillä toimivaa ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

e) Opettele ulkoa ja harjoittele tärkeimmät komennot (tätä “opettele ulkoa” alakohtaa ei tarvitse raportoida):

 

Tehtävässä käytetty tietokone:

Asus G551J

Intel Core i7-4710HQ @ 2.50GHz

RAM 8Gt

Windows 10 64bit

NVIDIA Geforce GTX 860Mimage1

Yllä olevassa kuvassa oman läppärin lisäksi myös ensimmäisessä harjoituksessa luotu livetikku. Jälkimmäisessä kuvassa onnistunut käynnistsy Try XUbuntu without install moodissa livetikulta:

image2

Harjoitus 2 vastaukset

A) Luotu ensin onnistunut toimenpide:

image3image4

Luotu salasana komennolla “sudo passwd” ja asetettu salasanaksi “xxx”. Terminaalinäkymässä navigoitu paikkaan /var/log/ ja syötetty komento tail -f auth.log.

Sep 1 11:09:25 xubuntu passwd[32088]: pam_unix(passwd:chauthtok): password changed for root

Komennossa “Sep 1” viittaa päivämäärään 1. syyskuuta sekä “11:09:25” tarkkaan kellonaikaan. “Xubuntu passwd” viittaa salanasanaan ja “32088” mahdollisesti suorittavaan demoniin. “Pam_unix” = authentication module. Loppu osa kertoo “root:n” salasanan vaihtuneen. Googlettamalla löytyy todella heikosti tietoa analyysin avustamiseksi. Varmasti kokeneemmalta käyttäjältä analysointi onnistuu helpommin sekä googlaaminen onnistuu oikeilla hakusanoilla oikein, mutta vasta-alkajana sallittakoon mahdolliset virheet tulkinnassa.

Suoritettu myös epäonnistunut toimenpide:

image5

Elikkä tällä kertaa yritetty vaihtaa salasanaa komennolla “passwd” ilman “sudo” komentoa. Tällöin tuli vaatimus nykyisen salasanan tietämisestä. Vastattu kyselyyn “yyy”, kun oikea salasana on “xxx”. Auth.logiin tuli virheilmoitus:

image6

Sep 1 11:11:16 xubuntu passwd[32090]: pam_unix(passwd:chauthtok): authentication failure; logname= uid=999 euid=0 tty= ruser= rhost= user=xubuntu.

Aiemmasta poiketen epäonnistunut komento.

 

C) Tehtävänäni oli luoda unelmien apt-get komento. Olen täysin uusi Linuxin kanssa, joten minulla ei suuremmin ole käsitystä tämän komennon mahdollisuuksista eikä näin ollen suurempia toiveita kyseistä komentoa kohtaan. Kokeilin kuitenkin asentaa komentoa käyttämällä loppujen tehtävien kaikki tarvittavat ohjelmat ja se sujui oikein mallikkaasti. Ensimmäisestä apt-get komennosta (joka on tällä hetkellä unelmien komento) muodostui:

“sudo apt-get install vlc” ja alla olevan kuvan mukaan homma lähti mukavasti rullaamaan:

image7

d) Viimeisessä tehtävässä piti asentaa kolme kappaletta komentorivillä toimivaa ohjelmaa. Ohjelmien löytäminen oli koko kotitehtävän haastavin osuus ja siihen kului toista tuntia aikaa. Ohjelmiksi valikoitui ensimmäisenä Terminator, jolla voi muokata terminaalinäkymän ulkonäköä:

image11

Toisena ohjelmana siege, jolla voi testata HTTP – sivujen lataamista:

image9

Ja kolmantena ohjelmana Irssi eli IRC client:

image13

 

Linux Palvelimet

Harjoitus H1:

a) Tee oma Linux-livetikku. Kokeile sitä jossain muussa kuin koulun koneessa.

Luotu oma Live-usb-tikku. Ostettu Kingstonin 8GB DataTraveler muistitikku tätä tehtävää varten. Aloitettu lataamalla XUbuntu-tiedosto BitTorrentin avulla omalle läppärille:

image2

Jatkettu tehtävää luomalla livetikku apuohjelmaa käyttämällä ja asentaen xubuntu tikulle:

image3

Livetikun kokeilun kohteeksi joutui oma läppäri, jossa tikku lähti toimimaan moitteetta:

b) Listaa testaamasi koneen rauta (‘sudo lshw -short -sanitize’).

Koneen raudan listaus:

image7

c) Asenna kolme itsellesi uutta ohjelmaa. Kokeile kutakin ohjelmaa sen pääasiallisessa käyttötarkoituksessa.

Asennettu kolme ohjelmaa: LMMS 1.1.3 musiikkieditori, Blender sekä Gnome Maps:

 

d) Mitä lisenssiä kukin näistä ohjelmista käyttää? Selitä lyhyesti, mitä oikeuksia ja velvolisuuksia tuosta lisenssistä seuraa.

Blender sekä Gnome Maps käyttävät GNU General Public Licenseä ja LMMS saman lisenssin versio 2:ta.

GNU GPL on vapaiden ohjelmistojen julkaisuun tarkoitettu lisenssi, joka antaa oikeuden käyttää, kopioida, muuttaa ja jakaa edelleen ohjelmia ja niiden lähdoodia. Oikeudet koskevat ketä tahansa käyttäjää. Lisenssi antaa mahdollisuudet julkaista omaa muokattua ohjelmaa ja sitä saa myös myydä eteenpäin palveluna.

Version 2:ssa on lisätty edellytys, että lisenssin alla olevaa ohjelmistoa ei saa jakaa,  jos se olisi mahdollista ainoastaan toisten käyttäjien vapauksia rajoittamalla.

 

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.

Käyttämäni ohjelmat ja niiden Linux-vastineet:

MS Office   –   LibreOffice

Microsoft Edge   –   Mozilla Firefox

Outlook sähköposti   –   Mozilla Thunderbird