h2 tiistain ryhmä

Aloitus 14:50~

Lopetus 21:10~

Tehtävä tehty xubuntu 18.04 käyttöjärjestelmällä.

http://terokarvinen.com/2018/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-3004-ti-ja-3002-to-%E2%80%93-loppukevat-2018-5p

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

SALT master ja minion asennus

sudo apt-get -y install salt-master salt-minion

Ensin tietenkin asensin salt-masterin ja minionin

Sitten muokkasin minionin asetuksia hakemistossa /etc/salt/minion

xubuntu@xubuntu:~$ echo asd | sudo tee /etc/salt/minion
asd
xubuntu@xubuntu:~$ sudoedit /etc/salt/minion
xubuntu@xubuntu:~$ cat /etc/salt/minion
master: 192.168.10.47
id: PaikallinenOrja

Sitten orja piti käynnistää uudelleen jotta asetukset tulisivat voimaan.

sudo systemctl restart salt-minion.service

Kun orja oli käynnistetty uudelleen masterin piti hyväksyä orja.

xubuntu@xubuntu:~$ sudo salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
PaikallinenOrja
Proceed? [n/Y] y
Key for minion PaikallinenOrja accepted.

Kun orja oli hyväksytty tein viellä pienen testin.

xubuntu@xubuntu:~$ sudo salt '*' pkg.install curl
PaikallinenOrja:
----------
curl:
----------
new:
7.58.0-2ubuntu3.5
old:
libcurl4:
----------
new:
7.58.0-2ubuntu3.5
old:
7.58.0-2ubuntu3.2

Apache2 asennus ja userdir testi

Ensin tietenkin kokeilin toimiiko apache asentamalla sen manuaalisti.

sudo apt-get -y install apache2

Apachetest1.png

Sitten tyhjensin apachen alkusivun.

echo "Default" | sudo tee /var/www/html/index.html

apachedefault.png

Sitten laitoin käyttäjien kotisivut toimimaan.

xubuntu@xubuntu:~$ sudo a2enmod userdir
Enabling module userdir.
To activate the new configuration, you need to run:
systemctl restart apache2
xubuntu@xubuntu:~$ sudo systemctl restart apache2
xubuntu@xubuntu:~$ mkdir public_html
xubuntu@xubuntu:~$ cd public_html/
xubuntu@xubuntu:~/public_html$ nano index.html
xubuntu@xubuntu:~/public_html$ curl localhost/~xubuntu/
Xubuntun kotisivu

Apache2 userdir automatisointi

Ensitöikseni tein srv hakemistoon salt kansion jonka alle tein vielä apache kansion.

xubuntu@xubuntu:/srv$ sudo mkdir salt
xubuntu@xubuntu:/srv$ ls
salt
xubuntu@xubuntu:/srv$ cd salt
xubuntu@xubuntu:/srv/salt$ sudo mkdir apache
xubuntu@xubuntu:/srv/salt$ ls
apache

salt kansioon tein top.sls tiedoston

xubuntu@xubuntu:/srv/salt$ sudoedit top.sls
xubuntu@xubuntu:/srv/salt$ cat top.sls
base:
'PaikallinenOrja':
- apache

Selvitin mitä tiedostoja a2enmod userdir komento muuttaa.

Sitten apache kansioon tein init.sls tiedoston.

xubuntu@xubuntu:/srv/salt/apache$ cat init.sls
apache2:
pkg.installed

/var/www/html/index.html:
file.managed:
- source: salt://apache/default-index.html

/etc/apache2/mods-enabled/userdir.conf
file.symlink:
- target: ../mods-available/userdir.conf

/etc/apache2/mods-enabled/userdir.load:
file.symlink:
- target: ../mods-available/userdir.conf

apache2service:
service.running:
- name: apache2
- watch:
- file: /etc/apache2/mods-enabled/userdir.conf
- file: /etc/apache2/mods-enabled/userdir.load
xubuntu@xubuntu:/srv/salt/apache$ sudo salt '*' state.highstate
PaikallinenOrja:
Data failed to compile:
----------
Rendering SLS 'base:apache' failed: could not find expected ':'; line 9

