Oma puppet moduuli

Tehtävänanto

Tehtävän antona oli tehdä oma puppet moduuli. Jouduin jonkin verran muuttamaan alkuperäistä aihettani, koska en yksinkertaisesti saanut moduuliani toimimaan. Valitsin aiheeksi selaimen (Google Chrome) asennuksen, sekä työpöydän taustakuvan vaihdon. Lopuksi valmis moduuli esitellään luokalle.

Alkutoimet ja määritykset

Aloitin käynnistämällä Linuxin livetikulta, jossa käytin versioita ( Xubuntu 16.04 LTS amd64). Seuraavaksi avasin terminaalin ja annoin komennon $sudo apt-get udate, jotta ohjemistot päivittyvät uusimpiin versioihinsa. Sitten komento $setxkbmap fi, jotta ääkköset toimivat. Sitten asennetaan puppet ja git. $sudo apt-get install -y git ja $sudo apt-get install -y puppet. Latasin netistä Google Chrome.ded (“.exe”) asennustiedoston sekä valitsemani taustakuvan jonka nimesin “wallpapers.png”.

Puppet kansiot

Loin omalle modulilleni kansion, /etc/puppet/modules ja tämän alle manifests, templates ja files. Seuraavaksi siirsin äsken lataamani Chromen asennustiedoston sekä taustakuvan juuri luotuun files kansioon.

$ sudo mv google-chrome-stable_current_amd64.deb /etc/puppet/modules/konstamodule/files

$ sudo mv wallpaper.png /etc/puppet/modules/konstamodule/files

Init.pp

Loin manifests kansion alle init.pp tiedoston ja nimesin class konstamodule eli sama kuin moduulini nimi. (Huom. Muista) $ Package {ensure => “installed”, allowcdrom => “true”} , mikäli käytät livetikkua.

Kuvassa init.pp sisältö:

initppsisältö

Site.pp

Loin site.pp tiedoston /etc/puppet/manifests alle jonka sisälle pelkästään class nimi.

Kuva site.pp sisältö

siteppsisältö.png

Template

Seuraavaksi templates kansion alle luotiin tiedosoto xfce4-desktop.xml

Tiedoston siällöksi kopion valmiin pohjan jota muokkasin hieman. Vaihdoin tiedostopolkua siten että se käyttää lataamaani taustakuvaa, eli lisäsin “wallpaper.png” rivin polkuun.

Kuvassa näkyy muuttamani tiedostopolku.

xfce4sisältö

Nyt moduulissani on tarvittavat määritysket sekä tiedostot valmiina. Kuvassa vielä tiedostorakenne kaikista aikaisemmin luoduista kansioista sekä tiedostoista.

tree nakyma.png

Moduulin ajo

Moduulin ajoin komennolla $ sudo puppet apply -v -d -e ‘class {konstamodule:}’

Kuvassa lopputulos ajamisen jälkeen, ongelmia ei ilmennyt.

modulin ajo

Google Chrome oli asentunut onnistuneesti.

chrometestaus

Sekä taustakuva oli vaihtunut. Tosin vasta sen jälkeen kun kirjauduin uudelleen sisään.

taustavaihto.png

Moduulin ajaminen onnistui!

Github

Loin Githubiin uuden repositoryn (puppetmodule) ja annoin git s-posti osoitteen sekä oman käyttäjätunnuksen.

$ git config –global user.email konsta.vaarala@myy.haaga-helia.com

$ git config –global user.name konsta vaarala

Tämän jälkeen repository kotihakemistooni.

$ git clone https://github.com/konstavaarala/puppetmodule.git

Kun repository on kotihakemistossa, kopioidaan puppet kansion sisältö konstamodule kansioon.

$ cp -r /etc/puppet /home/xubuntu/konstamodule

Sitten voidaan kopioida oman puppetmodulini sisältö githubiin.

$ git add .

$ git commit

$ git pull

$ git push

Salasanaa ja käyttäjätunnusta kysyttäessä ne syötetään. Nyt oma moduulini on kopioitunut githubiin, ja se löytyy osoitteesta:

https://github.com/konstavaarala/puppetmodule

Lähteet:

http://terokarvinen.com/2016/firefox-system-wide-settings-etcfirefoxsyspref-js

https://askubuntu.com/questions/220960/cannot-install-google-chrome-how-do-i-fix-it

https://wiki.archlinux.org/index.php/xfce

https://www.puppetcookbook.com/

https://akijuvonen.wordpress.com/2016/12/12/oma-puppet-moduuli/

http://terokarvinen.com/2012/puppet-reading-list

 

“Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

“Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

Advertisements

Palvelinten hallinta ict4tn022-2 Harjoitus 4

h4. a) Master-slave. Aloita tyhjästä koneesta. Tee yhdestä koneesta orja ja toisesta herra. Kokeile, että orja saa herralta modulin. (Voit käyttää labraa, kun se on tyhjä. Laita mukaan ‘puppet cert –list –all’, ‘tail /var/log/auth.log’, ‘tail /var/log/syslog’).

