Tag Archive | html

PHP:n käyttö nettisivuilla

Sain Työasemat ja tietoverkot -kurssilla tehtäväksi asentaa Apache-palvelindemonin sekä PHP-kirjaston kotisivujen luomista varten. Lisäksi minun piti tehdä PHP-sivu, joka tulostaa nettiselaimeen ”Hei maailma!” ja sivu, joka käyttäjän antamien tietojen perusteella laskee henkilön painoindeksin.

Apache-palvelindemoni ylläpitää palvelinta ja kommunikoi asiakasselaimien kanssa, jolloin tavallisella nettiselaimella pääsee käyttäjän määrittämälle kotisivulle IP-osoitteen avulla.
PHP tarjoaa HTML:ää laajemmat mahdollisuudet luoda mm. lomakekenttiä ja grafiikkaa sekä tietokantoja kotisivulle. Lisäksi PHP on yleensä valmiiksi tuettu eri nettiselaimissa, joten se on valmiiksi yhteensopiva asiakaskoneille.

Mikäli Apachen asennus ja käyttö tai komentokehotteen komennot tuntuvat haastavilta, olen kirjoittanut perusasioista artikkelit: https://kristerholmstrom.wordpress.com/2012/09/05/apache-2-asennus-xubuntulle/
https://kristerholmstrom.wordpress.com/2012/09/03/komentokehotteen-kaytto-asennuksessa-ja-yllapidossa/

9.9.2012

23:12 Boottaus ja Apachen asennus

aloitin käynnistämällä koneeni Xubuntu linux 12.04 -live CD:llä ja avasin terminaalin. Aluksi minun piti asentaa Apache, jotta pystyisin jakamaan PHP-kotisivun. Apache asennetaan samalla tavalla kuten muutkin ohjelmat, eli komennolla

$ sudo apt-get update
$ sudo apt-get install apache2

23:23 Apachen moduulin muokkaus
Seuraavaksi muutin apache2-moduulin hakemaan oletusnettisivutiedostoa käyttäjähakemistosta. Ensin kuitenkin menin terminaalilla kohteeseen /home/xubuntu/ ja loin uuden kansion nimeltä public_html. Seuraavaksi loin HTML-tiedoston komennolla

$ nano index.html

Huomaa että tiedoston nimi tulee olla index, jotta Apache osaa sitä etsiä oletuksena.
Apache-moduuli muutetaan komennolla

$ sudo a2enmod userdir

seuraavaksi apache piti uudelleenkäynnistää, mikä tapahtuu komennolla

$ sudo service apache2 restart

23:30 Apachen testaaminen

tässä vaiheessa oli hyvä kokeilla, miten apache toimi, joten toimin asiakkaana ja käynnistin nettiselaimen, jonka osoiteriville kirjoitin IP-osoitteeni sekä käyttäjäkansion nimen.
IP-osoite selviää komennolla

$ ip addr

osoitteeni on siis http://192.168.1.67/~xubuntu/
kyseisestä osoitteesta tulostui index.html-tiedostoni tieto kun syötin osoitteen nettiselaimeeni.
23:35
PHP-tulkki asennetaan lataamalla Apache2 erillinen mod-kirjasto, joten asennus tapahtui hieman eri tavalla kuin muissa ohjelmissa. Käytin komentoa

$ sudo apt-get install libapache2-mod-php5

Tämän jälkeen kävin muuttamassa php5-asennuslogia, jotta tulkki toimisi oikein. Käytin komentoa

$ sudoedit /etc/apache2/mods-enabled/php5.conf

sen jälkeen ”kommentoin ulos” kaikki rivit välillä <ifModule mod_userdir.c> … </ifModule>, eli lisäsin rivien eteen #-merkin, jolloin rivit muuttuvat kommenteiksi, eikä tulkki silloin huomio rivejä lainkaan.

23:46 PHP-tiedoston luominen

Seuraavaksi index.html-tiedosto piti muuttaa PHP:ta tukevaksi tiedostoksi. Tämä onnistui siirtymällä kansioon /home/xubuntu/public_html/ ja antamalla komennon

$ mv index.html index.php

nyt tiedosto pystyi sisältämään PHP-koodia ja Apache tulkitsemaan sitä.

23:52 PHP-koodi

PHP-koodin selventämiseen tässä artikkelissa menisi paljon aikaa ja tilaa, enkä välttämättä saisi annettua kovinkaan syvällistä kuvaa ohjelmoinnista, joten annan linkin, jonka kautta voi tutustua PHP-ohjelmointiin tarkemmin, erityisesti HTML-pohjaisena:

http://www.php.net/manual/en/tutorial.forms.php

Muokkasin seuraavaksi index.php:ta niin, että se tulosti lauseen ”Hei Maailma!”

kyseinen lause tulostuu kirjoittamalla kotisivutiedostoon <? PHP print(”Hei Maailma!”); ?>

En saanut painoindeksilaskuria vielä toimimaan, mutta lisään koodin tähän artikkeliin kun saan sivun näyttämään tuloksen oikein.

lähde: http://terokarvinen.com/2012/aikataulu-–-tyoasemat-ja-tietoverkot-ict1tn002-33-syksylla-2012

GNU Free Documentation License

Version 1.3, 3 November 2008

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/&gt;

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Mainokset

Apache 2 asennus xubuntulle

Sain kotitehtäväksi asentaa Apache 2 -verkkopalvelimen kotikoneelleni sekä testata yhteydenottoa “Demoniin” (verkkopalvelua tarjoava ohjelma, joka esittää esimerkiksi omat kotisivut asiakaskoneelle heti pyynnön saavuttua. Tässä tapauksessa demoni on Apache). Yhteydenotto suoritetaan silmukoimalla, eli verkkokortista luodaan virtuaalinen haamuversio joka sitten toimii asiakaskoneena. Todellisuudessa datayhteys tekee vain lenkin verkkokortin kautta.

Lisäksi minun tuli tehdä normaali sivunlataus, sekä tahallisesti suoritettu “sivua ei löydy” -lataus, jotta molemmista tulee merkinnät lokiin. Nämä merkinnät minun tuli sitten löytää Apachen lokihakemistosta /var/log/Apache2/.

Lisäksi minun tuli testata Telnet-yhteyden muodostamista Demoniin ja kokeilla mitä tapahtuu.

Aloitetaan

4.9.2012

21:01 Apache-asennus

Suoritin Apache2 asennuksen komentokehotteen kautta samalla tavalla kuin minkä tahansa muunkin ohjelman asennuksen, eli komennolla

$ sudo apt-get install apache2

21:05 Silmukointi

kun apache2 asentui koneelleni, halusin testata sitä silmukoinnilla, eli avataan nettiselain (esim. Firefox) ja kirjoitetaan sinne osoite http://localhost, terminaalista pääsee suoraan komennolla

$ firefox “http://localhost

Seuraavan tekstin pitäisi ilmestyä mikäli kaikki on kunnossa:

It works!

This is the default web page for this server.

The web server software is running but no content has been added, yet.

Selaimellani kyseinen teksti ilmestyi eli kaikki kunnossa ja asennus onnistui!

21:10 IP-osoitteen selvittäminen

Seuraavaksi halusin tietää demonin IP-osoitteen, eli osoitteen, jolla joku muu kone pystyy vierailemaan palvelimellani. Se selviää komennolla

$ ip addr

komento toi kolme eri yhteyttä, jotka on kytkettynä koneeseeni, eli

  1. lo – tarkoittaa silmukointia, eli tämän kautta verkkokortti ottaa yhteyttä omaan koneeseen
  2. eth0 – ethernet-paikka 0 eli modeemin ja koneen välille tuleva ethernet-kaapeli
  3. wlan0 – langaton verkko

itselläni ainoastaan wlan0 antoi toimivan IP-osoitteen kohdassa inet

Ote terminaalista:

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000

link/ether c4:17:fe:82:39:cd brd ff:ff:ff:ff:ff:ff

inet XXX.XXX.X.XX/24 brd 192.168.1.255 scope global wlan0

inet6 fe80::c617:feff:fe82:39cd/64 scope link

valid_lft forever preferred_lft forever

tässä tapauksessa oman koneeni apachen IP-osoite on XXX.XXX.X.XX.

IP-osoitteen voi testata selaimella samaan tapaan kuin aiemmin testasin localhost-osoitetta syöttämällä osoitteen muodossa http://XXX.XXX.X.XX/

21:25 Moduulin käyttöönotto

seuraavaksi halusin luoda pienen testisivun joka näkyisi selaimella.

Ensimmäiseksi pitää käynnistää apache2:n moduuli, joka hakee käyttäjähakemistosta oletussivua muodossa index.html esim. /home/xubuntu/public_html/index.html

loin public_html -kansion menemällä ensin home-kansioon komennolla

$ cd

seuraavaksi loin kansion komennolla

$ mkdir public_html

käynnistin vielä moduulin komennolla

$ sudo a2enmod userdir
$ sudo /etc/init.d/apache2 restart

21:31 Kotisivun avaaminen selaimella

kokeilin public_html – kansion selaamista selaimella osoitteessa http://XXX.XXX.X.XX/~(käyttäjä)/ ilman sulkuja.

Ilmoitukseksi tuli

Not Found error 404

tämä meni oikein sillä moduuli oletuksena etsi avattavaa index.html -tiedostoa, jota ei ole vielä luotu. Näin sain samalla kirjattua Apache2-lokiin epäonnistuneen latauksen, kuten tehtävänannossa pyydettiin.

21:39 Index.html tiedoston luominen

loin index.html -tiedoston, joka ajetaan moduulin kautta.

Yksinkertainen html-sivu voi olla testimielessä muotoa

<html>

<body>

<p> moi </p>

</body>

</html>

nyt selain näytti sivulla http://XXX.XXX.X.XX/~(käyttäjä)/ sivun, jossa luki

moi

samalla lokiin kirjattiin onnistunut sivun avaus, kuten tehtävänannossa haluttiin.

21:51 Apache-loki

avaan Apachen lokin tutkimista varten menemällä kansioon

$ cd /var/log/apache2/

avaan access.log -tiedoston nanolla:

$ nano access.log

Lokissa löytyy yhteydenottotiedot asiakkaalta, joten poimin kaksi viimeisintä riviä:

192.168.1.67 – – [05/Sep/2012:05:46:29 +0300] ”GET /krister/ HTTP/1.1” 404 501 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0”

192.168.1.67 – – [05/Sep/2012:05:47:51 +0300] ”GET /~krister/ HTTP/1.1” 200 387 ”-” ”Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0”

ensimmäisellä rivillä löytyi numero 404, mikä tarkoittaa että moduulilta on pyydetty username-kansiosta index.html nimistä sivua, mutta sitä ei ole löytynyt.

Toisella rivillä löytyi samasta kohdasta numero 200 mikä tarkoittaa että pyydetty sivu löytyi ja avautui onnistuneesti

molemmilla riveillä ilmoitusnumeron edessä oleva 1.1 viittasi siihen että sivua haettiin nimenomaan html 1.1 muodossa. Sitä aiempi päiväys kertoo tarkalleen milloin sivua on yritetty hakea ja lopusta löytyvä Firefox/11.0 kertoi selaimen tiedot aina versionumerointiin asti.

22.06 Telnet-yhteys

Otan yhteyden demoniin käyttäen telnet-yhteyttä komennolla

$ telnet localhost 80

kirjoitin kokeilumielessä sanan “moi”, tulos oli:

<!DOCTYPE HTML PUBLIC ”-//IETF//DTD HTML 2.0//EN”>

<html><head>

<title>501 Method Not Implemented</title>

</head><body>

<h1>Method Not Implemented</h1>

<p>moi to /index.html not supported.<br />

</p>

<hr>

<address>Apache/2.2.22 (Ubuntu) Server at 127.0.1.1 Port 80</address>

</body></html>

Connection closed by foreign host.

Telnet-yhteydellä yritin siis kirjoittaa komentoja suoraan index.html-sivulle, joka ei sitä lainkaan tukenut, näinollen isäntä eli demoni sulki yhteyden.

Lähde:

http://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4

 

GNU Free Documentation License

Version 1.3, 3 November 2008

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.