LAMP

LAMP koostuu sanoista Linux,Apache,MySQL ja PHP ja näitä käytetään maailmanlaajuisesti. Artikkeli on tehty kahtena eri päivänä,tarkemmat ajankohdat löytyvät artikkeleiden alusta.

LAMP:n asennus

Ajankohta 6.9.2012 klo 13.30-15.00

Asensin linuxin jo aikaisemmin ja sen jälkeen Apache2. Poistin Apache2 ensin koneelta sudo apt-get purge apache2 -komennolla, jotta saisin kerrata sen asennuksen sillä onhan kertaus opintojen äiti. Purge-komento poistaa ohjelman lisäksi myös ohjelman asetukset, joten pääsin asentamaan Apache2:n ns. puhtaaltapöydältä.

$ sudo apt-get update # pakettivarastojen päivitys
$ sudo apt-get install apache2

Sitten tein

$ sudo a2enmod userdir
$ sudo service apache2 restart
$ mkdir public_html
$ cd public_html
~:public_html$ nano index.html

Kirjoitin “Hei maailma” ja tallensin tiedoston. Kokeilin selaimen kautta http://localhost/ ,ja hyvin toimi kotisivu. Seuraavaksi asensin PHP:n.

PHP:n asennus

$ sudo apt-get install libapache2-mob-php5
$ sudoedit /etc/apache2/mods-enabled/php5.conf # Kommentoi ulos ohjeen mukaisesti
 </FilesMatch>
  # Commented out 4 lines Thu,06.09.12 jokela.anttiville
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    #<IfModule mod_userdir.c>
    #    <Directory /home/*/public_html>
    #        php_admin_value engine Off
    #    </Directory>
    #</IfModule>
</IfModule>

$ sudo service apache restart # Aina kun tehdään muutoksia asetuksiin
                                niin pitää käynnistää ohjelma uudestaan.

Seuraavaksi tein nettisivun PHP:tä käyttäen. Aloitin nimeämällä index.html uudestaan .php muotoon.

$ cd public_html
~:public_html$ mv index.html index.php

Nettisivujen teko PHP:tä käyttäen

Nettisivuissa on kaksi lomaketta, nimi ja ikä. Ensimmäinen sivu kysyy kohdat ja seuraava sivu näyttää täytetyt kohdat ja tervehtii käyttäjää.

index.php

<!DOCTYPE HTML>  #Nämä ovat kommentteja,eivät vaikuta sivun toimintaan
<html><meta charset="utf-8" > #utf-8 on merkistökoodi,åäö-toimii
     <head> <title>Hei! </title></head> #Otsikko joka lukee selainpalkissa
  <body>
        <h1>Hyvää päivää! </h1> #h1= otsikko,lihavoitu ja isommalla fontilla
        <p>Täyttäisittekö ystävällisesti seuraavat kohdat: </p> # <p> </p> väliin tulee teksti
         <form action="action.php" method="post">               # ,näillä myös saadaan uusi rivi 
         <p>Nimenne: <input type="text" name="name" /></p>      # tehtyä. <form> </form> väliin lomakkeet.
         <p>Ikänne: <input type="text" name="age" /> vuotta</p> # "form action"-kohdassa on määritelty 
         <p><input type="submit" /></p>                         # sivu mikä näytetään klikkauksen jälkeen.
         </form>
  </body>
</html>

action.php

<!DOCTYPE HTML>
<html><meta charset="utf-8"> # merkistökoodaus
        <head><title>Hei! </title></head> # selainpalkin teksti
  <body>                                  #<p> </p> välissä teksti, joka näytetään.
        <p>Hyvää päivää <?php echo htmlspecialchars($_POST['name']); ?>. </p>
        <p>Olette <?php echo (int)$_POST['age']; ?> vuotta vanha. </p>
  </body>
</html>

Painoindeksilaskurin tekeminen

Ajankohta 9.9.2012 klo 16.30-17.45

Painoindeksilaskurin tekeminen olikin sitten jo haastavampi juttu. Tarkoituksenani oli tehdä sivu 1 ,jossa kysytään nimi,pituus ja paino. Ja sivu 2 joka näyttää painoindeksin ja kertoo onko ali-, normaali- vai ylipainoinen.

Ensimmäisen sivun lomakkeet saadaan tehtyä edellisen esimerkin index.php -sivun avulla, mutta toisen sivun laskukaavakkeen tuloksen näyttämiseen ja painoindeksin tulkitseminen oli vaikeampi

Ensimmäiselle sivulle lisäsin vain paino ja pituus -lomakkeet,muuten sivu on aivan samanlainen.

<!DOCTYPE HTML>
<html><meta charset="utf-8" >
     <head> <title>Hei! </title></head>
  <body>
        <h1>Hyvää päivää! </h1>
        <p>Saadaksenne tietää painoindeksinne täyttäkää seuraavat tiedot:: </p>

         <form action="action.php" method="post">
         <p>Nimenne: <input type="text" name="name" /></p>
         <p>Ikänne: <input type="text" name="age" /> vuotta</p>
        <p>Pituutenne: <input type="text" name="pituus" /> cm</p>
        <p>Painonne: <input type="text" name="paino" /> kg </p>
<p><input type="submit" /></p>
        </form>
  </body>
</html>

Toisen sivun tekemiseen käyttiin apuna Roger Douglass:n PHP BMI Calculator -koodia. Sivulla annetaan lupa käyttää ja muokata koodia: “…If anyone would like to modify it and give it fancy bells and whistles, be my guest.” Syy minkä takia jouduin etsimään apua koodin muodostamiseen oli laskukaavojen käyttö ja edellisen sivun lomakkeiden tietojen käyttö laskua laskettaessa.

<!DOCTYPE HTML>
<?php
$paino = $_POST['paino'];
$pituus = $_POST['pituus'];
$painoindeksi = $paino / (($pituus / 100) * ($pituus / 100));
?>

<html><meta charset="utf-8">
        <head><title>Hei! </title></head>
  <body>
        <h1>Hyvää päivää <?php echo htmlspecialchars($_POST['name']); ?>. </h1>
        <p>Olette <?php echo (int)$_POST['age']; ?> vuotta vanha </p>
        <p>ja teidän painoindeksinne on <?php echo round ($painoindeksi, 2); ?> </p>
<?php
// alipaino = <18.5, normaalipainoinen = 18.5-24,9 , ylipainoinen = 25> //
if ($painoindeksi <= 18.5) {
echo "Saat syödä hymyhuulilla lisää ruokaa! ";
}elseif (($painoindeksi > 18.5) && ($painoindeksi <= 24.9)){
echo "Hienoa! Jatka terveellistä elämääsi samaan malliin!" ;
}elseif (($painoindeksi > 24.9 && $painoindeksi <=29.9)){
echo "Olet lievästi ylipainoinen,yritä syödä terveellisemmin." ;
}else{
echo "Suosittelen tarkastamaan ruokavaliota,ja jos tarvetta on niin rohkeasti ulos. Sitä ei ikinä tiedät kenet lenkillä ollessa tapaa.";}?>
        <p>Hyvää päivänjatkoa ! </p>

</body>
</html>

Ja valmis sivu näytti sitten tältä. Jos laskimen julkistaisi kaikille nähtäväksi, kannattaisi vaihtaa myös fonttien tyyliä.

MySQL

Ajankohta 9.9.2012 klo 18-19.30

MySQL:n kanssa työskentely ei onnistunut niin kuin toivoin vaan päättyi aina samaan virheilmoitukseen mihin löytänyt suoraa vastausta internetistä. Mutta asennus ja sisäänkirjautuminen onnistui loistavasti.

$ sudo apt-get update 
$ sudo apt-get install mysql-server mysql-client

# Asennuksen aikana hyväksyin levytila muutoksen ja asennuksen puole-
  ssa välissä kysyttiin käytetäänkö apache2-ohjelmaa MySQL:n kanssa
  johon vastasin myös myöntävästi. Asennuksessa kysyttiin myös root-
  käyttäjälle salasanaa. Salasana ei saa olla sama kuin tietokoneen 
    pääkäyttäjän salasana.

MySQL:n käynnistäminen ja sisäänkirjautuminen root-tunnuksilla:

$ sudo mysql -u root -p    # -u ,tarkoittaa käyttäjää (user)
                           # -p ,että salasanaa kysytään,eikä kirjoi-
                             teta näkyvästi.

Ja sitten ongelma mihin törmäsin. Vaikutti aivan kuin olisi ollut jotkut asetukset väärin, mutta en muistanut mistä niitä lähtä etsimään. Error.log -tiedostossa ei ollut viitteitä ongelmista, joka häiritsi minua erittäin paljon.

You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near

Tämä tuli aivan sama mitä tein, CREATE DATABASE, CREATE TABLE,GRANT ALL. Mutta onneksi voin esittää ainakin yhden kysymyksen opettajalle.

Lähteet:

Tero Karvinen, Työasemat ja tietoverkot -kurssi – http://terokarvinen.com/2012/aikataulu-%E2%80%93-tyoasemat-ja-tietoverkot-ict1tn002-33-syksylla-2012

Tero Karvinen, Build web interface to database lamp Linux Apache MySQL PHP http://terokarvinen.com/2007/build-web-interface-to-database-lamp-linux-apache-mysql-php-4#mysql

Roger Douglass, PHP BIM Calcular – http://www.dzone.com/snippets/php-bmi-calculator

– Jokela Antti-Ville

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