Aloitin käynnistämällä Linuxit livetikulta molemmissa läppäreissä, joissa käytin versioita ( Xubuntu 16.04 LTS amd64). Seuraavaksi avasin terminaalin ja annoin komennon $sudo apt-get udate, jotta ohjemistot päivittyvät uusimpiin versioihinsa. Sitten komento $setxkbmap fi, jotta ääkköset toimivat.

Nimesin toisen koneen “master” ja toisen “slave”.

$ sudo hostnamectl set-hostname master 

$ sudo hostnamectl set-hostname slave

Jonka jälkeen avahi daemonin uudelleen käynnistys $ sudo service avahi-daemon restart

Testataan slave:lla toimiiko ping  $ping master.local ja vastaus tuli.

Seuraavaksi masterille asennettiin puppet master $ sudo apt-get -y install puppetmaster jonka jälkeen se pysäytetään $ sudo service puppetmaster stop. Sitten poistetaan vanhat konfiguraatioit $ sudo rm -r /var/lib/puppet/ssl

Sitten lisätään masterin nimi config tiedostoon $ sudoedit /etc/puppet/puppet.conf. Rivi jonka lisäsin dns_alt_names = master, jonka jälkeen käynnistettiin puppet master $ sudo service puppetmaster start

Slave koneelle asennettiin puppet $ sudo apt-get -y install puppet ja conf-tiedostoon $ sudoedit /etc/puppet/puppet.conf lisättiin nimi

[agent]

server = master.local

Hyväksytään puppet slave $ sudoedit /etc/default/puppet ja lisätään tiedostoon START=yes

Slave koneella käynnistetään puppet uudelleen $ sudo service puppet restart

Master koneelle tarkistetaan sertifikaatit $ sudo puppet cert –list ja hyväksytään slave koneen sertifikaatti $ sudo puppet cert –sign slave

Master koneella luotiin manifesti “helloworld” $ cd /etc/puppet, $ sudo mkdir -p manifests/ modules/helloworld/manifests/ ja $ sudoedit manifests/site.pp

site.pp tiedostoon lisättiin rivi class {helloworld:} 

Sitten $ sudoedit modules/helloworld/manifests/init.pp ja tänne moduuli helloworld

class helloworld {
        file { '/tmp/helloFromMaster':
                content => "See you at http://terokarvinen.com/tag/puppet\n"
        }
}

Lopuksi slave kone käynnistää puppetin uudelleen $ sudo service puppet restart ja komento $ sudo puppet agent -tdv ja komento $ cat /tmp/helloFromMaster jolloin tulee terminaaliin teksti “See you at http://terokarvinen.com/tag/puppet”

Kuva toimivasta lopputilanteesta agentilla(slave/orja).
Screenshot_2017-04-28_10-07-40.png

 

Orjan logit:

xubuntu@xubuntu:~$ tail /var/log/auth.log
Apr 28 10:15:59 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
Apr 28 10:16:03 xubuntu sudo: pam_unix(sudo:session): session closed for user root
Apr 28 10:16:15 xubuntu sudo:  xubuntu : TTY=pts/2 ; PWD=/home/xubuntu ; USER=root ; COMMAND=/usr/bin/puppet cert –list –all
Apr 28 10:16:15 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
Apr 28 10:16:18 xubuntu sudo: pam_unix(sudo:session): session closed for user root
Apr 28 10:17:01 xubuntu CRON[4899]: pam_unix(cron:session): session opened for user root by (uid=0)
Apr 28 10:17:01 xubuntu CRON[4899]: pam_unix(cron:session): session closed for user root
Apr 28 10:17:31 xubuntu sudo:  xubuntu : TTY=pts/2 ; PWD=/home/xubuntu ; USER=root ; COMMAND=/usr/bin/puppet cert tail /var/log/auth.log
Apr 28 10:17:31 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
Apr 28 10:17:33 xubuntu sudo: pam_unix(sudo:session): session closed for user root

xubuntu@xubuntu:~$ tail /var/log/syslog
Apr 28 10:06:35 xubuntu puppet-agent[4630]: Finishing transaction 30745140
Apr 28 10:06:35 xubuntu puppet-agent[4630]: Storing state
Apr 28 10:06:35 xubuntu puppet-agent[4630]: Creating state file /var/lib/puppet/state/state.yaml
Apr 28 10:06:35 xubuntu puppet-agent[4630]: Stored state in 0.01 seconds
Apr 28 10:06:35 xubuntu puppet-agent[4630]: Finished catalog run in 0.03 seconds
Apr 28 10:06:35 xubuntu puppet-agent[4630]: Executing ‘/etc/puppet/etckeeper-commit-post’
Apr 28 10:06:35 xubuntu puppet-agent[4630]: Using cached connection for https://master.local:8140
Apr 28 10:06:35 xubuntu puppet-agent[4630]: Caching connection for https://master.local:8140
Apr 28 10:06:35 xubuntu puppet-agent[4630]: Closing connection for https://master.local:8140
Apr 28 10:17:01 xubuntu CRON[4900]: (root) CMD (   cd / && run-parts –report /etc/cron.hourly)

