Palvelinten hallinta h2: Apache, PHP

Tein harjoituksen ma 9.4.2018 klo 13:00-15:20, 16:10-20:40. Käytin Lenovon ideapad Z500 ja ThinkPad T440p. Molemmissa oli Xubuntun 16.04 LTS USB-livetikulta.

Harjoituksen sisältö Tero Karvisen sivuilta (http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p):

“Tehtävät tästä eteenpäin (h2, h3…) tulee ratkaista tekemällä Saltin tila (state), ellei tehtävänannosta muuta ilmene. Tee ensin käsin, automatisoi vasta sitten. Muista testata lopputulos.

a) Opiskele yllä aikataulussa olevat artikkelit. (Tätä lukutehtävää ei tarvitse raportoida). Luettava materiaali on kunkin tapaamiskerran kohdalla, esimerkiksi nyt “2. Package-file-server. […] Luettavaa: Karvinen 2018: Pkg-File-Service – Control Daemons with Salt..”

b) Laita käyttäjien kotisivut toimimaan Apachella.

c) Laita PHP toimimaan käyttäjien kotisivuilla. (Huomaa, että PHP toimii oletuksena kaikkialla muualla kuin käyttäjien public_html-kotisivuilla.)

d) Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen (name based virtual hosting). Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla.

e) Tee tila, joka laittaa esimerkkikotisivun uusille käyttäjille. Voit laittaa esimerkkikotisivu /etc/skel/:iin, niin se tulee automaattisesti ‘adduser tero’ komennolla käyttäjiä luodessa.

f) Eri asetukset. Tee Package-File-Service tilalla eri asetuksia kuin ne, mitä tehtiin tunnilla; ja eri kuin mitä teit/teet h2 muissa kohdissa. Voit muuttaa jotain toista asetusta samoista demoneista tai valita kokonaan eri demonit.”

Tässä harjoituksessa pohjana on käytetty Tero Karvisen oppituntia 4.4.2018 Palvelinten hallinta -kurssilla sekä hänen nettisivujaan: http://terokarvinen.com/.

Alkusäätö

Koska tein harjoituksen USB-tikkua käyttäen, aloitin puhtaalta pöydältä. Asetin siis ensin molempiin koneisiin perusasetukset: näppäimistön kieleksi suomi: “setxkbmap fi” ja salasana “passwd“-komennolla. Hain päivitykset “sudo apt-get update“. Tämän jälkeen masterina toimivaan koneeseen: “sudo apt-get -y install salt-master salt-minion” sekä minionina toimivaan koneeseen sama, mutta ilman masteria. Masterilla tarkistin ip-osoitteen “hostname -I“.

Tein seuraavat minionin koneelle. “sudoedit /etc/salt/minion“, jolloin pääsin lisäämään masterin ip-osoitteen sekä minionin id:n. Lisäsin siis rivin ja siihen “master: 192.168.0.102” ja seuraavalle riville “id: jaana1“. Sitten tallennus: “Ctrl + x” ja “y + Enter“. Tämän jälkeen minionin uudelleenkäynnistys: “sudo systemctl restart salt-minion.service“.

Seuraavat masterin koneella. Tein saman kuin edellä, mutta id:ksi tuli “thinkpad1“. Tämän jälkeen “sudoedit etc/salt/master” ja sinne lisäsin rivin: “file_ignore_glob: []“. Ja tallensin. Tämän tein, jottei tulisi turhia varoituksia, kun ajan jonkin komennon. Annoin komennon: “sudo salt-key -A” ja hyväksyin näkyvät avaimet painamalla “y + Enter“. Testasin toimivuutta: “sudo salt ‘*’ cmd.run ‘hostname -I‘”:

salt_testi6

 

Laita käyttäjien kotisivut toimimaan Apachella

Seuraavat masterin koneella. Käytin tässä lähteenä Tero Karvisen Install Apache Web Server on Ubuntu -artikkelia. Ensin asensin Apachen: “sudo apt-get -y install apache2“. Avasin selaimen ja menin osoitteeseen: localhost ja sain eteeni Apachen oletussivun. Tämän jälkeen kävin laittamassa päälle userdirin: “sudo a2enmod userdir” ja heti perään Apachen uudelleenkäynnistäminen: “sudo systemctl restart apache2.service“.