Highstaten ajaminen ei onnistunut puuttuvan kaksoispisteen takia.

Kirjoitusvirheen korjaamisen jälkeen se meni läpi.

Ajamalla highstaten montakertaa huomaa toimivuuden koska apachea ei käynnistetä aina uudelleen kun highstate ajetaan vaan vain silloin kun tiedostoja on muutettu.

Ensimmäinen highstate

ID: apache2service
Function: service.running
Name: apache2
Result: True
Comment: Service restarted
Started: 14:37:00.829236
Duration: 117.242 ms
Changes:

Toinen highstate

ID: apache2service
Function: service.running
Name: apache2
Result: True
Comment: The service apache2 is already running
Started: 14:37:51.968130
Duration: 29.035 ms
Changes:

Salt toiminnan testaus

Aloitin poistamalla apache2 kokonaan

Rämppäilemällä tab nappia näin mitä kaikkia apache2 paketteja koneella oli.

xubuntu@xubuntu:~$ sudo apt-get remove apache2 apache2
apache2 apache2-bin apache2-data apache2-utils
xubuntu@xubuntu:~$ sudo apt-get remove apache2 apache2-bin apache2
apache2 apache2-bin apache2-data apache2-utils
xubuntu@xubuntu:~$ sudo apt-get remove apache2 apache2-bin apache2-
apache2-bin apache2-data apache2-utils
xubuntu@xubuntu:~$ sudo apt-get remove apache2 apache2-bin apache2-data apache2-utils

Sitten kokeilin ajaa orjat highstateen

sudo salt ‘*’ state.highstate

Se meni läpi apache asentui ja localhostissa näkyi oikea sivu mutta userdir ei toiminut.

saltapacheuserdir.png

Kokeilin ensin poistaa symlinkit ja ajaa highstaten uudelleen

Se ei auttanut, sitten huomasin että olin kirjoittanut userdir.load symlinkin osoittamaan userdir.conffiin

Korjasin kirjoitusvirheen init.sls tiedostossa ja userdir lähti toimimaan

xubuntu@xubuntu:/srv/salt/apache$ curl localhost/~xubuntu/
Xubuntun kotisivu

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

PHP manuaalinen asennus

Ensin tietenkin asensin oikean paketin

sudo apt-get install -y libapache2-mod-php

Sitten kommentoin pois IfModuulin

sudoedit /etc/apache2/mods-available/php7.2.conf
##Modified by Niko Hakala
#
# 
# php_admin_flag engine Off
# 
#

Sitten apache2 piti käynnistää uudelleen

sudo systemctl restart apache2

Kokeilin toimiiko php xubuntun kotisivulla ensin muuttamalla mv komennolla index.html index.phpksi ja sitten lisäämällä sinne phpta.

xubuntu@xubuntu:~/public_html$ curl localhost/~xubuntu/
Xubuntun kotisivu

4

Php näyttäisi toimivan.

PHP automatisointi

Ensiksi tietenkin tein kansion johon asetukset menevät.

sudo mkdir /srv/salt/php

Kopioin sudo cp komennolla sinne php7.2.conffin

sudo cp /etc/apache2/mods-available/php7.2.conf /srv/salt/php/php.conf

Tein php/init.sls tiedoston johon kirjoitin tarvittavat asetukset ja lisäsin apache/init.sls tiedostoon php7.2.conf tiedoston apache2 uudelleen käynnistys tarkastuslistalle.

apache2service:
service.running:
- name: apache2
- watch:
- file: /etc/apache2/mods-enabled/userdir.conf
- file: /etc/apache2/mods-enabled/userdir.load
- file: /etc/apache2/mods-available/php7.2.conf

Sitten lisäsin phpn top.sls tiedostoon.

base:
'PaikallinenOrja':
- apache
- php

Kokeilin ajaa highstaten, se meni läpi. Sitten kokeilin vielä lisätä kommentin salt/php/php.conf tiedostoon ja ajaa highstaten uudelleen.

+#Salt toiminnan testaus kommentti
##Modified by Niko Hakala
#
#