Masterin logit:

xubuntu@xubuntu:~$ sudo puppet cert –list –all
+ “master” (SHA256) 85:FB:68:6B:18:EB:E1:39:D2:A3:73:BB:3E:34:9A:B7:17:4E:5C:41:55:A6:A2:C7:6A:3A:42:5C:5B:BA:E7:12 (alt names: “DNS:master”, “DNS:master.local”)
+ “slave”  (SHA256) 38:E0:39:A0:14:30:8A:C1:54:BF:C9:C6:4B:59:A9:0D:13:05:EF:3B:EA:77:40:23:73:37:3F:7B:5C:E5:24:69

xubuntu@xubuntu:~$ tail /var/log/auth.log
Apr 28 10:39:18 xubuntu sudo: pam_unix(sudo:session): session closed for user root
Apr 28 10:39:35 xubuntu sudo:  xubuntu : TTY=pts/0 ; PWD=/etc/puppet ; USER=root ; COMMAND=sudoedit manifests/site.pp
Apr 28 10:39:35 xubuntu sudoedit: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
Apr 28 10:40:45 xubuntu sudoedit: pam_unix(sudo:session): session closed for user root
Apr 28 10:40:57 xubuntu sudo:  xubuntu : TTY=pts/0 ; PWD=/etc/puppet ; USER=root ; COMMAND=sudoedit modules/helloworld/manifests/init.pp
Apr 28 10:40:57 xubuntu sudoedit: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
Apr 28 10:41:09 xubuntu sudoedit: pam_unix(sudo:session): session closed for user root
Apr 28 10:44:25 xubuntu sudo:  xubuntu : TTY=pts/0 ; PWD=/home/xubuntu ; USER=root ; COMMAND=/usr/bin/puppet cert –list –all
Apr 28 10:44:25 xubuntu sudo: pam_unix(sudo:session): session opened for user root by xubuntu(uid=0)
Apr 28 10:44:27 xubuntu sudo: pam_unix(sudo:session): session closed for user root

xubuntu@xubuntu:~$ tail /var/log/syslog
Apr 28 10:38:00 xubuntu puppet-master[4275]: Could not resolve 192.168.100.15: no name for 192.168.100.15
Apr 28 10:38:01 xubuntu puppet-master[4275]: message repeated 4 times: [ Could not resolve 192.168.100.15: no name for 192.168.100.15]
Apr 28 10:38:24 xubuntu puppet-master[4275]: Could not resolve 192.168.100.15: no name for 192.168.100.15
Apr 28 10:38:25 xubuntu puppet-master[4275]: message repeated 4 times: [ Could not resolve 192.168.100.15: no name for 192.168.100.15]
Apr 28 10:40:01 xubuntu puppet-master[4275]: Could not resolve 192.168.100.15: no name for 192.168.100.15
Apr 28 10:40:54 xubuntu systemd[1]: Starting Cleanup of Temporary Directories…
Apr 28 10:40:54 xubuntu systemd-tmpfiles[4341]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path “/var/log”, ignoring.
Apr 28 10:40:54 xubuntu systemd[1]: Started Cleanup of Temporary Directories.
Apr 28 10:42:17 xubuntu puppet-master[4275]: Removing mount “files”: /etc/puppet/files does not exist or is not a directory
Apr 28 10:42:18 xubuntu puppet-master[4275]: Compiled catalog for slave in environment production in 0.03 seconds

Lähteet:

http://terokarvinen.com/2017/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-2-%E2%80%93-5-op-uusi-ops-loppukevat-2017-p2

http://terokarvinen.com/2012/puppetmaster-on-ubuntu-12-04

“Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

“Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

Palvelinten hallinta ict4tn022-2 Harjoitus 3

h3. a) Package-File-Server. Asenna ja konfiguroi jokin demoni package-file-server -tyyliin. Tee jokin muu asetus kuin tunnilla näytetty sshd:n portin vaihto.

Aloitin käynnistämällä Linuxin livetikulta, jossa käytin versioita ( Xubuntu 16.04 LTS amd64). Seuraavaksi avasin terminaalin ja annoin komennon $sudo apt-get udate, jotta ohjemistot päivittyvät uusimpiin versioihinsa. Sitten komento $setxkbmap fi, jotta ääkköset toimivat. Sitten asennetaan puppet ja git. $sudo apt-get install -y git ja $sudo apt-get install -y puppet.