Seuraavaksi laitoin “sudoedit /var/www/html/index.html” ja poistin sieltä kaikki tekstit. Kirjoitin sinne Heippa! ja tallensin “Ctrl + x” ja “y + Enter“. Päivitin selaimen sivun ja siellä luki Heippa! Menin “cd” komennolla kotihakemistoon ja “mkdir public_html“. Sitten “cd public_html” ja “nano index.html“. Kirjoitin sinne Hei! ja tallensin. Menin selaimella osoitteeseen localhost/~xubuntu ja siellä luki Hei!

Automatisointiin käytin lähteenä Tero Karvisen artikkelia: http://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example

Menin “cd“-komennolla kotihakemistoon ja loin uuden kansion: “sudo mkdir -p /srv/salt/” ja siirryin hakemistoon: “cd /srv/salt“. Loin sinne uuden kansion “sudo mkdir apache” ja siirryin sinne taas tuolla “cd apache/“. Loin uuden tiedoston: “sudoedit default-index.html“. Kirjoitin sinne Hei! ja tallensin. Sitten “sudoedit init.sls“:

salt_testi7

Tallennus: “Ctrl + x” ja “y + Enter“. Tämän jälkeen “sudo salt ‘*’ state.apply apache“. Tästä näkyi hieman, mitä tapahtui:

salt_testi8

Menin selaimeen ja avain osoitteen localhost/~xubuntu. Siellä luki Hei! Sitten menin osoitteeseen 192.168.0.101, mikä oli minionin ip-osoite. Sielläkin luki Hei! En kuitenkaan ollut varma, oliko tuo se käyttäjän hakemisto, joten kokeilin mennä osoitteeseen 192.168.0.101/~xubuntu:

salt_testi9

Ei onnistunut. Katsoin minionin Apache error logia: “tail -F /var/apache/error.log“:

salt_error1

Menin minionin kotihakemistoon “cd” ja “ls“. Siellä ei näkynyt tuota public_html -kansiota, joten siinä mielestäni oli ongelma, ettei käyttäjän kotisivu toiminut. Läheenä olevan ohjeen lopussa oli ohje: “Depending on your setup, you might need to fix a 403 forbidden by giving some permissions: ‘chmod ugo+x $HOME $HOME/public_html/; chmod ug+r $HOME/public_html/index.html”.” Kokeilin ensin masterilla antaa nuo komennot, mutta mitään ei tapahtunut. Minionille noita ei voinut antaa, sillä tuon nimisiä kansioita ja tiedostoja ei ollut. Katsoin masterilla “ls -l“:

salt_error2

Kokeilin vielä käynnistää uudelleen Apachen, Salt-masterin ja Salt-minionin. Annoin uudelleen tuon “sudo salt ‘*’ state.apply apache” -komennon, mutta ei vieläkään toiminut. Lisäsin sitten käsin tuon public_html-kansion ja tiedoston: “cd public_html“, “nano index.html“. Testasin menemällä minionilla osoitteeseen localhost/~xubuntu:

salt_error3

Tein vielä ohjeen mukaan seuraavan näköisen init.sls-tiedoston:

salt_error5

Uudelleenkäynnistin salt-masterin ja ajoin tilan vielä kerran. Testasin nettisivuja ja näytti toimivan edelleen näillä muutoksilla. Minionin sivu näytti kuitenkin edelleen sille käsin luomaani sivua.

Laita PHP toimimaan käyttäjien kotisivuilla

Tein seuraavat masterilla. Asensin ensin PHPn: “sudo apt-get -y install libapache2-mod-php“. Seuraavaksi “sudoedit /etc/apache2/mods-available/php7.0.conf” ja kommentoin # pois IfModulen rivit tiedoston lopusta. Sitten tallensin. Muokkasin tuota index.html-tiedostoa: “mv index.html index.php“, “nano index.php“. Muokkasin tiedostoa “nano index.php” ja lisäsin sinne rivin: “<?php print(2+2); \n ?>“. Tallensin. Uudelleenkäynnistin Apachen: “sudo systemctl restart apache2.service“. Menin selaimeen osoitteeseen localhost/~xubuntu:

php_state1

