Blogi on muuttanut! / The blog has moved!

Päivitän blogia jatkossa osoitteessa http://miikkavaltonen.com

From now on, the blog will be updated at http://miikkavaltonen.com

Advertisements

Palvelinten hallinta h2


H2

http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p#h2

http://terokarvinen.com/2018/apache-user-homepages-automatically-salt-package-file-service-example

https://github.com/saltstack/salt/wiki/Cheat-Sheet suosittelen tätä cheat sheettiä kaikille saltista kiinnostuneille, tiivistää tehokkaasti kaikki yksinkertaiset asiat, ja mukana myös muuta jännää.

Harjoituksissa on tehty virtuaalipalvelimesta master, ja koulukannettavasta minion. Palvelimella on käytössä ubuntu 16.04, kannettavalla xubuntu 16.04 jota käytetään livetikulta. Virtuaalipalvelinta hallitaan SSH-yhteydellä.

b), c) ja e) Laita käyttäjien kotisivut toimimaan Apachella, laita PHP toimimaan käyttäjien kotisivuilla, tee tila, joka laittaa esimerkkisivun uusille käyttäjille.

Ensimmäisenä tehtävänä on saada käyttäjien kotisivut toimimaan automaattisesti saltin tilan kautta.

Lähdetään tilanteesta, missä tarvittavat ohjelmistot, salt-minion ja salt-master, ovat jo asennettu tietokoneille, joita halutaan hallita, ja että hallintayhteys on jo muodostettu.

Hallintatietokoneelle tehdään tarvittavat kansion apachen asennusta varten:

$ sudo mkdir /srv/salt/apache

Tehdään samalla esimerkkikotisivu, joka kopioidaan vapaavalintaisella tekstillä:

$ sudo nano /srv/salt/apache/index.php

Tehdään apache kansioon tiedosto init.sls:

$ sudo nano /srv/salt/apache/init.sls

Asetetaan tila niin, että se asentaa apache2, php-moduulin, sekä luo esimerkkisivun. Lisäksi tila muokkaa skeliä niin, että uudet käyttäjät saavat käyttäjäsivun valmiiksi ja pystyvät käyttämään PHP:tä halutessaan. HUOM. Koko teksti kuuluu yhteen pötköön, välissä olevat kommentit selittävät sen toimintaa, eivätkä tarkoita ylimääräisiä välejä missään.

install_apache:

  pkg.installed:

    - pkgs:

      - apache2

      - libapache2-mod-php

/var/www/html/index.php:

  file:

    - managed

    - makedirs: true

    - source: salt://apache/index.php

/var/www/html/index.html:

  file:

    - absent

Tämä osa varmistaa apachen asennuksen, ja luo esimerkkisivun, samalla poistaen index.html tiedoston, minkä tilalle .php päätteinen tulee.

/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.load

/etc/apache2/mods-enabled/php7.0.conf:

  file:

    - managed

    - source: salt://apache/php7.0.conf

Tämä aktivoi käyttäjähakemistomoduulin, sekä PHP:n käyttäjähakemistoissa.

/etc/skel/public_html/index.php:

  file:

    - managed

    - makedirs: true

Lopuksi automatisoidaan käyttäjähakemistojen tekeminen siten, että käyttäjille luodaan valmiiksi sivu skelin kautta. Apache uudelleenkäynnistetään myöhemmässä vaiheessa.

HUOM! YAMLissa sisennykset toimivat välilyönneillä, joten ole tarkkana, että sisennykset säilyvät mikäli kopioit suoraan. Sisennys = 2 väliä.

Luodaan /srv/salt kansioon tiedosto top.sls:

base:

  '*':

    - apache

Tila ajetaan minionille komennolla:

$ sudo salt ‘*’ state.highstate

Jos kaikki menee oikein, esimerkkisivun tulisi näkyä, kun minionin selaimeen laitetaan localhost.

d) Rakenna tila, joka tekee Apachelle uuden nimipohjaisen virtuaalipalvelimen.