Ennen muita toimenpiteitä testataan helloworldin toimivuus. $sudo puppet apply -e ‘file {“/tmp/hellokonsta”: content => “hello\n”}’Screenshot_2017-04-17_15-29-57

Sitten päästään itse puppetin kimppuun. Luodaan puppetin modules kansioon “hellokonsta” kansio jonka sisään manifests kansio ja sen sisään init.pp tiedosto. Screenshot_2017-04-17_15-40-35.png

Kuvassa init.pp sisältö. Screenshot_2017-04-17_15-37-46.png

Ajoin puppetilla komennon $sudo puppet apply -e ‘class {hellokonsta:}’ joka luo tiedoston “hellomodule” missä lukee “päivää”.

Sitten package osuus jossa asennetaan apache. Tehdään aluksi apachelle oma kansio puppet moduleihin, ja sinne manifests ja templates kansiot sekä manifests alle taas init.pp tiedosto. Kuvassa komennot jolla loin mainitsemani tiedostot.Screenshot_2017-04-17_15-52-57.png

 

init.pp sisältöScreenshot_2017-04-17_15-51-00.png

Yllä oleva komento ajaa ensin sudo apt-get updaten, asentaa apachen vasta kun update on ajettu, ja muokkaa apachen vakiosivua luoden sinne “testing testing” tekstin pätkän

Tarkoitus oli ensin ajaa update ja sen jälkeen asentaa apache ja muokata oletussivua ja tulostaa “test page konsta”. Sitten komento $sudo puppet apply -e ‘class {apache:}’ ja ajetaan moduuli.Screenshot_2017-04-17_16-00-20.png

Viimeiseksi kuva muuttuneesta testisivusta.Screenshot_2017-04-17_16-01-40.png

 

b) Modulit Gitistä. Tee skripti, jolla saat nopeasti modulisi kloonattua GitHubista ja ajettua vaikkapa liverompulle. Voit katsoa mallia terokarvinen/nukke GitHub-varastosta

Luotu moduli löytyy osoitteesta: https://github.com/konstavaarala/Sample-h3/tree/master

Lähteet:

http://terokarvinen.com/2013/ssh-server-puppet-module-for-ubuntu-12-04

http://terokarvinen.com/2017/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-2-%E2%80%93-5-op-uusi-ops-loppukevat-2017-p2

https://leojaaskelainen.wordpress.com/

http://terokarvinen.com/2016/publish-your-project-with-github

“Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

“Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

Palvelinten hallinta ict4tn022-2 Harjoitus 1

h1.

a) Kaksi resurssia. Tee ja testaa moduli, joka käyttää ainakin kahta eri resurssia (esim. file ja package).

Aloitin käynnistämällä Linuxin livetikulta, jossa käytin versioita ( Xubuntu 16.04 LTS amd64). Seuraavaksi avasin terminaalin ja annoin komennon $sudo apt-get udate, jotta ohjemistot päivittyvät uusimpiin versioihinsa. Sitten komento $setxkbmap fi, jotta ääkköset toimivat.

Puppetin asennus onnistui komennolla $sudo apt-get -y install puppet

Seuraavaksi menin puppetin alihakemistoon $cd /etc/puppet/modules, jonne loin oman moduulini $sudo mkdir apacheconf, jonka nimesin apacheconf. Menin luotuun kansioon ja loin sen alle kansioit manifests ja templates, komennoilla $sudo mkdir manifests ja $sudo mkdir templates.Screenshot_2017-03-30_12-31-07

Menin seuraavaksi manifests kansioon $cd manifests, jonne loin init.pp tiedoston komennolla $sudoedit init.pp. Puppet moduulin malliksi otin Joonan tekemän mallin. Varmistin toimivuuden aluksi pelkällä package osiolla, komennolla $sudo puppet apply -e ‘class {apacheconf:}’ . Asennus onnistui ja sain apachen testisivun auki.Screenshot_2017-03-30_13-18-47

