Harjoitus 3, LAMP-asennus

Tehtävänä on asentaa koneelle LAMP (Linux, Apache, MySQL, PHP) ja testata sitä. Tein tehtävät Linux-livetikulla (Xubuntu 16.4). Koneena Fujitsu Lifebook AH531 i3, johon on asennettu Windows 7.

Apache2 asennus ja kotisivun testaaminen

Aluksi päivitin olemassaolevat paketit ja asensin kaikki LAMP-ohjelmat ja extrana muutaman muun, joita saattaisin tarvita, joko tässä harjoituksessa tai myöhemmissä harjoituksissa. Kirjoittamalla komentoon -y ennen intall-komentoa  asennuksen aikana ei tarvitse erikseen hyväksyä mahdollisia Yes/No valintoja, vaan y on oletuksena. Lisätietoja apt-get -komentoon löytyy antamalla komento: man apt-get.

sudo apt-get update

sudo apt-get upgrade

Kaikki ohjelmat yhdellä komennolla:

sudo apt-get -y install apache2 mysql-server mysql-client libapache2-mod-php php-mysql curl lynx ssh scrot

Koska asensin jo tässä vaiheessa MySQL:n tuli asennusvaiheessa ilmoitus tietokannan salasanan asettamisesta. Tämä salasana tarvitaan siinä vaiheessa kun halutaan tehdä tietokantoja MySQL-ohjelmistolla.

20170909_171432.jpg

20170909_171459.jpg

Tässä tuli taas todettua Linuxin-ylivoimaisuus ohjelmien asentamisessa. Koko asennusprosessi kaikkine ohjelmineen kesti noin 1,5 minuuttia, joka sisälsi myös pikaisen MySQL-salasanan keksimisen.

Suraavaksi testasin Apche2:n toimintaa antamalla komennon:

 firefox ”http://localhost”

Jolloin sain allaolevan kuvan, eli Apache asentunut oikein. Kuvan kaappasin alussa asentamallani Scrot ohjelmalla.

scrot –delay 5 (noin 5 sekunnin viive ennen kuvankaappausta)

2017-09-09-143119_1366x768_scrot.png

Seuraavaksi tehtävänä oli tehdä toimiva kotisivu. Ohjeet löytyivät kohta kohdalta Tero Karvisen kotisivuilta Aluksi annoin komennon, jolla Apache osaa hakeutua käyttäjän kotihakemistoon:

sudo a2enmod userdir

Jolloin tuli seuraava ilmoitus:

Enabling module userdir.
To activate the new configuration, you need to run:
service apache2 restart

Eli käynnistetään Apache uudelleen:

sudo service apache2 restart

Tämän jälkeen loin kansion, johon kotisivu tallennetaan.

mkdir public_html

whoami -komennolla sain näkyviin oman käyttäjänimeni ja nimen millä voin löytää kotisivuni. Suraavaksi tarkastin pääsenkö luomaani public_html -kansioon.

firefox ”http://localhost/~xubuntu/”

Ja sain näkyviin seuraavaa:

2017-09-09-150357_1366x768_scrot.png

Eli pääsin luomaani kansioon, joka on paikallisella koneella portissa 80 (http-portti), mutta koska siellä ei ole vielä näytettävää sisältöä, tulee ylläoleva näkymä. Seuraavaksi menin public_html -kansioon ja loin sinne index.html tiedoston, johon kansioon tulevat html-pyynnöt ohjautuvat ensimmäiseksi.

cd public_html

nano index.html

Jonne tein perinteisen ”Hello Kitty!” sanoman.

<!DOCTYPE html>
<html>
<head>
<title>OmaSivu</title>
<meta charset=”UTF-8″>
</head>
<body>

<h1>Hello Kitty!</h1>

</body>
</html>

Tämän jälkeen ajoin taas

firefox ”http://localhost/~xubuntu/&#8221;

2017-09-09-152047_1366x768_scrot.png

Tämän jälkeen katsoin miten sivuston avaaminen näkyy lokeissa. Annoin komennon:

tail -F /var/log/apache2/access.log

avasin toisen terminaalin, ja päivitin kotisivun.

Lokissa näkyi tapahtuma:

127.0.0.1 – – [09/Sep/2017:17:28:05 +0000] ”GET /~xubuntu/ HTTP/1.1” 200 462 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

Tässä vaiheessa jouduin turvautumaan Googlen apuun. Sivustolta Apache, keycdn ja stackowerflow löytyi ohjeita tapahtuman tulkitsemiseen.

