Viikko 7 harjoitus 7 – Vanhan arvioitavan laboratorioharjoituksen ratkaisu

Tämän viikon harjoituksessa tutustutaan ohjelmointikieliin ja niiden ympäristöihin. Harjoituksessa käyttämäni kone on MSI:n valmistama GX 640-mallin kannettava tietokone. Koneeseen on asennettu käyttöjärjestelmäksi Linux Xubuntu 16.04.3 LTS. Käytän kuitenkin tässä harjoituksessa aiemmin luomaani livetikkua, koska harjoitus tarvitsisi suorittaa niin sanotusti puhtaalta pöydältä.

Voit saada oman Xubuntu 16.04.3 LTS versiosi seuraavasta linkistä.

Aloitin harjoituksien tekemisen maanantaina 12.3.2018 klo 02.00. Annan tämän julkaisun aikana kellonaikoja tehtävien välissä, jotta saatte kuvan, kuinka kauan tämän harjoituksen suorittamiseen menee aikaa.

Tämän harjoituksen toimeksianto löytyy kurssini opettajan Tero Karvisen nettisivuilta.

 

Tehtävä alkaa…

Olet nyt “Kätketty Mestari” Oy:n tietohallintopäällikkö (ja -osasto). Tämä on Linux palvelimet ict4tn021-4 arvioitava laboratorioharjoitus.

Ninja Tietokanta

Haluamme tehdä palvelun, jossa listataan ninjaliikkeitä makeuden, tyylisuunnan ja muiden keskeisten ominaisuuksien suhteen.

Kehittäjämme haluavat käyttää LAMP (Linux Apache MySQL PHP) -pinoa. Asenna tarvittavat ohjelmistot ja tee tietokantaa käyttävä esimerkkiohjelma.

Etätyötä

Haluamme työskennellä etäältä (kuin ninjat piiloistaan).

Käyttäjät

Työntekijämme ovat toimitusjohtaja Nakke Nertola, Håkan Värs, Einari Mikkonen, Einari Öljysaari ja Eija Vähäkäähkä. Tee kaikille käyttäjille esimerkkikotisivut.

Suuri muuri

Suojaa kone tulimuurilla.

WhoWhere

Tee kaikkien käyttäjien käyttöön komento, joka tulostaa Ninjamaisen tervehdyksen “Hello Ninja”, koneen IP-osoitteen ja komentoa ajavan käyttäjän nimen.

SneakyGarden.Example.com

Virallinen ninjaliikesivumme tulee Eijan ylläpidettäväksi. Tee Eijalle valmis esimerkkisivu, jossa tietokannassa on seuraavat esimerkkiliikkeet vaikeustasoineen

  • Hyppykiertopotku 27
  • Kuperkeikka 3
  • Karjaisu 1

Sivun tulee olla Eijan muokattavissa ja ninjaliikkeiden näkyä osoitteessa http://SneakyGarden.Example.com. Nimipalvelun toimintaa voit simuloida hosts-tiedostolla.

Uusi ylläpitäjä

Uusi ylläpitäjä on Jussi Laitavalo. Tee hänelle käyttäjätunnus jussi ja anna hänen käyttöönsä täydet pääkäyttäjän oikeudet.

 

LAMP-kehitysalusta

klo 02.20

Aloitan tämän harjoituksen ensin asentamalla LAMP-kehitysalustan. Ensin avaamme Terminal Emulatorin.

käynnistävalikko

Työpöydän vasemmasta yläreunasta klikkaamme Xubuntu-logoa ja avautuvasta valikosta valitsemme Terminal Emulatorin. Tämän jälkeen syötämme terminaaliin seuraavan komennon.

sudo apt-get update

LAMP-kehitysalustaa varten meidän tarvitsee asentaa seuraavat ohjelmat: Apache, MySQL ja PHP. Aloitamme ensin Apachen asennuksella. Tämä onnistuu seuraavalla komennolla.

sudo apt-get install -y apache2

Asennuksen valmistuttua voimme testata onko ohjelma varmasti asennettu seuraavalla komennolla.

firefox ”http://localhost/”

Jos selaimessa avautuu seuraava näkymä, asennus on onnistunut.

selain1

Tämän jälkeen meidän on hyvä muuttaa tuota oletussivua näyttämään vaikka Hello World! tekstiä. Tämä onnistuu seuraavalla komennolla.

sudoedit /var/www/html/index.html

Kun olemme saaneet auki oletussivun html-tiedoston voimme poistaa kaiken sisällön CTRL+K näppäinyhdistelmää painamalla niin kauan kuin teksti on poissa. Tämän jälkeen voimme lisätä sinne tuon Hello World! tekstin ja tallentaa muutokset CTRL+X ja y näppäimillä. Seuraavaksi voimme testata toimiiko oletussivu. Tämä onnistuu komennolla.

firefox ”http://localhost/”

Näkymä pitäisi olla seuraavanlainen.

selain2

Jotta saamme käyttöömme käyttäjien kotihakemistot, meidän tarvitsee sallia niiden luominen koneella. Tämä onnistuu seuraavalla komennolla.

sudo a2enmod userdir

Jotta edellinen muutos tulee voimaan, meidän tarvitsee käynnistää Apache2 palvelin uudestaan seuraavalla komennolla.

sudo systemctl restart apache2.service

Nyt olemme onnistuneesti asentaneet Apache2 palvelimen koneelle. Voimme siis siirtyä seuraavaan asennettavaan ohjelmaan, eli PHP:hen. PHP:tä tarvitaan, jotta voimme käyttää Apache2 palvelimessamme PHP-koodia. PHP-kirjaston asennus onnistuu seuraavalla komennolla.

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

Kun kirjasto on asennettu meidän tarvitsee käynnistää Apache2-palvelin jälleen uudelleen seuraavalla komennolla.

sudo systemctl restart apache2.service

Tämän jälkeen muokkaamme lisäämämme kirjaston php-asetustiedostoa lisäämällä #-kommenttimerkit asetustiedostossa määriteltyihin kohtiin IfModulessa, jotta saamme PHP:n käytön päälle public_html kansioissa. Jotta pääsemme muokkaamaan asetustiedostoa, käytämme seuraavaa komentoa.

sudoedit /etc/apache2/mods-available/php7.0.conf

php

Asetustiedoston muutoksien jälkeen käynnistämme Apache2-palvelimen uudelleen komennolla.

sudo systemctl restart apache2.service

Nyt olemme onnistuneesti asentaneet PHP-kirjaston koneelle. Tämän jälkeen siirrymme viimeiseen kehitysalustaa varten tarvittavaan ohjelmaan, eli MySQL. MySQL eli tietokantaohjelmisto asentaminen tapahtuu seuraavalla komennolla.

sudo apt-get -y install mysql-server mysql-client

Asennuksen edetessä aukeaa seuraavanlainen ikkuna.

mysql

MySQL pyytää sinua syöttämään tähän salasanan. Voit keksiä itse hyvän salasanan tai voit käyttää Linuxin omaa salasana generaattoria. Asentaaksesi tuon salasana generaattorin sinun tarvitsee avata uusi välilehti terminaaliin ja sinne syötät seuraavan komennon.

sudo apt-get -y install pwgen

Teemme tämän kuitenkin tällä kertaa käsin, koska tämä on vain harjoitus. Muista käyttää isoja ja pieniä kirjaimia sekä numeroita. Vältä kuitenkin ääkkösien käyttöä.

Onneksi olkoon, olet asentanut LAMP-kehitysalustan.

SSH-demoni

klo 02.42

Seuraavana asennamme SSH-demonin, jotta käyttäjämme voivat työskennellä etäyhteyden kautta. SSH-demonin asennus onnistuu helpoiten asentamalla koko SSH-demoni koneelle. Tämä onnistuu seuraavalla komennolla.

sudo apt-get -y install ssh

Kokeilemme SSH-yhteyden toimimista vasta, kun olemme luoneet käyttäjät, koska teemme tätä harjoitusta livetikun avulla. Samalla saamme testattua myös käyttäjät. Voimme siis siirtyä seuraavaan kohtaan.

Tulimuurin käyttöönotto