Sitten lisäsin file osion jonka oli tarkoitus muokata apachen testisivua. Index.html sivun sisältö on täältä. Tein kuvan mukaiset muokkaukset init.pp, ajoin moduulin uudelleen ja testisivu vaihtui onnistuneesti.
Screenshot_2017-03-30_13-49-09
b) Messut. Kirjoita lyhyt analyyttinen ja vertaileva arvio jostain tuotteesta, esityksestä tai yrityksestä IT PRO -messuilla. (Vaihtoehtoinen tehtävä, jos et pääse messuille: katso video samasta aiheesta Puppetista ja toisesta vastaavasta järjestelmästä (esim. Salt) ja kirjoita niistä analyyttinen ja vertaileva kirjoitus.

IoT laitteiden yleistyessä on yritysten jaettava verkkonsa eri “luokkiin”. Nykypäivänä verkot jaetaan erilaisten tarkoitusten perusteella ja niille varattuihin osuuksiin. Tarkoituksena on pitää IoT-laitteet erillään muista toimistotyökaluista. Kun mahdollinen IoT-laite lisätään verkkoon, halutaan sen liittyvän automaattisesti sille kuuluvan “luokan” verkkoon.

Tästä johtuen Ciscon IT-asiantuntija Risto Eerolan mielestä tulee tietoverkkojen hallinnta ja konfigurointi automatisoida. Tällä hetkellä yritysten aika menee jo olemassa olevien verkkojärjestelmien asetusten ylläpitoon, eikä näin jää aikaa uusien muutosten hallintaan. Tämä johtaa siihen, että kaikkien IoT-laitteiden tulee osata kertoa verkolle mitä palveluita se itse tarvitsee.

 

Lähteet:

http://terokarvinen.com/2013/ssh-server-puppet-module-for-ubuntu-12-04

http://terokarvinen.com/2017/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-2-%E2%80%93-5-op-uusi-ops-loppukevat-2017-p2

https://joonaleppalahti.wordpress.com/page/3/

http://terokarvinen.com/2012/short-html5-page

“Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

“Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

Linux palvelimet ICT4TN021-2 harjoitus 5

h5.

a) Ota käyttöön oma virtuaalipalvelin (VPS).

Tein käyttäjän Github educationiin ja sain “promo code” jolla pitäisi saada 50$ rahaa tilille, jostain syystä en tätä itse saanut. Laitoin s-postia tukeen DigitalOceaniin tästä mutta en myöskään saanut mitään vastausta.

Päivitys edelliseen: Tuesta viimein vastattiin ja sitä kautta etuni saatiin aktivoitua. Sain tililleni 50$ ja tein ensimmäisen dropletin. Valitsin imageksi Ubuntu x64, 10€/kk maksavan lisenssin ja datacenter regioniksi Frankfurt. Nimeksi dropletille annoin vaartest.

b) Laita domain-nimi osoittamaan virtuaalipalvelimeesi

Työaseman valmisteluun näipimmistö suomeksi komennolla $setxkbmap fi. Seuraavaksi komento $ sudo apt-get update jotta ohjelmistot päivittyy uusimpiin versioihinsa.

Apachen asennus komennolla $ sudo apt-get install apache2 -y. Asennuksen jälkeen tarkistetaan että asennus onnistui kirjoittamalla selaimen osoitekenttään http://localhost/. Apachen testisivu toimii kuten kuvasta näkyy.

Screenshot_2017-03-01_12-11-37.png

Seuraavaksi otetaan käyttöön userdir moduuli ja luodaan käyttäjien hakemistot. $sudo a2enmod userdir, Ja sitten käynnistetään Apache uudelleen jotta asetukset tulevat voimaan. $ sudo service apache2 restart

Sitten testataan kotisvujen toiminta.

Screenshot_2017-03-01_14-02-34.png

Screenshot_2017-03-01_13-15-37.png

Sitten konfiguroidaan .conf tiedosto.

$ cd /etc/apache2/sites-available
$ sudoedit vaaralatest.conf

Screenshot_2017-03-01_14-06-39.png

Moduuli päälle jotta muutokset tulee voimaan.

$ sudo a2ensite vaaralatest.conf
$ sudo service apache2 reload

Lopuksi hosts tiedoston muokkaus.

$ cd /etc
$ sudoedit hosts

screenshot_2017-03-01_14-11-02

Sitten vielä tarkistetaan että homma toimii niinkuin pitää. Selaimen osoitekenttään vaaralatest.com

Screenshot_2017-03-01_13-35-34.png

c) Asenna weppipalvelin virtuaalipalvelimeesi

Loin dropletin nimeltä vaartest. Avasin konsolin ja annoin salasanan joka lähettettiin s-postiin. Ensimmäisellä kirjatumiskerralla salasana tuli vaihtaa ja annoin vahvan salasanan. Loin toisen käyttäjän “konsta” ja annoin sille myös vahvan salasanan.

Sitten $sudo apt-get update ja sudo apt-get install apache2 jonka jälkeen tarkistetaan että asennus onnistui syöttämällä serverin ip-osoite selaimeen.

Ongelmaksi tässä ilmeni virheilmoitus joka tuli kokoajan kesken apachen asennuksen. Kuva alapuolella.

nimeton2

Myöhemmin kokeilin uudestaan ja sain asennuksen onnistumaan ja testisivun auki selaimeen.

 

Tähän koitin liittää vielä kuvaa testisivusta mutta wordpress ei jostain kumman syystä suostu lisäämään liitetiedostoa…

Lähteet:

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu

https://viivijarvela.wordpress.com/2014/03/10/apache-ja-virtuaalipalvelin/

http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4

http://terokarvinen.com/2017/aikataulu-%E2%80%93-linux-palvelimet-ict4tn021-2-ti-ja-3-ke-alkukevat-2017-5-op