Menin “cd srv/salt/apache/” kansioon ja loin uuden tiedoston: “sudoedit index.php“. Tein sinne seuraavanlaisen rivin: “<?php print(3+3); \n ?>“. Tallensin. Loin “sudoedit php.sls“:

php_state3.png

Lähteitä oli monia: https://linuxharjoitukset677006805.wordpress.com/2018/04/08/h2-pkg-file-service/https://linuxharjoitukset677006805.wordpress.com/2018/04/08/h2-pkg-file-service/http://jernvall.com/2018/04/05/viikko-2-palvelinten-hallinta/, https://liinuksi.wordpress.com/.

Kopioin tuon conf-tiedoston: “sudo cp /etc/apache2/mods-available/php7.0.conf /srv/salt/apache“. Tämän jälkeen käynnistin taas masterin, minionin ja Apachen uudestaan ja kokeilin: “sudo salt ‘*’ state.apply apache/php“. Mitään varoituksia ei ainakaan tullut, mutta selaimessa näkyi vain tuolla public_html:ssä oleva index.php sivu. Minionille (erilliselle koneelle) ei tullut tuota näkyviin ollenkaan. En oikein ymmärtänyt mistä oli kyse ja lähteissä oli tehty asioita eri tavoilla. Kaiken lisäksi masterin http://localhost/ näytti tyhjää. Tämä ei siis onnistunut ollenkaan.

Rakenna tila, joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen

Tässä vaiheessa poistin tuolta /srv/salt/apache kansiosta kaikki php:n tiedostot, jotta saisin tuon nimipohjaisen virtuaalipalvelimen edes jotenkin toimimaan. Tämän jälkeen ajoin tilan “sudo salt ‘*’ state.apply apache” ja testasin master koneella olevan minionin kotisivuja. Toimi. Nyt päätin jättää tuon toisen pelkästään minionina toimivan koneen sikseen, sillä tilat ei kahdessa edellisessä kohdassa lähteneet toimimaan oikealla tavalla.

Käytin lähteinä: https://jaanaputro.wordpress.com/2018/03/12/linux-palvelimet-h7-arvioitava-laboratorioharjoitus/, https://valtteripartanen.wordpress.com/2018/04/08/palvelinten-hallinta-h2/.

Aloitin: “sudoedit /etc/apache2/sites-available/jaana1.conf“. Tein siitä tämännäköisen:

host_state1

Tallensin ja “sudoedit /etc/hosts”. Lisäsin sinne rivin:

host_state2

Tallensin. Seuraavaksi “sudo a2ensite jaana1.conf“, “sudo a2dissite 000-default.conf”. Uudelleenkäynnistin Apachen. Menin osoitteeseen jaana.example.com:

host_state4

Manuaalisesti siis onnistui. Seuraavaksi olisi tarkoitus saada se toimimaan tilassa. Kopioin tuon jaana1.conf-tiedoston: “sudo cp /etc/apache2/sites-available/jaana1.conf /srv/salt/apache/“. Sitten “cd /srv/salt/apache/” ja “sudoedit virtualhost.sls”:

host_state5

Tallensin ja testasin: “sudo salt ‘*’ state.apply apache/virtualhost”:

host_state6

Kävin selaimella katsomassa jaana.example.comia ja edelleen näytti samalta, joten ainakaan mitään ei mennyt rikki.

Tee tila, joka laittaa esimerkkikotisivun uusille käyttäjille

Käytin lähteenä: https://valtteripartanen.wordpress.com/2018/04/08/palvelinten-hallinta-h2/

Ensin “cd /srv/salt/apache“. Sitten “sudoedit public_html.sls“:

skel_state2

Tämän jälkeen “sudo salt ‘jaana1’ state.apply apache/public_html“:

skel_state3

Testatakseni, että toimiko tuo: “sudo adduser testi” ja nimi ja salasana käyttäjälle. Tämän jälkeen asensin SSH:n “sudo apt-get -y install ssh” ja “ssh testi@localhost“. Annoin salasanan ja “ls“. Siellä näkyi public_html kansio. Menin selaimella osoitteeseen: localhost/~testi:

skel_state4.png

Lähteet

Lähteet on tekstin seassa sitä mukaa, kun niitä on käytetty.

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

 

Advertisements

One thought on “Palvelinten hallinta h2: Apache, PHP

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s