Luodaan aluksi kansio /srv/salt/hosting, johon tiedosto init.sls:

/etc/apache2/sites-available/www.example.com.conf:

  file:

    - managed

    - source: salt://hosting/www.example.com.conf

/etc/apache2/sites-enabled/www.example.com.conf:

  file.symlink:

    - target: ../sites-available/www.example.com.conf

/var/www/html/example/index.php:

  file.managed: 

    - makedirs: True

    - source: salt://hosting/index.php

/etc/hosts:

  file:

    - managed

    - source: salt://hosting/hosts

Huom. Kokeillessani koko settiä lopussa, huomasin, että edelleenkään www.example.com ei ohjannut oikeaan sivuun. En löytänyt nopeilla hauilla mitään ratkaisua, mutta onneksi ratkaisu löytyi Axel Rusaselta: Apache2.service pitää tietysti käynnistää uudestaan, kun muokataan enablettuja sivuja… Tässä komento, millä se tehdään, mikä lisätään myöhempänä.

apache2-restart:

  cmd.run:

    - name: 'sudo systemctl restart apache2.service'

Tehdään hosting kansioon index.php, joka lisätään minionille example kansioon yllä olevassa tilassa:

$ sudo nano index.php

Kopioidaan default sivu hosting kansioon, josta muokataan www.example.com.conf

$ sudo cp /etc/apache2/sites-available/000-default.conf /srv/salt/hosting/
$ sudo mv /srv/salt/hosting/000-default.conf /srv/salt/hosting/www.example.com.conf

Tiedoston sisältä muokataan ServerName, ServerAlias ja DocumentRoot seuraavanlaiseksi:

ServerName www.example.com

ServerAlias example.com

DocumentRoot /var/www/html/example/index.php

Seuraavaksi luodaan oma versio hosts –tiedostosta joka kopioidaan minionille:

$ sudo cp /etc/hosts /srv/salt/hosting/

Muokataan tiedostoon uusi osoite:

$ sudo nano hosts

Lisätään rivin 127.0.0.1 localhost alle rivit

127.0.0.1 www.example.com
127.0.0.1 example.com

Lopuksi muokataan top.sls ottamaan hosting kansio huomioon:

$ sudo nano /srv/salt/top.sls

Lisätään apachen alle hosting:

base:

  '*':

    - apache

    - hosting

Nyt kaikki asetukset on tehty, kokeillaan ajoa:

$ sudo salt ‘*’ state.highstate

Komento menee onnistuneesti läpi. Nimipalvelimen toimintaa voidaan kokeilla kirjoittamalla minionin selaimen hakukenttään www.example.com tai example.com, jolloin pitäisi näkyä eri teksti. Tässä tapauksessa sekin toimii.

Kokeillaan vielä lopuksi käynnistää kannettava uudestaan tikulta, jotta voidaan kokeilla tilan asennusta puhtaalta pöydältä minioniksi lisäämisen jälkeen.

Jotta säästytään avainsotkuilta poistetaan aikaisempi minionin avain:

$ sudo salt-key -d minion-id

Hyväksytään minion uusiksi, ja syötetään ainoastaan komento:

$ sudo salt ‘*’ state.highstate.

Ajamisessa kestää vähän kauemmin, ja selviää, että nimipalvelin ei hoida tehtäväänsä. Tämä korjaantuu, kun lisätään ../hosting/init.sls tiedoston loppuun seuraava:

apache2-restart:

  cmd.run:

    - name: 'sudo systemctl restart apache2.service'

Tällä muutoksella tila toimii. Cmd.run on tuskin kuitenkaan suositeltava tapa, mutta mennään sillä, kun se kerta toimii.

f) Asennetaan minionille sysstat, kytketään se päälle ja asetetaan sen päivitystahti minuutiksi.

Aluksi tehdään kansio /srv/salt/sysstat. Kopioidaan sinne sisään sysstatin asetustiedosto:

$ sudo cp /etc/default/sysstat /srv/salt/sysstat

Kopioidaan samalla ajastuksen konfigurointitiedosto, mutta laitetaan sen perään numero 2, jottei aikaisempi tiedosto ylikirjoitu:

$ sudo cp /etc/cron.d/sysstat /srv/salt/sysstat2

Tehdään tiedostoihin tarvittavat muutokset, sysstatiin muutetaan seuraava:

ENABLED=”true”

Seuraavaan, sysstat2, muutetaan 5-55/10 tekstiksi */1, lopullinen rivi on siis:

*/1 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1

Seuraavaksi luodaan sysstat kansioon init.sls:

sysstat:

  pkg.installed

/etc/default/sysstat:

  file.managed:

    - source: salt://sysstat/sysstat

/etc/cron.d/sysstat:

  file.managed:

    - source: salt://sysstat/sysstat2
Kun asetukset on tehty, täytyy tila vielä lisätä /srv/salt/top.sls tiedostoon:

base:

  '*':

    - apache

    - hosting

    - sysstat

Sitten voidaankin lähteä ajamaan tilaa:

$ sudo salt ‘*’ state.highstate

Tila menee läpi, eli sysstat on konfiguroitu onnistuneesti oikein tilan kautta.

 

 

Palvelinten hallinta h1

H1 Lähteitä & muita linkkejä: http://terokarvinen.com/2018/aikataulu-–-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p#h1 http://terokarvinen.com/2018/quick-fix-for-useless-salt-warning-add-file_ignore_glob-to-etcsaltmaster http://terokarvinen.com/2018/run-salt-sls-file-locally-sudo-salt-call-local-state-apply-foo Jatkokurssilla pyrin pitämään dokumentaatiot yksinkertaisempina.   Harjoitus tehtiin Digital Oceanin virtuaalipalvelimella, jossa 64-bittinen Ubuntu 16.04.4. Virtuaalipalvelinta ohjataan PuTTyllä.   c) Asennetaan Salt virtuaalipalvelimelle. Salt asennetaan komennolla $ sudo apt install salt-master salt-minion Komento asentaa masterin sekä minionin. … Continue reading Palvelinten hallinta h1

Linux palvelimet h7

H7 – Harjoitus 7 Linux palvelinten kurssilta: http://terokarvinen.com/2017/aikataulu-%e2%80%93-linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op#h7 a) Ratkaise valitsemasi vanha arvioitava laboratorioharjoitus tältä (Löytyy DuckDuckGolla tai Googlella sekä linkeistä tältä sivulta).   Valitaan sivulta ensimmäinen vastaantuleva labraharjoitus: http://terokarvinen.com/2017/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-4-tiistai-alkusyksy-2017-%E2%80%93-5-op   Tehtävänä on siis suorittaa seuraavat toimenpiteet: asentaa LAMP -stack ja tehdä lyhyt ohjelma yrityksen … Continue reading Linux palvelimet h7

Linux palvelimet h6

H6: terokarvinen.com/2017/aikataulu-–-linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op#h6

 

Harjoituksessa 6 tehdään seuraava: Kirjoita ja suorita “Hei maailma” kolmella kielellä. Asenna tarvittavat ympäristöt.

 

Aion suorittaa tehtävän kielillä C:llä, Pythonilla ja Perlillä. Aluksi varmistetaan, että kaikki koodien ajamiseen tarvittavat ohjelmat on asennettu.

Tiedän ennestään, että nykyisin käytettävä Pythonin versio on versio 3, joten komennolla sudo apt-get install python3 saamme Pythonin asennettua, mutta käykin ilmi että tarvittava ohjelma onkin Xubuntussa jo valmiina.

