Tehtävä H7

Ratkaise valitsemasi vanha labraharjoitus

Tein tehtävän kotona pöytäkoneellani, jossa oli mm. Intel i5-3570K prosessori, 8GB RAM-muistia ja Asus GTX 1060 (6GB) näytönohjain. Xubuntua (18.04.3) käytin USB-tikulta kokeilutilassa.

Aloitin tehtävän tekemisen 17.3.2020 klo 11:30 (UTC +2). Xubuntun kello oli näytti aikaa 9:30 (UTC +0).

Valitsin tehtäväkseni kevään 2018 labraharjoituksen, jota voi tarkastella osoitteesta: http://terokarvinen.com/2018/arvioitava-laboratorioharjoitus-linux-palvelimet-ict4tn021-6-torstai-alkukevat-2018-5-op

Tehtävä:

## LAMP
Asenna LAMP (Linux, Apache, MySQL, PHP) ja testaa sen toiminta.
## Kuormitusta
Kerää kuormitustietoja koneelta koko harjoituksen ajalta. Analysoi tiedot tiiviisti aivan
harjoituksen lopuksi.
## Sorkka ja Rauta Oy:n CRM
Tarvitsemme asiakastietokannan. Tee tietokanta, jossa on seuraavat asiakkaat:
- Kulta ja Kaivos ky
- Piilosana ry
- MetalliMake
Tee PHP-ohjelma, joka lukee nämä tietueet. Laita tämä sivu näkyviin osoitteessa
http://sorkkacrm.example.com
Voit simuloida nimipalvelun toimintaa hosts-tiedoston avulla. Tässä harjoituksessa sivulle
pääsyä ei tarvitse rajoittaa salasanalla, vaan sen tule näkyä kaikkialle nettiin.
## Rosvoja porteilla
Onko koneellemme yritetty murtautua? (Kyllä). Etsi omalta paikalliselta koneeltasi todisteet
tapauksesta, jossa koneellesi on yritetty murtatua. Analysoi tiiviisti tähän liittyvät tiedot.
## Sorkan sivut
Tee staattinen HTML5 weppisivu, jonka otsikkona (molemmat title ja h1) on "Sorkka ja Rauta Oy".
Laita sivu näkyviin osoitteeseen http://rauta.example.com/ . Voit simuloida nimipalvelun toimintaa
hosts-tiedoston avulla.
## Einarin esimerkki
Einari Vähä-aho ryhtyy koodaamaan. Tee einarille käyttäjä 'einari'.
Tee einarille esimerkkikotisivu PHP:lla ja laita se näkymään osoitteessa http://localhost/~einari/ .
Esimerkkisivun pitää tulostaa "Einari" käyttäen PHP:n print-funktiota.
[Ohje päivittyi harjoituksen edetessä]

En ollut varma, oliko tarkoitus alkaa opettelemaan täysin uusia juttuja, vai soveltaa jo opittuja asioita. Päätin kuitenkin yrittää PHP:lla ja Sqlite3:lla. Käytin harjoituksessa apuna muiden opiskelijoiden tehtäväratkaisuja. Mm. näitä:

https://jesperikuula.wordpress.com/harjoitus-7/
https://jaanilinux.art.blog/2020/03/17/h7/


Tehtävän aloitus

Päivitin paketit komennolla sudo apt-get update.
Asensin Apachen komennolla sudo apt-get install -y apache2.

Tässä vaiheessa huomasin, että tehtävänannossa pyydettiin keräämään kuormitustietoja koko harjoituksen ajan. GNOME olisi ollut ilmeisesti yksi vaihtoehto monitorointiohjelmaksi, mutta päädyin kuitenkin Muniniin, jota Miia Koskinen käytti aikoinaan omassa harjoituksessaan.

Munin – monitorointiohjelma

Komennolla apt-cache search munin pääsis katselemaan eri asennusvaihtoehtoja. ”munin – network-wide graphing framework (grapher/gatherer)” vaikutti tarpeisiini sopivimmalta, joten asensin sen komennolla sudo apt-get install munin. Komennolla firefox /var/cache/munin/www/index.html selaimessa aukesi sivu, josta eri statistiikkoja pystyi tarkastelemaan.

Munin




Apachen asentaminen