klo 02.44

Jotta saamme estettyä tunkeutumisyritykset koneelle, meidän tarvitsee ottaa käyttöön tulimuuri. Tulimuurin käyttöönotto on nopeaa ja helppoa. Sinun tarvitsee vain käyttää seuraavia komentoja.

sudo ufw allow 22/tcp

sudo ufw allow 80/tcp

sudo ufw enable

Ensimmäiset kaksi komentoa avasivat tulimuurista portit 22(ssh) ja 80(http), koska tarvitsemme näitä etäyhteyttä varten ja jotta käyttäjien omat kotisivut toimivat. Tulimuurin käyttöönoton jälkeen voimme siirtyä seuraavaan kohtaan.

Käyttäjien ja ylläpitäjän lisääminen

klo 02.45

Tässä vaiheessa on hyvä lisätä järjestelmään käyttäjät ja ylläpitäjä, mutta ennen kuin lisäämme niitä, meidän olisi hyvä luoda esimerkki kotisivu, joka tulee jokaiselle luodulle käyttäjälle. Näin säästämme aikaa, että emme joudu luomaan kansiota ja html-tiedostoa jokaiselle erikseen.

Esimerkki sivun luominen onnistuu /etc/skel/-hakemistossa, jonka sisältö kopioidaan automaattisesti uusille käyttäjille luotaviin kotihakemistoihin. Luodaksesi kansion, jossa esimerkkisivun sisältävä html-tiedosto on, voit käyttää seuraavia komentoja.

cd /etc/skel/

sudo mkdir public_html

cd public_html

sudoedit index.html

 

Käytämme myös tässä samaa Hello World oletussivua, joten syötimme html-tiedostoon edellä mainitun tekstin ja tallensimme sen CTRL+X ja y-näppäimillä. Tämän jälkeen poistuimme tuolta hakemistosta cd-komennolla takaisin alkuun. Käyttäjien lisääminen järjestelmään onnistuu seuraavalla komennolla.

sudo adduser käyttäjätunnus

Kun olemme ajaneet tämän komennon, järjestelmä kysyy salasanaa kaksi kertaa, jonka voimme määritellä tässä vaiheessa. Tämän jälkeen järjestelmä kysyy käyttäjän koko nimeä ja muita tietoja. Syötämme tähän vain käyttäjän koko nimen ja jätämme muut kohdat tyhjäksi. Toistamme nämä toimenpiteet kaikkien käyttäjien kohdalla, myös ylläpitäjän kohdalla. Kun olemme luoneet kaikki käyttäjät ja ylläpitäjän voimme antaa ylläpitäjälle sen tarvitsemat oikeudet. Tämä onnistuu seuraavilla komennoilla.

sudo adduser käyttäjätunnus sudo

sudo adduser käyttäjätunnus adm

Nyt olemme saaneet valmiiksi käyttäjien ja ylläpitäjän luomisen, joten voimme testata toimiiko SSH-yhteys ja samalla käyttäjien kotisivut. Tätä voimme yrittää seuraavilla komennolla.

ssh käyttäjätunnus@localhost

Komennon ajamisen jälkeen terminaali kysyy “fingerprint” eli varmistaa onko se todella minä joka yrittää yhdistää. Vastasin yes, koska terminaali vaatii joko yes tai no vastauksen. Tämän jälkeen terminaali kysyy käyttäjän salasanaa, johon annetaan se salasana, jonka aiemmin määrittelimme käyttäjälle.

SSH-yhteys siis toimii, joten voimme seuraavaksi kokeilla toimiiko käyttäjän esimerkkikotisivu. Tämä onnistuu avaamalla selain ja syöttämällä sinne seuraavanlainen osoite.

http://localhost/~käyttäjätunnus

Osoitteessa pitäisi avautua seuraavanlainen näkymä.

selain3

Onnistuneen testin jälkeen voimme poistua SSH-yhteydestä exit-komennolla ja siirtyä seuraavaan kohtaan.

Komentoscripti

klo 02.54