Ensimmäisenä on clientin IP-osoite. Tässä tapauksessa näkyi koneen loopback-osoite, koska olin hakenut sivua localhost-osoitteella. Kun hain sivua korvaamalla localhostin omalla IP-osoitteellani, rivin alussa näkyi tuo IP-osoite. Seuraavassa kahdessa kohdassa on clientin yksilöivät tiedot, jos tieto on saatavissa, muuten siinä on – -. Tässä kohdassa jouduin tutustumaan tarkemmin mistä tässä on kyse (linux.fi). Tunnistaminen tapahtuu identd palvelimen avulla, joka kertoo etäkoneelle, kuka paikallinen käyttäjä käyttää etäpalvelimen palvelua. Seuraavaksi on aikalema, millon kysely on tapahtunut. Seuraavana on kyselyn tiedot mm. GET-metodi, mitä on kyselty (~xubuntu) ja mitä protokollaan on käytetty (HTTP/1.1). Seuraavana status, jonka serveri lähettää asiakkaalle (200 OK) ja tiedoston koko mikä on palautettu. Seuraavana on yksilöidyt tiedot asiakkaan selaimesta.

Seuraavaksi tein epäonnistuneen haun palvelimelle ja jätin viimeisen u:n pois:

firefox ”http://localhost/~xubunt/

Loki:

127.0.0.1 – – [09/Sep/2017:18:51:29 +0000] ”GET /~xubunt/ HTTP/1.1” 404 498 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0″

Loki antaa virheilmoituksen 404 eli sivua ei löydy.

Lisäsin public_html -kansioon index2.html tiedoston. Tämän jälkeen lisäsin alkuperäiseen index.html tiedostoon rivin, joka ohjasi automaattisesti uudelle sivulle.

<META HTTP-EQUIV=”refresh” CONTENT=”0;url=http://localhost/~xubuntu/index2.html”>

Kun päivitin oman sivun, se ohjautui uudelle sivulle ja lokiin tuli rivi:

127.0.0.1 – – [09/Sep/2017:19:49:26 +0000] ”GET /~xubuntu/index2.html HTTP/1.1” 304 178 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”

Lokista löytyy index2.html ja ilmoitus 304, eli se kertoo sivun uudelleenohjauksesta kun sivu päivitettiin. Huomasin, että jos päivitän selaimen painamalla Shiftin pohjaan painettuna, niin ilmoitus on 200. Näin tekemällä kone hakee palvelimelta viimeisimmän version sivusta.

PHP-testaus

PHP:n oli jo asentanut heti alussa. Tein Index-sivulle yksinkertaisen laskun:

<?php
	 print(2+2);
 ?>

Kun päivitin kotisivun, laskun tulosta ei tullut näkyviin, vaan kyseinen ohjelmanpätkä näkyi lähdekoodissa. Kurssin ohjeissa ja oppitunnilla mainittiin, että PHP ei ole oletuksena aktiivinen ja se pitää käydä muuttamassa aktiiviseksi.

Menin apache2 kansioon

cd /etc/apache2

ja etsin tiedostot missä on php-merkkijono (-r hakee alihakemistot, -i ei välitä merkkikoosta) Jorin jutut tai komennolla man grep lisätietoja:

grep -ri php

ja sain listauksen:

sites-available/default-ssl.conf: <FilesMatch ”\.(cgi|shtml|phtml|php)$”>
mods-available/php7.0.load:# Conflicts: php5
mods-available/php7.0.load:LoadModule php7_module /usr/lib/apache2/modules/libphp7.0.so
mods-available/php7.0.conf: SetHandler application/x-httpd-php
mods-available/php7.0.conf:<FilesMatch ”.+\.phps$”>
mods-available/php7.0.conf: SetHandler application/x-httpd-php-source
mods-available/php7.0.conf: # Deny access to raw php sources by default
mods-available/php7.0.conf:# Deny access to files without filename (e.g. ’.php’)
mods-available/php7.0.conf:# Running PHP scripts in user directories is disabled by default
mods-available/php7.0.conf:# To re-enable PHP in user directories comment the following lines
mods-available/php7.0.conf: php_admin_flag engine Off
mods-available/dir.conf: DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

Seuraavaksi muokkaamaan tiedostoa ohjeen mukaan:

sudoedit mods-available/php7.0.conf

## Edit SPe 10.9.2017
## php_admin_flag engine Off