Seuraavaksi asennetaan C kääntäjä. C:stä en tiedäkkään kääntäjän nimeä, sillä sudo apt-get install c ei ole mikään, ja tabulaattorista tulevia ehdotuksia on reilut 1600. Konsultoidaan siis internettiä: http://www.codecoffee.com/tipsforlinux/articles/18.html. Ohjekomennoissa näkyy ajettavana ohjelmana gcc, joten kokeillaan onnea sen kanssa. Asennus menee läpi, testataan sen toimivuus myöhemmin.

Yhtälailla Perl asentuu komennolla sudo apt-get install perl. Perl on näköjään kuitenkin asennettu Xubuntuun valmiiksi, kuten Pythonin kohdalla.

 

Aloitetaan ohjelmien kirjoittaminen. Ensiksi luodaan käyttäjän kotihakemistoon tiedosto pythonhw, python hello world. Tiedostoon kirjoitin seuraavan koodin:

KuoeloS

Tiedoston nimeämisessä kannattaa tietääkseni olla tarkkana, .py pääte vaaditaan, mikäli haluaa kääntäjän toimivan. En kuitenkaan ole ihan täysin varma tästä. Joka tapauksessa nimetään tiedosto pythonhw.py:ksi.

Kokeillaan koodin kääntämistä. Arvelen, että kääntäjä toimii niinkin helposti, että python3 pythonhw.py.

LsELFiD

Ja sehän onnistuu. Siirrytään siis seuraavaan kohtaan, C:hen. Tässä kohtaa minulla loppuu ennakkotietämys kesken, ja konsultoin C:n käyttöopasta osoitteesta https://www.programiz.com/c-programming/examples/print-sentence. Tekstitiedostoon kirjoitan seuraavan tekstin:

WO4iN4s

Tiedosto on tässäkin tapauksessa syytä nimetä oikein, joten nimetään tiedosto chw.c:ksi, eli c hello world.

C-kääntäjä toimii luultavasti samalla tavalla kuin Pythoninkin, joten kokeillaan komentoa gcc chw.c. Samalla tulemme testanneeksi onko gcc oikeasti oikea ohjelma.

azNJ8Rz

Gcc on selkeästi oikea ohjelma, mutta koodissa on näköjään virheitä. Laiskuuttani koitin oikaista ja jättää ohjeessa mainitun rivin #include <stdio.h>. Pakko nöyrtyä ja lisätä pätkä koodiin.

Uudelleen ajettuna homma menee läpi, jonka jälkeen kansioon ilmestyy a.out tiedosto. Oppaan mukaan ohjelma olisi pitänyt nimetä ensin lisäämällä komentoon -o sekä ohjelman nimi. Poistetaan a.out komennolla rm a.out, ja syötetään komento  gcc -o chw chw.c. Käännös toimii jälleen, jonka jälkeen ohjelma voidaan ajaa komennolla ./chw.

HPJZDHL

Lopputulos näkyy vähän oudosti, mutta se toimii.

Lopuksi siirrytään Perliin. Perl ei myöskään ole minulla ennestään tuttu, joten käytän seuraavaa opasta: https://www.thegeekstuff.com/2009/09/perl-hello-world-example-how-to-write-and-execute-perl-program-on-unix-os/

Oppaan mukaan luodaan tiedosto perlhw.pl.

5eDQIqa

Kääntäjä toimii samalla tavalla kuin aiemmatkin, perl perlhw.pl.

ih5VwZg

Perlikin siis toimii.

Tässä tämän viikon tehtävät. Alla lähdeluettelo.

 

https://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python_3/Hello,_World

http://www.codecoffee.com/tipsforlinux/articles/18.html

https://www.programiz.com/c-programming/examples/print-sentence

https://www.thegeekstuff.com/2009/09/perl-hello-world-example-how-to-write-and-execute-perl-program-on-unix-os/

Linux palvelimet h5

