Tehtävä osana Tero Karvisen kevään 2020 Linux-palvelimet-kurssia. Tavoitteena on tehdä vanha arvioitava labraharjoitus edeltäneiltä kursseilta.
Etsin labratehtävän keväältä 2018. Tehtävän kulku tapahtuu portaittain. Samalla seuraan palvelimen kuormitusta, josta teen yhteenvedon raportin lopussa.
Suoritusympäristönä oma sylikone Lenovo Ideapad 320s käynnistettynä Live-tikulta, josta ajetaan Linux-pohjainen käyttöympäristö Ubuntu 18.04.3.
Asenna LAMP (Linux, Apache, MySQL, PHP) ja testaa sen toiminta.
Aloitin asennukset Apache 2:sta: $
sudo apt-get update
ja sudo apt-get install apache2
. Avasin palomuurin Apachelle: $ sudo ufw allow apache
. Avasin selaimesta localhost-sivun, jolla näkyi Apache2-oletussivu. Korvasin oletussivun: $ echo ”Markuksen testisivu”|sudo tee /var/www/html/index.html.

Seuraavaksi MySQL/MariaDB asennus ja testaus. Ensin suojasin tulevan tietokannan palomuurilla: $ sudo ufw allow 22/tcp
. Hain jälleen tottumuksesta päivitykset, jonka jälkeen asensin MariaDB:n: $ sudo apt-get -y install mariadb-client mariadb-server
. Lopuksi ajoin komennon $ sudo mysql_secure_installation
, johon tein tarvittavat asetukset kuten root-salasanan sekä tietokanta-asetukset. Nyt tietokanta on valmis luotavaksi.
MariaDB [(none)]> create database asiakkaat;
MariaDB [(none)]> show databases;

Annoin asiakkaat-käyttäjälle käyttöoikeudet tietokantaan: MariaDB [(none)]> grant all on asiakkaat.* to asiakkaat@localhost identified by '*omasalasana*!';
. Tämän jälkeen exit
.
Kirjauduin tietokantaan asiakkaat-käyttäjänä: mariadb -u asiakkaat -p
. Pääsin sisään antamalla root-salasanan. Loin taulun Asiakkaat:
MariaDB [(none)]> USE asiakkaat;
MariaDB [asiakkaat]> CREATE TABLE Asiakkaat (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(1024), price FLOAT);
MariaDB [(asiakkaat)]> show tables;

Lisäsin Asiakkaat-tauluun kolme nimeä komentomuodolla MariaDB [asiakkaat]> insert into asiakkaat(name) values ("*Yrityksen nimi*");
:


Exit
Seuraavaksi PHP:n asennus ja testaus. Aloitin asennuksilla: $sudo apt-get install libapache2-mod-php
, $sudo apt-get install php-mysql
.
Laitoin käyttöoikeudet toimimaan:
$ sudo a2enmod userdir $ sudoedit /etc/apache2/mods-available/php7.0.conf

Loin kotihakemistoon public_html-kansion, jonne lisäsin index.php-tiedoston, johon lisäsin Tero Karvisen testikoodin:
echo '<?php print(2+2+"\n\n"); ?>'> index.php
Testasin ohjelmaa selaimella osoitteessa localhost/~markus/. Sivu valitettavasti näytti tyhjää. Ohjelma näkyi lähdekoodissa:

Siirryn tehtävässä eteenpäin ja testaan toistuuko ongelma.
Testasin toimisiko onnistuisiko php-ohjelma lukemaan tekemääni asiakkaat-tietokantaa. Syötin index.php-tiedostoon Tero Karvisen koodin, johon lisäsin oman tietokantani tiedot. Koitin selaimella uudestaan:

Hmm, sama virhe yhä. Jostain syystä en saa ohjelmaa ajettua PHP:lla. Koitan korjata tilanteen.
Tehtävänantoa seuraten etsin seuraavaksi lokeista todisteita palvelimen murtoyrityksistä:

Ilmeisiä murtoyrityksiä ei näkynyt lokeissa. Tämä tosin ei ollutkaan koetilanne.
"Tee staattinen HTML5 weppisivu, jonka otsikkona (molemmat title ja h1) on "Sorkka ja Rauta Oy". Laita sivu näkyviin osoitteeseen http://rauta.example.com/"
Loin käyttäjän kotihakemistoon kansion ‘examplesite’, jonne loin uuden index.html-tiedoston. Täydensin koodin Tero Karvisen HTML5-koodin pohjalta:

Seuraavaksi loin conf-tiedoston apache2/sites-available -kansioon:

Käynnistys: $ sudo a2ensite rauta.example.com.conf
,
$ sudo systemctl restart apache2
Lisäsin rauta.example.com-sivun hosts-tiedostoon:


Seuraavaksi loin Einarille oman käyttäjän sekä php-pohjaisen kotisivun:
$ sudo adduser einari
. Tämän jälkeen loin einari-käyttäjän kotihakemistoon public_html-kansion ja index.php-tiedoston:

Kokeilin tulosta selaimessa:

Valitettavasti Einarikaan ei välttynyt samalta php-ongelmalta. Ratkaisu ei ole vielä käsissäni.
Katsotaan kuormituksia. Tein kuormitustestit asennusten välissä sekä lopuksi.





Lähteet:
http://terokarvinen.com/2020/linux-palvelimet-2020-alkukevat-kurssi-ict4tn021-3010/
http://terokarvinen.com/2016/read-mysql-database-with-php-php-pdo
http://terokarvinen.com/2012/short-html5-page
https://stackoverflow.com/questions/35928184/php-in-userdir-not-working