Jonka jälkeen käynnistetään Apache uudelleen:

sudo service apache2 restart

Käynnistin kotisivun uudelleen, mutta näkymä oli samanlainen kuin aikaisemminkin. Menin public_html kansioon ja otin siellä olevat tiedostot esiin ja huomasin, että olin unohtanut muuttaa index.html tiedosto index.php tedostoksi.

mv index.html index.php

Ja tämän jälkeen kotisivu tulille. Nyt laskutoimitus onnistui ja sivun lähdekoodissa näkyi vain laskutoimituksen tulos 4. PHP-toimii!

Yritin tehdä PHP-ohjelmaa, jolla olisin ensin pyytänyt painon ja pituuden ja lähettänyt sen toiselle sivulle jossa olisi laskettu BMI, mutta koska PHP ei ole tuttu ennestään, sain aikaiseksi vain virheilmoituksia 500 lokiin, eli ohjelma kaatui:

127.0.0.1 – – [10/Sep/2017:13:04:42 +0000] ”POST /~xubuntu/bmi.php HTTP/1.1” 500 185 ”http://localhost/~xubuntu/&#8221; ”Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0

Apche2 error.logista löytyi asiaan liittyviä virheilmoituksia:

tail /var/log/apache2/error.log

PHP Parse error: syntax error, unexpected ’)’, expecting ’,’ or ’;’ in /home/xubuntu/public_html/bmi.php on line 10, referer: http://localhost/~xubuntu/

Eli virhe löytyy riviltä 10 dokumentista public_html -kansiosta tiedostosta bmi.php, jossa ”)” merkki ei ole oikein. Luulen että koodi oli muutenkin päin honkia, koska PHP-ei ollut tuttu, joten jätin pään seinään hakkaamisen tähän.

Tein javascriptillä vastaavan HTML-sivun ja se toimi mainiosti. Mallina käytin ohjelmoinnin perusteet -kurssin tehtävää.

2017-09-12-174704_1366x768_scrot.png

MySQL-testaus

Aloitin MySQL:n käytön kirjautumalla:

mysql –user=root –password

Jonka jälkeen annoin asennusvaiheessa antamani salasanan.

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.19-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the current input statement.

mysql>

Luodaan tietokanta ”henkilot” ja katsotaan mitä tietokantoja on olemassa:

mysql> CREATE DATABASE asiakkaat CHARACTER SET utf8;
Query OK, 1 row affected (0.01 sec)

mysql> SHOW DATABASES;
+——————–+
| Database |
+——————–+
| information_schema |
| asiakkaat |
| mysql |
| performance_schema |
| sys |
+——————–+
5 rows in set (0.00 sec)

Valitaan ”asiakkaat” tietokanta ja luodaan taulu:

mysql> USE asiakkaat

mysql> CREATE TABLE henkilot (id INT PRIMARY KEY AUTO_INCREMENT, Enimi TEXT, Snimi TEXT);

Ja viedään tietoa tauluun:

mysql> INSERT INTO henkilot (Enimi, Snimi) VALUES (’Esko’, ’Esimerkki’);

Ja katsotaan tietoja:

SELECT * FROM henkilot

+—-+——-+———–+
| id | Enimi | Snimi |
+—-+——-+———–+
| 1 | Esko | Esimerkki |
| 2 | Eija | Example |
| 3 | John | Doe |
+—-+——-+———–+

Tiedot ovat tallentuneet tietokantaan.

Lähteet

Tero Karvinen Linux-palvelimet kurssi ICT4TN021-5. URL: http://terokarvinen.com/2017/aikataulu-linux-palvelimet-ict4tn021-4-ti-ja-5-to-alkusyksy-2017-5-op

Apache. HTTP Server project. URL: https://httpd.apache.org/docs/2.4/logs.html

Keycdn.com. URL:https://www.keycdn.com/support/apache-access-log/

Stackoverflow. URL:https://stackoverflow.com/questions/9234699/understanding-apaches-access-log

Linux-wiki. URL:https://www.linux.fi/wiki/Identd

Jorin jutut. URL:http://people.uta.fi/~jm58660/jutut/unix/grep.html

 

Tätä dokumenttia saa kopioida ja muokata GNU General Public License (versio 2 tai uudempi) mukaisesti. http://www.gnu.org/licenses/gpl.html

 

 

 

 

 

 

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 )

w

Muodostetaan yhteyttä palveluun %s