H5  – http://terokarvinen.com/2017/aikataulu-%e2%80%93-linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op#h5 Harjoitus on tehty kolmea tietokonetta käyttäen, koululäppäriä, Digital Oceanin virtuaalipalvelinta sekä omaa Windows kotikonettani. Koululäppäriä ja virtuaalipalvelinta ohjattiin enimmäkseen Puttyn kautta etänä kotikoneeltani. a) SSH:n asennus tapahtuu helposti komennolla sudo apt-get update && sudo apt-get install -y ssh. b) Seuraavaksi avataan palomuuriin … Continue reading Linux palvelimet h5

Linux palvelimet h4

Tässä neljännen oppitunnin tehtäväpalautus:

 

H4

Tehdään tehtäväkohdat a, s, y, b ja c, jotka löytyvät osoitteesta https://terokarvinen.com/2017/aikataulu—linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op#h4

a) Tämän kohdan ehdin tehdä jo oppitunnilla, mutta käydään lyhyesti läpi, miten asia hoidetaan.

Oletetaan, että apache2 weppipalvelin on jo asennettu ja todettu toimivaksi siten, että oletussivu näkyy.

Ensiksi luodaan käyttäjän kotihakemistoon kansio public_html, jonka sisään tallennetaan index.html -tiedosto. Tiedostoon on hyvä kirjoittaa jotain, että tiedetään myöhemmin, että tiedosto oikeasti luetaan ja toimii.

Tämän jälkeen komentoriville annetaan komento sudo a2enmod userdir. Komento kytkee päälle apache2 moduulin userdir, eli käyttäjähakemistot. Webpalvelin täytyy käynnistää tämän jälkeen uudestaan komennolla sudo systemctl restart apache2.service. Tämän jälkeen sivuja voidaan kokeilla paikallisesti osoitteessa localhost/~käyttäjä. “Ulkopuolelta” testattaessa käytetään ip-osoitetta. Omassa tilanteessani käyttäisin siis osoitetta 159.89.5.3/~miikkb. Myös miikkavaltonen.com/~miikkb toimisi, sillä domain on yhdistetty osoitteeseen.

Jos aiemmin index.html tiedostoon kirjoitettu teksti ilmestyy selaimeen, sivu toimii ja käyttäjät pystyvät luomaan sivuja omilla oikeuksillaan.

s) Myös tämän kohdan ehdin tehdä tunnilla, mutta käydään prosessi läpi.

Lähdetään suorittamaan tehtävää tilanteesta, mihin edellinen tehtävä päättyi, eli käyttäjien sivut ja apachen oletussivu toimivat.

Ensiksi navigoidaan hakemistoon /etc/apache2/sites-available. Kansiosta löytyy oletuksena tiedostot 000-default.conf ja default-ssl.conf. Emme koske näistä kumpaankaan, vaan luomme uuden tiedoston komennolla sudo nano Miikkb.example.com.conf. Tiedoston voisi nimetä miten vaan, mutta sen täytyy päättyä .conf -päätteeseen.

Ymmärtääkseni tiedosto tavallaan kertoo, mistä oletussivu haetaan, ja missä tapauksissa se näytetään.

ServerName ja ServerAlias voivat käsittääkseni olla myös tietokoneen ip-osoitteita, mikäli domainia ei ole.

DocumentRoot kertoo, mistä näytettävä sivu haetaan. Tässä tapauksessa se haetaan käyttäjän kotikansiosta, /home/miikkb/publicSite. Kansioon tulee tehdä index.html tiedosto, mikä tehdään myöhemmin.

<Directory /home/miikkb/publicSite/> ja require all granted liittyvät ehkä oikeuksiin, mutta tästä en ole laisinkaan varma. Joka tapauksessa, kun tiedosto on tehty, voimme tallentaa tiedoston ja poistua nanosta.

Siirrytään kansioon /etc/apache2/sites-enabled. Kansio sisältää tiedostot jotka ovat palvelimella käytössä. On hyvä huomata, että kansio ei oikeasti varsinaisesti sisällä tiedostoja. Komennolla ls -l näemme, että tiedostot ovat oikeasti linkkejä, eli viitteitä muualla sijaitseviin tiedostoihin.