Tässä vaiheessa siirryin takaisin Apacheen. Olin jo asentanut apachen, joten avasin käynnistin palomuurin ja avasin portit komennoilla:
sudo ufw enable
sudo ufw allow 80/tcp

sudo ufw allow 22/tcp

Kirjoitin selaimen osoiteriville ”localhost”, jolloin Apachen oletussivu avautui. Korvasin Apachen oletussivun komennolla echo Apachen oletussivu korvattu|sudo tee /var/www/html/index.html ja tarkistin muutoksen toimivuuden päivittämällä selaimesta localhostin.

Seuraavaksi annoin komennot, joilla mahdollistin käyttäjäkohtaisten sivujen luonnin.

sudo a2enmod userdir
sudo systemctl restart apache2

Testatakseni käyttäjäkohtaisten sivujen toimivuutta, tein käyttäjän Xubuntu kotihakemistoon kansion public_html, ja sinne nano-komennolla tiedoston index.html. Indexin sisällöksi kirjoitin ”Sivut kayttajalle Xubuntu”. Selaimen osoiteriville kirjoitin localhost/~xubuntu, jolloin käyttäjälle luomani sivu avautui.

Tässä vaiheessa minun oli lopetettava tehtävän tekeminen. Kello oli 15:15 (UTC +2).

Jatkoin tehtävää kello 18:00 (UTC +2) tekemällä kaikki edellä mainitut toimenpiteet uudestaan


.

Sqlite3

Tietokantoja varten asensin Sqlite3:n komennolla sudo apt-get install -y sqlite3.

Käynnistin Sqlite3:n komennolla sqlite3. Tein testimielessä tietokannan alla olevan kuvan mukaisesti. Tuntui toimivan, joten siirryin PHP:n kimppuun.

Testitietokanta




PHP

Asensin PHP:n komennolla sudo apt-get -y install php libapache2-mod-php.

Tein testaamista varten virtualhostin komennolla sudoedit /etc/apache2/sites-available/phpkokeilu.conf. Tiedoston sisällöksi kirjoitin:

Laitoin oletusasetukset pois päältä, pistin phpkokeilu konffin päälle ja käynnistin apachen uusiksi komennoilla:

sudo a2dissite 000-default.conf
sudo a2ensite phpkokeilu.conf
sudo systemctl restart apache2

Tein kansiot /home/xubuntu/testi/kokeilu.com. Kansioon kokeilu.com loin tiedoston komennolla nano index.php, ja sen sisällöksi kirjoitin:

testi-php

Kävin muokkaamassa sudoeditillä hosts tiedostoa kohteessa /etc/hosts. Lisäsin sinne rivin 127.0.0.1 testi.com.

Kirjoitin selaimen osoiteriville testi.com, jolloin selain avasi php sivun näyttäen lukua 3 (1+1+1).

testi-php




Sorkka ja Rauta Oy:n CRM

Muokkasin phpkokeilu.confin seuraavanlaiseksi:

.conf -tiedosto

Restarttasin Apachen komennolla sudo systemctl restart apache2, jotta asetus tulisi voimaan.

Komennolla sudoedit /etc/hosts muokkasin hosts-tiedostoa lisäämällä sinne rivin 127.0.0.1 sorkkacerm.example.com.

Tein index.php -tiedoston seuraavanlaiseen polkuun:
/home/xubuntu/sorkkacrm/sorkkacrm.example.com/index.php

Tein siis sorkka-kansiot ennen tiedoston luomista…

index.php tiedostoon kirjoitin seuraavat rivit:

.php

Testasin sivun toimivuuden kirjoittamalla selaimen osoiteriville sorkka.example.com, jolloin php -sivu avautui.

sorkka.example.com




Sorkka tietokanta

Tein kansioon sorkka.example.com tietokannan nimeltä sorkkacrm.db käyttäen komentoja:

touch sorkkacrm.db
sqlite3 sorkkacrm.db

Olisikohan pelkkä sqlite3 sorkkacrm.db riittänyt komennoksi? Lisäsin asiakkaat tietokantaan kuvan mukaisilla komennoilla:

Muokkasin aiemmin luomaani index.html tiedostoon alla näkyvän koodin:

<?php
        $db = new SQLite3('sorkkacrm.db');
        $tablesquery = $db->query("SELECT nimi FROM Asiakkaat;");
        //$tables = $tablesquery->fetchArray(SQLITE3_ASSOC));

while ($table = $tablesquery->fetchArray(SQLITE3_ASSOC))
 {
                echo $table['nimi'].'<br />';
        }
?>

Menin selaimella osoitteeseen sorkkacrm.example.com, jolla näkyi Sorkka ja Rauta Oy:n asiakkaat.

Asiakastietokanta näkyy sivuilla.




HTML5 webbisivu

Tein index.html tiedoston polkuun /home/xubuntu/rauta/rauta.example.com/index.html.

Indexin sisällöksi kirjoitin:

<!DOCTYPE html>
<html>
<head>
<title> Sorkka ja Rauta Oy</title>
</head>
<body>
<h1>Sorkka ja Rauta Oy</h1>
</body>
</html>

Tein uuden asetustiedoston komennolla sudoedit /etc/apache2/sites-available/rauta.example.conf

<VirtualHost *:80>
        ServerName rauta.example.com
        ServerAlias www.rauta.example.com

        DocumentRoot /home/xubuntu/rauta/rauta.example.com

        <Directory /home/xubuntu/rauta/rauta.example.com>
                require all granted
        </Directory>
</VirtualHost>

Otin asetukset käyttöön komennoilla:

sudo a2ensite rauta.example.conf
sudo systemctl restart apache2

Avasin hosts -tiedoston komennolla sudoedit /etc/hosts ja lisäsin sinne rivin 127.0.0.1 rauta.example.com.

Avasin selaimella osoitteen http://rauta.example.com/, jolloin Sorkka ja Rauta Oy:n sivu avautui.

Firman sivut.




Einarin php-sivu

Kommentoin ensin komennolla sudoedit /etc/apache2/mods-available/php7.2.conf viisi viimeistä riviä pois, jotta käyttäjät voisivat käyttää php-tiedostoja.

Restarttasin sudo systemctl restart apache2.

Loin uuden käyttäjän komennolla sudo adduser einari antaen hyvän salasanan. Kirjauduin einarina sisään su – einari. Tein einarille public_html kansion ja sinne index.php -tiedoston. Tiedoston sisällöksi kirjoitin:

<?php
print"Einari"
?>

Avasin selaimella osoitteen localhost/~einari, jolloin einarin sivu avautui.

Einarin sivut.




Kuormitustietojen analysointi

Ihan koko harjoituksen ajalta en saanut kuormitustietoja, sillä aloitin harjoituksen teon kolme kertaa uudelleen. Komennolla firefox /var/cache/munin/www/index.html pystyin selaimessa tarkastelemaan tietoja. Olin tässä vaiheessa touhunnut tämän tehtävän parissa noin kymmenen tuntia, joten en kovin tarkasti kerennyt enää perehtymään Muniniin. Ei näyttänyt olevan kovinkaan kummoisia kuormituksia. CPU:ssa näkyi hienoisia piikkejä ajoittain, mikä mahdollisesti johtui ohjelmien asennuksista yms.

Munin CPU

Tehtävän tekemisen lopetin 17.3.2020 klo 0:30 (UTC +2), mutta raportoinnin viimeistelyä jatkoin vielä jonkin aikaa.

PHP ja SQL olivat minulle suhteellisen uusia juttuja, ja niiden parissa meni todella paljon aikaa. Kokeilin alkuun Mariadb:tä ja MySQL:ää, mutta jumituin niiden kanssa aina johonkin kohtaan. Hankaluuksia oli sen verran paljon, että niiden raportointiin olisi kulunut monta tuntia lisää aikaa. Apachen error.logia käytin apuna melko paljon. Lopulta sain tehtyä tehtävän SqLite3:lla. Muiden oppilaiden esimerkkiratkaisut olivat suureksi hyödyksi. Aikaa tehtävän tekemiseen meni tosiaan noin kymmenen tuntia, josta raportointiin suurin osa.



Lähteet

Vastaa

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

WordPress.com-logo

Olet kommentoimassa WordPress.com -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

Create your website with WordPress.com
Aloitus
%d bloggaajaa tykkää tästä: