Linux palvelimet: Apache-weppipalvelin ja LAMP kehitysalusta

Tehtävä j)

Asennamme ja testaamme koko LAMP pinon. Aloitamme lähtöasetelmasta, jossa uusi Linux (Xubuntu 16.04 LTS) käyttöjärjestelmä on juuri asennettu koneelle. Ensimmäinen vaihe on luonnollisesti pitää huolta, että Linux on ajan tasalle ja päivitetty, eli:

sudo apt-get update
sudo apt-get upgrade

Seuraavaksi asennamme ja testaamme Apache palvelimen. Apache löytyy paketinhallinnasta nimellä apache2 ja asennuksen jälkeen testaamme löytyykö Apache palvelin locahost osoitteesta. Testaamme myös localhostin pelkällä ip osoitteella.

sudo apt-get install apache2
firefox "http://localhost"
firefox "http://xxx.xxx.xxx.xxx"

On myös hyvä idea korvata Apachen aloitussivu jollakin muulla, jotta se ei herätä huomiota hakukoneissa uusia servereitä etsittäessä. Lisää esimerkiksi jotakin tekstiä html koodin tilalle.

sudo nano /var/www/html/index.html

Seuraavaksi luomme kansion verkkosivuille joita Apache hostaa. Luomme samalla jonkinlaisen index sivun jolla voimme myöhemmin testata muita LAMP osia.

cd
mkdir public_html
cd public_html
nano index.html

Koodi index.html sivuille:
https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/index.php

Seuraavaksi teemme vielä lopulliset testit Apachen toiminnasta ennen kuin siirrymme eteenpäin. Ennen niitä meidän kuitenkin tulee asettaa public_html userdiriksi ja uudelleenkäynnistää Apache.

sudo a2enmod userdir
sudo service apache2 restart
#vanhemmissa linux distroissa sinun mahdollisesti täytyy käyttää edellisen rivin
#sijaan koodia: sudo /etc/init.d/apache2 restart
whoami
firefox "http://localhost/~linuxkäyttajanimi

Jos edellisten komentojen jälkeen firefoxiin aukeaa luomamme Hello World verkkosivu Apache toimii!

Seuraavaksi asennamme paketinhallinnasta MySQL serverin ja clientin ja avaamme mysql clientin:

cd
sudo apt-get install mysql-server mysql-client
mysql -u root -p

Asennuksen aikana terminaaliisi aukeaa sininen ikkuna, johon mysql pyytää sinua luomaa root tason salasanan. Tämä salasana ei saa olla sama kuin Linux salasanasi ja sen tulee olla vaikea. MySQL kysyy tätä salasanaa myös clienttiin sisään kirjautuessa.
Kun olet päässyt sisälle mysql clienttiin, on aika luoda ensimmäinen testitietokanta. Annamme samalla käyttäjänimellesi käyttöoikeudet tietokantaan. Muista antaa taas uudelle käyttäjälle uniikki ja vaikea salasana.

CREATE DATABASE testi CHARACTER SET utf8;
SHOW DATABASES;
GRANT ALL ON testi.* TO käyttäjänimi@localhost IDENTIFIED BY 'tähän_tulee_salasana';

Seuraavaksi testaamme että luomamme tietokanta toimii oikein:

exit
mysql -u käyttäjänimi -p
CREATE DATABASE testitestitesti;

Mikäli saat tietokannan luontiyrityksestä ‘Access Denied’ viestin, niin kaikki toimii oikein. Tämän jälkeen syötämme jotakin dataa testitietokantaan ja suljemme mysql clientin:

USE testi;
CREATE TABLE testi (id INT AUTO_INCREMENT PRIMARY KEY, teksti VARCHAR(255), numero INT);
SHOW TABLES;
INSERT INTO testi (teksti, numero) VALUES ("Harjoitus", 12345);
INSERT INTO testi (teksti, numero) VALUES ("Kokeilu", 23456);
SELECT * FROM testi;
exit

Lopuksi vielä tallennamme muistiin käyttäjänimesi ja salasanasi siten, että et tarvitse niitä enää jatkossa mysql:n kanssa, vaan sisään kirjautumiseen riittää pelkkä ‘mysql’ komento:


nano .my.cnf
#Kirjoita tiedostoon seuraavat rivit:
[client]
user="käyttäjänimi"
password="käyttäjälle asettamasi salasana"
database="testi"

Lopuksi asennamme PHP:n paketinhallinnasa ja samalla luomme ja testaamme php koodia apachepalvelimellamme:

cd
sudo apt-get install php7.0-cli
nano public_html/test1.php
#Hae täältä koodi:
#https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/test1.php
#tallennuksen ja sulkemisen jälkeen konsoliin:
sudo service apache2 restart
firefox "http://localhost/~käyttäjänimi/test1.php"

Valitettavasti PHP koodimme ei kuitenkaan vieläkään toimi. Meidän on säädettävä Apachen asetuksissa PHP käyttöön.

sudoedit /etc/apache2/mods-available/php7.0.conf
#Kommentoi pois rivit conf tiedoston ohjeen mukaan
sudo service apache2 restart
firefox "http://localhost/~käyttäjänimi/test1.php"

Lopputuloksena sivulla tulisi lukea ‘Hello World! 50’ ja täten LAMP pinomme on valmiina verkkosivujen tekoa varten. Lopuksi lisäämme verkkosivuille koodia, jolla voimme testata kerralla kokonaista pinoa.
Luo nanolla tiedosto test2 ja lisää sinne koodia:
https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/test2.php
Jos kaikki php-koodin lisäämisen jälkeen toimii yhä niin kuin pitääkin (muista uudelleenkäynnistää apache!), niin: ONNITTELUT! Olet juuri asentanut LAMP pinon jolla valtaosa internetistä on rakennettu!


Tehtävä b)

Aika käydä läpi apachen logeja. Tarkastamme onnistuneen sivun avauksen logit:

cd /var/log/apache2
firefox "http://localhost/~käyttäjänimi/
tail access.log

Tuloksena saamme rivit:

127.0.0.1 - - [04/Feb/2018:14:48:32 +0200] "GET /~topiniskala/ HTTP/1.1" 200 397 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0"
127.0.0.1 - - [04/Feb/2018:14:48:32 +0200] "GET /favicon.ico HTTP/1.1" 404 500 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0"

Molemmat lokirivit alkavat Localhost IP osoitteella, jota seuraa päivämäärä ja kellonaika. Seuraavaksi loki käy läpi suoritetun kommennon localhost osoitteessa, eli ensimmäisessä lokirivissä GET pyyntö osoitteeseen topiniskala/. Lopputuloksena saamme koodin 200, joka tarkoittaa, että prosessi suoritettiin onnistuneesti. Toiselle numerolle (397) en löytänyt selostusta. Lopussa lokiin listataan selain, selaimen gecko koodi pohja ja käyttöjärjestelmä, joilla prosessi suoritettiin.
Toisella rivillä meillä on kuitenkin 404 virhe, eli favicon.ico ei löytynyt palvelimelta (404), mikä aiheutti geneerisen virheviestin (500).


Tehtävä c)

Seuraavaksi testaamme virhettä PHP koodissa. Ensiksi muutamme yhden $ alkuisista komennoista joksikin sanaksi, jota php koodi ei tunnista. Muutin “$pdoStatement->execute();” rivin execute sanan tilalle ‘SUORITA!!!”.

cd
sudo service apache2 restart
firefox "http://localhost/~käyttäjänimi"
cd /var/log/apache2
tail error.log

Tuloksena saamme rivin:

[Sun Feb 04 15:15:12.177182 2018] [:error] [pid 27526] [client 127.0.0.1:52294] PHP Parse error:  syntax error, unexpected '!' in /home/topiniskala/public_html/index.php on line 21

Lokirivi alkaa taas päivämäärällä, jota seuraa :error ilmoitus ja pid (process identification code) koodi 27526. Seuraavaksi loki kertoo clientin, joka on localhostin 127.0.0.1. Seuraavaksi pääsemme käsittelemään itse erroria, joka lokissa ilmoitetaan PHP Parse syntaksivirheenä, jonka aiheutti “!” merkki index.php tiedostossa rivillä 21.


Tehtävä f)

PHP laskin:

Luo public_html kansioon uusi calc.php tiedosto ja lisää sinne koodi:
https://github.com/TopiNiskala/Linux-Palvelimet/blob/master/calc.php

Seuraavaksi:

sudo service apache2 restart
firefox "http://localhost/~käyttäjänimi/calc.php"

LINKIT:
Tehtävänannot

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s