Kaikille käyttäjille toimivan scriptin luominen, joka esittää käyttäjälle Hello Ninja tervehdyksen, koneen ip-osoitteen ja komentoa ajavan käyttäjän nimen, on helppoa. Aluksi luomme kansion, jossa scripti löytyy ja tämän jälkeen itse tiedoston jossa scripti on. Tämä onnistuu seuraavilla komennoilla.

mkdir testi

cd testi

nano testi.sh

script

Tekstitiedostoon lisäämme seuraavanlaisen tekstin.

#!/bin/bash

echo ”Hello Ninja”

hostname -I

whoami

Tallennamme tiedoston CTRL+X ja y-näppäimillä. Tämän jälkeen annamme kaikille käyttäjille oikeuden ajaa tätä scriptiä seuraavalla komennolla.

chmod a+x testi.sh

Ja lopuksi annamme kaikille käyttäjille pääsyn tuohon tiedostoon seuraavalla komennolla.

sudo cp testi.sh /usr/local/bin/

Ajettuamme tämän komennon voimmekin testata tämän scriptin toimivuutta jollakin käyttäjällä SSH-yhteyden kautta. Avaamme SSH-yhteyden.

ssh käyttäjätunnus@localhost

Annamme käyttäjän salasanan ja sen jälkeen voimme syöttää terminaaliin seuraavan komennon ja ajaa sen.

testi.sh

Terminaalissa pitäisi näkyä seuraavanlaista.

script1.png

Nyt olemme luoneet scriptin jonka jokainen käyttäjä voi ajaa omassa etäyhteydessään. Voimme siirtyä seuraavaan kohtaan.

Tietokannan luominen

klo 02.58

Ensimmäisellä kerralla kun kirjaudut sisään MySQL:ään joudut käyttämään root-tunnuksia, että voit antaa oikeudet käyttäjälle muokata tietokantaa. Tämä onnistuu seuraavalla komennolla.

mysql –user=root –password

Tähän kohtaan syötät salasanan, jonka määrittelit MySQL:n asennuksen yhteydessä. Tämän jälkeen luot tietokannan seuraavalla komennolla.

CREATE DATABASE tietokannan nimi CHARACTER SET utf8;

Seuraavaksi annamme käyttöoikeudet käyttäjälle. Tämä onnistuu seuraavalla komennolla.

GRANT ALL ON tietokannan nimi. * TO käyttäjätunnus@localhost IDENTIFIED BY ‘käyttäjän salasana’;

Tämän jälkeen voimme lopettaa MySQL:n käytön exit-komennolla. Seuraavaksi siirrymme käyttäjän roolissa luomaan tietokantaan sisältöä. Kirjaudumme sisään MySQL:ään seuraavalla tavalla.

mysql –user=käyttäjätunnus –password

Tähän kohtaan syötät käyttäjän salasanan, jonka jälkeen voit aloittaa parametrien syöttämisen. Ensin annetaan sarakkeen nimi, sen jälkeen muoto missä tieto on. Esimerkiksi voit syöttää tiedot tällä tavalla.

CREATE TABLE tietokannan nimi( sarake1 VARCHAR(50) NOT NULL, sarake1 VARCHAR(50) NOT NULL);

Seuraavaksi voit aloittaa tietojen syöttämisen tietokantaan. Voit käyttää esimerkkinä tätä komentoa.

INSERT INTO tietokannan nimi(sarake1,sarake2) VALUES (’arvo1’,’arvo2’);

Syötettyäsi kaikki tiedot voit tulostaa tietokantasi seuraavalla komennolla.

SELECT * FROM (tietokannan nimi);

Tietokantasi pitäisi näyttää seuraavalta.

tietokanta.png

Tämän jälkeen voitkin poistua MySQL:stä exit-komennolla.

Tästä eteenpäin PHP-osaamiseni ei ollut riittävä, että olisin päässyt etenemään, joten päätän tämän harjoituksen tähän.

Lopetin harjoituksen tekemisen 12.3.2018 klo 04.00 eli harjoituksen tekemiseen kului noin 2 tuntia.

Lähteet:

Tero Karvisen nettisivut: http://terokarvinen.com/2017/aikataulu-%E2%80%93-linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op

 

Mainokset

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s