Se meni läpi, apache2 käynnistyi uudelleen ja php toimi vieläkin.

d) Rakenna tila (state), joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen (name based virtual hosting). Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla. Jos et ole koskaan tehnyt nimipohjaisia virtuaalipalvelimia Apachelle, katso ohje (Name Based Virtual Hosts on Apache) tee tehtävä niin pitkälle kuin osaat.

Virtual Hosting Manuaalisesti

Lisäsin kebabkiska.com sivun virtuaali hostiksi

sudoedit /etc/apache2/sites-available/kebabkiska.com.conf
xubuntu@xubuntu:/etc$ cat /etc/apache2/sites-available/kebabkiska.com.conf

ServerName kebabkiska.com
ServerAlias www.kebabkiska.com

DocumentRoot /home/xubuntu/public_html/index.php


Require all granted

Sitten enabloin sivun ja käynnistin apache2 uudelleen.

sudo a2ensite kebabkiska.com
sudo systemctl restart apache2

Sitten muokkasin vielä /etc/hosts tiedostoa sudoeditillä

xubuntu@xubuntu:/etc$ cat hosts
127.0.0.1 localhost
127.0.1.1 xubuntu
127.0.0.1 kebabkiska.com
127.0.0.1 www.kebabkiska.com

Hostaus näyttäisi nyt toimivan

xubuntu@xubuntu:/etc$ curl www.kebabkiska.com
Xubuntun kotisivu

Virtual Hosting automatisointi

Tein kansion sudo mkdir /srv/salt/vhosting

Sinne kopioin kebabkiska.com.conffin ja tein init.sls tiedoston

xubuntu@xubuntu:/srv/salt/vhosting$ cat init.sls
/etc/apache2/sites-available/kebabkiska.com.conf:
file.managed:
- source: salt://vhosting/example-vhost.conf

/etc/apache2/sites-enabled/kebabkiska.com.conf:
file.symlink:
- target: ../sites-available/kebabkiska.com.conf

Sitten lisäsin /srv/salt/apache/init.slsään kebabkiska.com.conffin apache2 uudelleen käynnistys katselu listalle.

Sitten lisäsin vielä vhostingin top.slsään.

Sitten kokeilin virtualhostin toimintaa ensin poistamalla vanhan tiedoston jonka tein manuaalisesti sudoedit /etc/apache2/sites-available/kebabkiska.com.conf komennolla.

 sudo rm /etc/apache2/sites-available/kebabkiska.com.conf

Sitten poistin vielä vanhan symlinkin

 sudo rm /etc/apache2/sites-enabled/kebabkiska.com.conf

Sitten ajoin highstateen orjat.

Summary for PaikallinenOrja
------------
Succeeded: 9
Failed: 0
------------
Total states run: 9
Total run time: 375.861 ms

Apache2 käynnistyy väärässä kohtaa uudelleen joten uutta vhost symlinkkiä ei ikinä käytetä.

Tein uuden kansion /srv/salt/apacherestart ja sinne init.sls johon laitoin apachen uudelleen käynnistykseen tarvittavat tiedot.

xubuntu@xubuntu:/srv/salt/apacherestart$ cat init.sls
apacherestart:
service.running:
- name: apache2
- watch:
- file: /etc/apache2/mods-enabled/userdir.conf
- file: /etc/apache2/mods-enabled/userdir.load
- file: /etc/apache2/mods-available/php7.2.conf
- file: /etc/apache2/sites-available/kebabkiska.com.conf

Sitten kokeilin vielä uudelleen poistaa kebabkiska.com.conf ja sen symlinkin.

Ja käynnistin apache2 uudelleen, http://www.kebabkiska.com välittyy localhostiin niinkuin pitäisi ilman vhostia.

Sitten ajoin orjat highstateen.

Nyt http://www.kebabkiska.com välittyy xubuntun kotisivulle niinkuin alunperin oli tarkoitus!

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.

Skel manuaali testaus

Tein /etc/skel/public_html/index.php tiedoston.

xubuntu@xubuntu:/etc/skel/public_html$ cat index.php
Testi kotisivu!

?php
print 2+2;
?(Kulmasulut puuttuu koska ei muuten näy tässä.)

Sitten tein käyttäjän nimeltä skeletonman ja kokeilin toimiiko skel.

xubuntu@xubuntu:/etc/skel/public_html$ curl localhost/~skeletonman/
Testi kotisivu!

4

Skel Automatisointi

Tein /srv/salt/skelhpage/init.sls tiedoston

xubuntu@xubuntu:/srv/salt/skelhpage$ cat init.sls
/etc/skel/public_html/index.php
file.managed:
- source: salt://skelhpage/index.php

Sitten kopioin index.php tiedoston skel kansiosta skelhpage kansioon.

Poistin public_html kansion ja index.phpn skellistä ja lisäsin skelhpagen vielä top.slsään.

Sitten ajoin highstaten.

ID: /etc/skel/public_html/index.php
Function: file.managed
Result: False
Comment: Parent directory not present
Started: 18:06:16.460112
Duration: 9.79 ms
Changes:

https://stackoverflow.com/questions/31059738/saltstack-creating-directory-only-if-does-not-exists

Se ei toiminut koska file.managed ei tee hakemistoja joten tarvitaan vielä file.directory jotta se toimisi.

xubuntu@xubuntu:/srv/salt/skelhpage$ cat init.sls
/etc/skel/public_html:
file.directory:
- name: /etc/skel/public_html

/etc/skel/public_html/index.php:
file.managed:
- source: salt://skelhpage/index.php

Sitten tein vielä uuden käyttäjän ja kokeilin toimiiko skel nyt

xubuntu@xubuntu:/etc/skel/public_html$ curl localhost/~saltedskeltest/
Testi kotisivu!

4

Skel toimi nyt!

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.

UFW

Ensin avasin uflla portteja ja katsoin mikä tiedosto muuttuu

xubuntu@xubuntu:/srv/salt/firewall$ sudo ufw allow 22/tcp
Rules updated
Rules updated (v6)
xubuntu@xubuntu:/srv/salt/firewall$ sudo ufw allow 80/tcp
Rules updated
Rules updated (v6)
xubuntu@xubuntu:/srv/salt/firewall$ sudo ufw allow 4505/tcp
Rules updated
Rules updated (v6)
xubuntu@xubuntu:/srv/salt/firewall$ sudo ufw allow 4506/tcp
Rules updated
Rules updated (v6)

Katsoin ensin tietenkin /etc/ufw hakemistosta ja siellä oli user6.rules ja user.rules nämä olivat selvästi ne mitä olin hakemassa joten kopioin molemmat hakemistoon /srv/salt/ufw

Sitten tein vielä init.sls tiedoston /srv/salt/ufw hakemistoon

xubuntu@xubuntu:/srv/salt/ufw$ cat init.sls
ufw:
pkg.installed

/etc/ufw/user.rules:
file.managed:
- source: salt://ufw/user.rules
- require:
- ufw

/etc/ufw/user6.rules:
file.managed:
- source: salt://ufw/user6.rules
- require:
- ufw

ufw-enable:
cmd.run:
- name: 'ufw --force enable'
- require:
- ufw

Kokeilin ajaa highstaten, mutta se epäonnistui koska user.rules ja user6.rules oikeudet eivät olleet oikein asetettu. Joten laitoin

sudo chmod ugo+r user.rules

ja saman user6.rules tiedostolle jonka jälkeen asetukset toimivat!

xubuntu@xubuntu:/srv/salt/ufw$ sudo ufw status
Status: active

To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
4505/tcp ALLOW Anywhere
4506/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
4505/tcp (v6) ALLOW Anywhere (v6)
4506/tcp (v6) ALLOW Anywhere (v6)

LÄHTEET

Kurssin etusivu

http://terokarvinen.com/2018/aikataulu-%E2%80%93-palvelinten-hallinta-ict4tn022-3004-ti-ja-3002-to-%E2%80%93-loppukevat-2018-5p

file.directory ongelmaan apua

https://stackoverflow.com/questions/31059738/saltstack-creating-directory-only-if-does-not-exists 

Advertisements