miikkb@jeesus:/etc/apache2/sites-enabled$ ls -l

total 0

lrwxrwxrwx 1 root root 42 Feb 6 15:15 Miikkb.example.com.conf -> ../sites-available/Miikkb.example.com.conf

Tiedosto siis haetaan kansiosta sites-available, mihin se aiemmin tehtiin. Jotta tiedosto saadaan käyttöön, on annettava komentoriville komento sudo a2dissite 000-example.conf. Komennolla poistetaan tiedoston linkki sites-enabled kansiosta. Tämän jälkeen kytketään aiemmin luotu sivu käyttöön komennolla sudo a2ensite Miikkb.example.com.conf. Lopuksi palvelin täytyy käynnistää vielä uusiksi komennolla sudo systemctl restart apache2.service.

Kun palvelin on käynnistetty uudestaan, siirrymme takaisin käyttäjän kotihakemistoon. Luodaan komennolla mkdir publicSite. Kansioon luodaan tiedosto index.html komennolla nano index.html. Tiedostoon on hyvä kirjoittaa jokin testiviesti, jotta nähdään että sivu toimii.

y) Seuraavaksi etsitään jälkiä murtautumisyrityksistä. Jälkiä löytyy helposti hakemistosta /var/log tiedostosta ufw.log. Avataan tiedoston viimeisimmät merkinnät komennolla tail -f ufw.log.

Feb 12 13:39:56 jeesus kernel: [528560.363534] [UFW BLOCK] IN=eth0 OUT= MAC=32:ae:f6:0d:16:0c:40:a6:77:34:67:f0:08:00 SRC=85.93.20.34 DST=159.89.5.3 LEN=40 TOS=0x00 PREC=0x00 TTL=250 ID=58493 PROTO=TCP SPT=52216 DPT=63387 WINDOW=1024 RES=0x00 SYN URGP=0

Feb 12 13:40:01 jeesus kernel: [528565.440320] [UFW BLOCK] IN=eth0 OUT= MAC=32:ae:f6:0d:16:0c:40:a6:77:34:67:f0:08:00 SRC=152.250.43.19 DST=159.89.5.3 LEN=40 TOS=0x00 PREC=0x00 TTL=235 ID=45793 PROTO=TCP SPT=33348 DPT=23 WINDOW=14600 RES=0x00 SYN URGP=0

Feb 12 13:40:29 jeesus kernel: [528592.811926] [UFW BLOCK] IN=eth0 OUT= MAC=32:ae:f6:0d:16:0c:40:a6:77:4f:3f:f0:08:00 SRC=112.241.205.54 DST=159.89.5.3 LEN=40 TOS=0x00 PREC=0x00 TTL=47 ID=1214 PROTO=TCP SPT=5245 DPT=23 WINDOW=3941 RES=0x00 SYN URGP=0

Yhteyttä ottavat ip-osoitteet ovat 85.93.20.34, 152.250.43.19 sekä 112.241.205.54.

85.93.20.34 on geoiplookupin mukaan Saksasta, 152.250.43.19 on Brasiliasta ja 112.241.205.54 on Kiinasta. Lokiin tulee merkintöjä melko usein lähes satunnaisista maista ja osoitteista. Tällä hämäräveikot yrittävät löytää huonosti suojattuja tietokoneita.

Lisäksi voimme tarkistaa /var/log hakemistossa sijaitsevan auth.login, mistä näemme osoitteiden lisäksi käyttäjänimiä, joina tunkeutujat yrittävät kirjautua. Nimiä on loputtomasti, mutta nostetaan esiin vaikka root, filip, alexander sekä zap. Nimet ovat siis käyttäjänimiä, joilla tunkeutujat yrittävät kirjautua tietämättä mitään tietokoneen oikeista käyttäjistä tai salasanoista.

b) Kohdassa b kokeillaan scp:n käyttöä. Scp:tä käytetään palvelinten väliseen tiedostokopiointiin.