d) vapaaehtoinen) Tee weppisivu omalle virtuaalipalvelimellesi käyttäen Apachen VirtualHost-asetusta.

(Kannattaa kokeilla virtuaalipalvelimen vuokraamista, GitHub Education -paketilla se saattaa olla jopa ilmaista. Jos et jostain syystä halua vuokrata virtuaalipalvelinta, sovi opettajan kanssa etukäteen vaihtoehtoisesta korvaavasta tehtävästä)

“Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

“Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com

Linux palvelimet ICT4TN021-2 harjoitus 4 d) log.txt

konsta@konsta-K50IJ:~$ tail /var/log/syslog
Feb  9 13:08:42 konsta-K50IJ dbus[591]: [system] Activating via systemd: service name=’org.freedesktop.hostname1′ unit=’dbus-org.freedesktop.hostname1.service’
Feb  9 13:08:42 konsta-K50IJ systemd[1]: Starting Hostname Service…
Feb  9 13:08:42 konsta-K50IJ dbus[591]: [system] Successfully activated service ‘org.freedesktop.hostname1’
Feb  9 13:08:42 konsta-K50IJ systemd[1]: Started Hostname Service.
Feb  9 13:09:01 konsta-K50IJ CRON[15141]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean)
Feb  9 13:10:37 konsta-K50IJ kernel: [13871.523922] [UFW BLOCK] IN=wlp2s0 OUT= MAC=74:f0:6d:97:3e:ee:c4:f0:81:18:af:e1:08:00 SRC=172.217.18.131 DST=192.168.100.15 LEN=40 TOS=0x00 PREC=0x00 TTL=55 ID=47993 PROTO=TCP SPT=443 DPT=44386 WINDOW=0 RES=0x00 RST URGP=0
Feb  9 13:10:42 konsta-K50IJ kernel: [13876.556076] [UFW BLOCK] IN=wlp2s0 OUT= MAC=74:f0:6d:97:3e:ee:c4:f0:81:18:af:e1:08:00 SRC=209.85.233.95 DST=192.168.100.15 LEN=40 TOS=0x00 PREC=0x00 TTL=45 ID=36214 PROTO=TCP SPT=443 DPT=34970 WINDOW=0 RES=0x00 RST URGP=0
Feb  9 13:10:43 konsta-K50IJ kernel: [13877.525597] [UFW BLOCK] IN=wlp2s0 OUT= MAC=74:f0:6d:97:3e:ee:c4:f0:81:18:af:e1:08:00 SRC=172.217.18.129 DST=192.168.100.15 LEN=40 TOS=0x00 PREC=0x00 TTL=55 ID=27678 PROTO=TCP SPT=443 DPT=49960 WINDOW=0 RES=0x00 RST URGP=0
Feb  9 13:10:44 konsta-K50IJ kernel: [13878.523357] [UFW BLOCK] IN=wlp2s0 OUT= MAC=74:f0:6d:97:3e:ee:c4:f0:81:18:af:e1:08:00 SRC=216.58.211.130 DST=192.168.100.15 LEN=40 TOS=0x00 PREC=0x00 TTL=55 ID=60880 PROTO=TCP SPT=443 DPT=39028 WINDOW=0 RES=0x00 RST URGP=0
Feb  9 13:11:00 konsta-K50IJ kernel: [13894.494877] [UFW BLOCK] IN=wlp2s0 OUT= MAC=74:f0:6d:97:3e:ee:c4:f0:81:18:af:e1:08:00 SRC=216.58.209.98 DST=192.168.100.15 LEN=40 TOS=0x00 PREC=0x00 TTL=55 ID=39263 PROTO=TCP SPT=443 DPT=57288 WINDOW=0 RES=0x00 RST URGP=0
konsta@konsta-K50IJ:~$

konsta@konsta-K50IJ:~$ tail /var/log/auth.log
Feb  9 12:52:13 konsta-K50IJ sudo:   konsta : TTY=pts/4 ; PWD=/home/konsta ; USER=root ; COMMAND=sudoedit /var/www/html/index.html
Feb  9 12:52:13 konsta-K50IJ sudoedit: pam_unix(sudo:session): session opened for user root by konsta(uid=0)
Feb  9 12:54:03 konsta-K50IJ sudoedit: pam_unix(sudo:session): session closed for user root
Feb  9 13:09:01 konsta-K50IJ CRON[15140]: pam_unix(cron:session): session opened for user root by (uid=0)
Feb  9 13:09:01 konsta-K50IJ CRON[15140]: pam_unix(cron:session): session closed for user root
Feb  9 13:12:48 konsta-K50IJ sudo:   konsta : TTY=pts/4 ; PWD=/home/konsta ; USER=root ; COMMAND=/usr/sbin/a2enmod userdir
Feb  9 13:12:48 konsta-K50IJ sudo: pam_unix(sudo:session): session opened for user root by konsta(uid=0)
Feb  9 13:12:48 konsta-K50IJ sudo: pam_unix(sudo:session): session closed for user root
Feb  9 13:17:01 konsta-K50IJ CRON[15274]: pam_unix(cron:session): session opened for user root by (uid=0)
Feb  9 13:17:01 konsta-K50IJ CRON[15274]: pam_unix(cron:session): session closed for user root
konsta@konsta-K50IJ:~$

konsta@konsta-K50IJ:~$ tail /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION=”Ubuntu 16.04.1 LTS”
konsta@konsta-K50IJ:~$

konsta@konsta-K50IJ:~$ tail /var/log/apache2/*.log
==> /var/log/apache2/access.log <==
127.0.0.1 – – [09/Feb/2017:12:35:57 +0200] “GET / HTTP/1.1” 200 293 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”
127.0.0.1 – – [09/Feb/2017:12:36:33 +0200] “GET / HTTP/1.1” 200 293 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”
127.0.0.1 – – [09/Feb/2017:12:37:41 +0200] “GET / HTTP/1.1” 200 293 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”
127.0.0.1 – – [09/Feb/2017:12:37:43 +0200] “GET / HTTP/1.1” 200 293 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”
192.168.100.15 – – [09/Feb/2017:12:41:33 +0200] “GET / HTTP/1.1” 200 293 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”
192.168.100.15 – – [09/Feb/2017:12:41:33 +0200] “GET /favicon.ico HTTP/1.1” 404 505 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”
192.168.100.15 – – [09/Feb/2017:12:41:34 +0200] “GET /favicon.ico HTTP/1.1” 404 505 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”
192.168.100.15 – – [09/Feb/2017:12:45:57 +0200] “GET /index.php HTTP/1.1” 404 504 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”
192.168.100.15 – – [09/Feb/2017:12:46:09 +0200] “GET /index.html HTTP/1.1” 200 293 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”
127.0.0.1 – – [09/Feb/2017:13:02:55 +0200] “GET / HTTP/1.1” 200 312 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0”

==> /var/log/apache2/error.log <==
[Thu Feb 09 11:31:37.437129 2017] [mpm_prefork:notice] [pid 13123] AH00169: caught SIGTERM, shutting down
[Thu Feb 09 11:31:38.589200 2017] [mpm_prefork:notice] [pid 13232] AH00163: Apache/2.4.18 (Ubuntu) configured — resuming normal operations
[Thu Feb 09 11:31:38.589309 2017] [core:notice] [pid 13232] AH00094: Command line: ‘/usr/sbin/apache2’
[Thu Feb 09 11:43:54.950510 2017] [mpm_prefork:notice] [pid 13232] AH00169: caught SIGTERM, shutting down
[Thu Feb 09 11:43:56.047600 2017] [mpm_prefork:notice] [pid 14199] AH00163: Apache/2.4.18 (Ubuntu) configured — resuming normal operations
[Thu Feb 09 11:43:56.047707 2017] [core:notice] [pid 14199] AH00094: Command line: ‘/usr/sbin/apache2’
[Thu Feb 09 12:37:35.278483 2017] [mpm_prefork:notice] [pid 14199] AH00169: caught SIGTERM, shutting down
[Thu Feb 09 12:37:36.365831 2017] [mpm_prefork:notice] [pid 14743] AH00163: Apache/2.4.18 (Ubuntu) configured — resuming normal operations
[Thu Feb 09 12:37:36.365937 2017] [core:notice] [pid 14743] AH00094: Command line: ‘/usr/sbin/apache2’
[Thu Feb 09 12:45:57.782570 2017] [:error] [pid 14749] [client 192.168.100.15:37830] script ‘/var/www/html/index.php’ not found or unable to stat

==> /var/log/apache2/other_vhosts_access.log <==
konsta@konsta-K50IJ:~$

konsta@konsta-K50IJ:~$ /proc/uptime >log.txt
bash: /proc/uptime: Permission denied
konsta@konsta-K50IJ:~$

Tämä viimeinen loki oli jostain syystä tyhjä.

Linux palvelimet ICT4TN021-2 harjoitus 4

h4.

a) Asenna alusta lähtien LAMP. (Linux voi olla asennettu valmiiksi tai Live-USB).

Aluksi annoin komennot “sudo apt-get update” ja “sudo apt-get upgrade” jotta kaikki ohjelmistot päivittyvät uusimpiin versioihinsa.

Seuraavaksi asensin Apachen webbipalvelimen käyttäen komentoa “sudo apt-get install apache2”, ja kokeilin toimivuuden asennuksen jälkeen syöttämällä selaimen osoitekenttään “localhost” ja sain auki testisivun.

Mysql ja mysql client asennus onnistui komennolla “sudo apt-get -y install mysql-server mysql client”. Komennossa “-y” tarkoittaa että asennuksen aikana vastataan automaattisesti kysymyksiin kyllä. Asennuksen alussa annetaan root käyttäjälle salasana, sen tulee olle todella hyvä ja vahva.

Kuva jossa annetaan root käyttäjälle salasana.

Screenshot_2017-02-09_09-39-22.png

Tässä kuvassa komento jolla asensin Mysql ja mysql clientin komentorilillä.

Screenshot_2017-02-09_09-48-02.png

Screenshot_2017-02-09_09-55-51.pngSeuraavaksi kirjauduin root käyttäjällä sisään antamalla komennon “mysql -u root -p” ja annoin root käyttäjän vahvan salasanan jota pyydettiin.

Screenshot_2017-02-09_10-10-44.png

Toisen käyttäjätilin luonti onnistuu komennolla “create database student character set utf8;” ja student käyttäjälle salasana komennolla joka näkyy kuvassa viimeisenä.

Äsken luodon “student” käyttäjätilin testaus tapahtuu seuraavasti. Ensin kirjaudutaan ulos root käyttäjältä, sitten annetaan komento “mysql -u student -p” ja kopioidaan edellisessä vaiheessa annettu salasana sitä pyydettäessä.

Screenshot_2017-02-09_10-18-39.png

Yläpuolella olevassa kuvassa olemme onnistuneesti kirjautuneet student käyttäjälle sisälle.

Jotta käyttö olisi jatkossa helpompaa, voidaan mysql kirjautuminen automatisoida seuraavasti.

screenshot_2017-02-09_10-25-36

screenshot_2017-02-09_10-24-48

Komentorivillä annetaan komento “nano .my.cnf” ja kansioon kopioidaan seuraavat tiedot. Nyt kirjautuminen tapahtuu ilman salasanaa student käyttäjälle.

Seuraava vaihe on CRUD(Create, Read, Update, Delete). Aloitin luomalla table:in nimeltä students.

Screenshot_2017-02-09_10-38-37.png

Sitten students tablen alle käyttäjiä komennolla “INSERT INTO students(name) VALUES (“Tero”);”. Samaan tapaan loin myös Matti ja Maija käyttäjät. Kuva alapuolella.

Screenshot_2017-02-09_10-42-54.png

Screenshot_2017-02-09_10-48-24.png

Kuvassa kokeilin hakua hakemistossa.

Screenshot_2017-02-09_10-50-37.png

Sitten tietojen päivitystä, Tero käyttäjän nimeksi Tero Karvinen.

Screenshot_2017-02-09_10-52-47.png

Ja viimeisenä poistin käyttäjän Matti.

Sitten asetetaan tulimuuri ja avataan porttit. Käytin komentoa “sudo ufw allow 22/tcp” ja seuraavaksi “sudo ufw enable”

Screenshot_2017-02-09_11-11-32.png

PHP asennus seuraavaksi komennolla ” sudo apt-get install libapache2-mod-php php-mysql curl lynx” Kuva alapuolella.
Screenshot_2017-02-09_11-32-27.png

screenshot_2017-02-09_11-37-25

Komennolla “sudoedit /etc/apache2/mods-available/php7.0.conf ” pääsin kommentoimaan ulos “if” moduulin jonka jälkeen uudelleen käynnistys “sudo service apache2 restart”.

b) Tee weppisivu, joka lukee PHP:lla rivejä tietokannasta.

screenshot_2017-02-09_13-08-20

Komennolla ” sudoedit /var/www/html/index.html” muokkasin sivua kuvan mukaiseksi. En jostain syystä saanut laskuria toimimaan index.php yhteen tämän kanssa.

c) Tee ensimmäinen harjoitus http://sqlzoo.net/ eli “0 SELECT Basics”. Tätä c-kohtaa ei tarvitse raportoida.

d) Laita liitteeksi tai linkiksi raporttiisi tällä komenolla kerätty log.txt:

tail /var/log/syslog /var/log/auth.log /etc/lsb-release /var/log/apache2/*.log /proc/uptime >log.txt

Tehtävä 4 d /log.txt

Vapaaehtoinen bonus e) Tee pinta-alan laskuri PHP:lla. Eli käyttäjä syöttää lomakkeella (form) pellon pituuden ja leveyden, laskuri kertoo weppisivulla pellon alan.

Kokeilin tätä tehtävää hakemlla valmiin pinta-ala laskuri pohjan. Index.html kopioin seuraavan koodin pätkän.

Screenshot_2017-02-09_14-35-21.png

Ja Index.php seuraavan koodin.

Screenshot_2017-02-09_14-37-12.png

Sain laskurin näkymään selaimessa mutta jostain syystä painettaessa “submit” tulos ei tulostu vaan tulee ilmoitus:

Screenshot_2017-02-09_14-40-32.png

Tässä vielä kuva laskurista.Screenshot_2017-02-09_14-39-15.png

“Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

“Pohjana Tero Karvinen 2012: Linux kurssi, http://terokarvinen.com