Tehtävänä on luoda sivu paikallisella tietokoneella ja kopioida se virtuaalipalvelimeen.

Käytän testisivuna aikaisemmissa palautuksissa tehtyä lyhyttä ohjelmapätkää, mikä asettaa numeroita jonoon. Tallensin tiedoston kansioon /home/mvaltonen/public_html nimellä index.html. Seuraavaksi yritetään kopioida tiedosto virtuaalipalvelimelle kansioon /home/miikkb/public_html.

Scp:n käyttö ei ole minulle tuttua, joten vilkaisen Scp:n manuaalia komennolla man scp. Manuaali ei kuitenkaan paljon lohduttanut, joten selaan netistä käyttöohjeita. Löysin hyvät ohjeet sivulta http://www.hypexr.org/linux_scp_help.php. Sivusto kertoo komentojen käytön yksityiskohtaisesti, mikä on hyvä, sillä tiedostoja on helppo tuhota kopioimalla niitä miten sattuu.

Sivuston mukaan käytettävä komento olisi siis scp index.html miikkb@miikkavaltonen.com:/home/miikkb/public_html. Laitetaan sormet ristiin, ja kokeillaan kuinka käy.

Komentorivi kysyi virtuaalipalvelimen käyttäjän salasanaa, minkä jälkeen siirto tapahtui hämmästyttävän nopeasti.

mvaltonen@kissa:~/public_html$ scp index.html miikkb@miikkavaltonen.com:/home/miikkb/public_html

miikkb@miikkavaltonen.com’s password:

index.html 100% 758 0.7KB/s 00:00

Ennen kokeilemista mielessäni kävi ajatus siitä, että pitäisikö komento sudottaa, mutta jätin kuitenkin kokeilematta, sillä kopiointi tapahtuu käyttäjän kotihakemistossa, missä lisäoikeuksia ei pitäisi tarvita.

Nyt kun kopiointi on valmis, tarkistan onko tiedosto kopioitunut oikein. Virtuaalipalvelimen kansiosta public_html löytyy identtinen tiedosto. Kopioimalla sen publicSite tiedostoon komennolla cp index.html /home/miikkb/publicSite saan sen näkymään suoraan osoitteessa miikkavaltonen.com. Scp:n käyttö on siis onnistunut.

c) Viimeisenä tehtävänä lisätään palvelimelle lyhyt PHP-sivu. Kuten aiemmissa palautuksissa, täytyy virtuaalipalvelimelle asentaa apachen php-moduuli komennolla sudo apt-get install libapache2-mod-php. Lisäksi apachen asetuksista täytyy sallia PHP:n käyttö käyttäjien sivuilla. Tämä onnistuu hakemistosta /etc/apache2/mods-available tiedostosta php7.0.conf.

Tiedostosta on tärkeä kommentoida alimmat 5 riviä laittamalla # rivin eteen. Muuta ei tarvitse muokata. Tämän jälkeen apache täytyy käynnistää uudelleen komennolla sudo systemctl restart apache2.service. Seuraavaksi voimme palata kotihakemistoon, publicSiteen ja muuttaa index.html tiedoston päätteen php:ksi, komennolla mv index.html index.php.

Lisään aikaisemmin scp:llä kopioituun tiedostoon tekstipätkän:

Here is your IP-address:

<?php $_SERVER[‘REMOTE_ADDR’] ?>

Testatessani sivua IP-osoite ei kuitenkaan näy. Konsultoin vähän kaveriani, joka tuntee PHP:n paremmin kuin minä, ja hän muistutti minua siitä, että osoite täytyy tietenkin echota näkyviin. Nykyiselläänhän komento vain kerää osoitteen eikä tee sillä mitään. Muokataan siis PHP-koodia seuraavasti:

Here is your IP-address:

<?php echo $_SERVER[‘SERVER_ADDR’] ?>

Ja sivuhan toimii. Sivu siis tulostaa käyttäjän IP-osoitteen.