Viikko 3, Apache & MySQL & PHP

Terve!

Tällä kertaa tutkitaan apachen maailmaa muutamilla testeillä esim. käyttäjien kotihakemistot sekä php & mysql komennot webbi-sivulla.

Minulla on asennettuna Ubuntu 16.04.3 (Server-amd64) DigitalOceanilta, joka on palveluntarjoaja miltä saa erinlaisia servereitä vuokrattua tiettyyn hintaan. Ensiviikolla käydään läpi vähän tätä palvelua.

Tässä tehtävässä voidaan käyttää myös ihan Xubuntua(xubuntu-16.04.3-desktop-amd64.iso) millä ollaan muutkin harjoitukset tehty.

Mennään tämän viikon tehtäviin, löytyvät täältä Terokarvinen.com – Linux palvelimet (H3)

 

Aloitus

Tämä vuokrattu palvelin kun on tyhjä, eli pelkkä root käyttäjä on vain vaihtoehtona. Kirjaudutaan rootilla serverille ja vaihdetaan salasana sekä luodaan alikäyttäjä järjestelmään. Tästä tulee paljon inffoa ensiviikolla! joten en rupea kaikkia näitä komentoja kirjaamaan ylös tänne vielä.

A – Tehtävän tarkoituksena asentaa apache ja laittaa käyttäjien kotisivut näkymään (http://example.com/~jjekku) osoitteessa.

Ensimmäiseksi katsotaan onko apache2 jo asennettu valmiiksi. Tämän voi tarkistaa kirjoittamalla selaimeen osoitteeksi: localhost tai 127.0.0.1 , jos ei mitään näy tai selain sanoo, että sivustoon ei saada yhteyttä, ei apachea ole asennettu.

Ensimmäiseksi aloitetaan ajamalla komento: sudo apt-get update
Jotta saadaan viimeisimmät paketit tarkistettua.

Asennetaan apache2 kirjoittamalla komento: sudo apt-get install -y apache2
-y antaa tuon komennon automaattisesti valita kyllä, siihen kohtaan missä asennustiedosto pyytää yes/no tilankäyttöön levyltä.

Asennuksen jälkeen voidaan päivittää sivu / avata taas localhost selaimesta ja nähdään, että apachen aloitussivu on näkyvissä!

Ihan ensimmäiseksi kannattaa tuo apachen aloitussivu ottaa pois näkyvistä, eli kirjoitetaan siihen päälle vaikka pelkkä “Moi”.
Navigoidaan apachen html kansioon komennolla: cd /var/www/html
Tämän kansion sisällön voi tarkistaa “ls” komennolla, ei pitäisi näkyä kuin index.html tiedosto.
Muokataan tuota tiedostoa komennolla: sudo nano index.html ja tyhjennetään sisältö. Lisätään tuonne pelkkä “Moi”. Tämän jälkeen tallennetaan tiedosto painamalla
“ctrl + x” -> “y” -> “enter” ja tarkistetaan localhost sivusto.

Jos siellä näkyy pelkkä “Moi”, olet onnistunut ensimmäisessä kohdassa!
pelkka-moi-index

Nyt meidän täytyy katsoa näkyykö käyttäjän oma hakemisto selaimessa.

Voidaan kokeilla näkyykö käyttäjän omat kotisivut kirjoittamalla osoitteen perään /~user esim. localhost/~jjekku & 127.0.0.1/~jjekku & example.com/~jjekku

Ei taida näkyä, apachessa on oma asetus millä saadaan nämä kotihakemistot toimimaan.
Kirjoitetaan terminaaliin: sudo a2enmod userdir
Tämä komento antaa luvan apachen näyttämään käyttäjien omat kotihakemistot.
Käynnistetään Apache2.service uudelleen ennen jatkamista
komennolla: sudo systemctl restart apache2.service

Nyt jos navigoidaan tuohon osoitteeseen: localhost/~jjekku tulee eri virhe kuin 404? Taitaa olla 403 kyseessä? Ei ole pääsyä tutkimaan osoitetta /~jjekku/ tällä serverillä.

error-ei-kotihakemistoa

Luodaan kansio public_html tämän käyttäjän alle.
Ensiksi mennään käyttäjän kotihakemistoon komennolla: “cd”
Tämän jälkeen annetaan komento: “mkdir public_html” (luodaan kansio)
Mennään public_html kansioon: “cd public_html”
Tässä vaiheessa voidaan päivittää selaimessa sivu ja jokin pitäisi olla muuttunut.

Kotihakemistoluotu

Kuvassa nähdään Index of /~jjekku, eli nyt käyttäjän omia sivuja on mahdollista katsoa

Luodaan tänne tiedosto index.html
Komennolla: nano index.html voidaan aloittaa tämän tekemisen.
Kirjoitin kuvassa olevan testisivun. Tällä testataan, että html koodi ja ääkköset toimii.

Kotihakemisto-index

Jos pääsit tänne asti sait A tehtävän onnistuneesti tehtyä! Hyvä!

B – Tehtävän tarkoituksena on surffailla sivustolla ja etsiä lokista esimerkki onnistuneesta sivulatauksesta(200) ja epäonnistuneesta(404)

 

404-200

Kirjoitin firefoxiin osoitteen localhost/~jjekku ja sain tämän rivin näkyviin
Ensimmäisenä rivillä on 404 error missä näkyy että

84.231.8.249 – – [03/Feb/2018:13:57:24 +0000] “GET /~jjekku/ HTTP/1.1” 404 509 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/200100101 Firefox/58.0”

Ensimmäisenä näkyy käyttäjän ip osoite, sen jälkeen päivämäärä ja aika sekä aikavyöhyke. Tämän jälkeen mitä on yritetty hakea ja annettu virhekoodi 404, tämmöistä sivua ei ole.
509 koodista en tiedä mitä tarkoittaa? Ainakaan se ei ole bandwidth limit.
Sitten näkyy millä sovelluksella ollaan kokeiltu tätä osoitetta ja minkälaisella tietokoneella.
X11 – en ole varma mihin tämä viittaa.
Ubuntu; linux x86_64 – Käyttöjärjestelmä Ubuntu linux 64bit
rv:58.0 – firefoxin software versio
Gecko/200100101 – Firefoxin layout engine nimi sekä versio
Firefox/58.0 – lopuksi vielä firefoxin software nimi sekä versio uudelleen

Seuraavalla rivillä on 200. Kirjoitin firefoxiin osoitteen localhost/ ja sain tämän rivin näkyviin.

84.231.8.249 – – [03/Feb/2018:13:58:37 +0000] “GET / HTTP/1.1” 200 285 “-” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/200100101 Firefox/58.0”

Muuta eroa tässä rivissä ylempään ei ole kuin 200 285 sekä aika on + 1min 13sec

200 = OK! Sivusto on käytössä
285 = Ei hajua.

 

C – Tehtävän tarkoituksena on tehdä virhe palvelimella ajettavaan koodiin (php) sekä etsiä tämä virhe lokista ja analysoida se.

Jotta voitaisiin ajaa php scriptejä tai mysql komentoja webbi-sivulta, täytyy tähän asentaa moduuli apacheen.
Asennetaan php sekä mysql + moduulit komennolla:
sudo apt-get install -y libapache2-mod-php mysql-client mysql-server php-mysql
Tarvitsemme mysql:ää myöhemmin tässä harjoituksessa.

Tämäkään ei vielä riitä siihe että voitaisiin kotihakemistossa suorittaa php scriptejä, meidän täytyy konfiguroida apache2:n php moduulia. Käydään muokkaamassa tätä komennolla: sudoedit /etc/apache2/mods-available/php7.0.conf
php-conf
Konfiguroidaan/kommentoidaan nämä kohdat pois käytöstä (Katso kuva) ja tallennetaan “ctrl+x” -> “y” -> “enter”. Käynnistetään vielä apache2.service uudelleen.
Komento uudelleenkäynnistykseen: sudo systemctl restart apache2.service

Muokataan index.html tiedostoa siten että sillä voidaan suorittaa php scriptejä.
Ensiksi mennää kotihakemistoon komennolla: cd
Tämän jälkeen: cd public_html ja tarkistetaan kansion sisältö komennolla: ls
Muokataan index.html tiedosto .php tiedostoksi komennolla: mv index.html index.php
Sekä lisätään index.php tiedostoon pieni pätkä php:tä  millä saadaan testattua, että php toimii.
php-toimii

PHP koodia voidaan lisätä aloittamalla <?php ja lopettamalla ?> kuten kuvassa näkyy. Tein pienen laskun php:llä 2×5=10. Missä koodi tulostaa pelkän vastauksen sivulle.

Tehtävän tarkoituksena oli tehdä virhe php koodiin ja katsoa mitä loki sanoo virheestä. Poistetaan vaikka tuosta “print(2*5);” kohdasta print tekstistä viimeinen kirjain “t”. Tallennetaan tiedosto. Vieläkö muistat miten? “ctrl+x” -> “y” + “enter”

Nyt jos sivun päivittää niin ei näy enään mitään?! Sivusto on tyhjä!
Katsotaan  lokista mitä se näyttää viaksi.
Komento: sudo tail /var/log/apache2/error.log
php-error-code
Siellähän on “PHP Fatal error: Uncaught Error…”
Riviä lukemalla löytyy että: Call to undefined function prin() in /home/jjekku/public_html/index.php:13 eli rivillä 13 on tämä virhe.
Tottahan tuo on koska poistimme viimeisen “t” kirjaimen sanasta print. Pelkkä prin() nyt ei tarkoita mitään tai ainakaan se ei kuullosta kovin järkevältä.

 

E – Tehtävän tarkoituksena on asentaa phpmyadmin sivustolle ja kokeilla tämän toimintaa

phpMyAdmin on graafinen käyttöliittymä selaimelle missä voidaan nähdä palvelimen tietokannat.

Asennetaan phpmyadmin palvelimelle komennolla:
sudo apt-get install phpmyadmin php-mbstring php-gettext
php-mbstring : Käsittelee Unicode-pohjaisia koodauksia. Esim. UTF-8
php-gettext : on API jota käytetään PHP-scripteissä. Esim hakemaan jotain rivejä tekstiä eripaikoista.

Asennuksessa valitaan että phpmyadmin käyttää apache2, koska apache2 on meillä käytössä!! Sekä valitaan “Yes” kohtaan dbconfig-common, tässä kohdassa phpmyadmin rakentaa itselleen configuraation tietokannoille, ettei sinun tarvitsisi itse sitä kirjoittaa.
Annetaan salasana phpMyAdmin tunnukselle.
phpMyAdmin hallinta sivusto löytyy osoitteesta: localhost/phpmyadmin & ip/phpmyadmin & example.com/phpmyadmin

phpmyadminlogin

Kirjaudutaan sisään ja nähdään miltä phpMyAdminin hallinta sivusto näyttää

mysql-asennettuna

Käydään luomassa tietokanta, jolla testataan phpmyadminin toiminta.
Painetaan yläreunasta “Databases”, jolloi avautuu tämännäköinen ikkuna.
Create database kohdasa olen kirjoittanut tietokannan nimen ja valinnut collationiksi: utf8_general_ci mikä on normaalisti eniten käytetty.

databasesSeuraavaksi painetaan create jolloin phpmyadmin luo tietokannan.
ja kuten nähdään tietokanta on luotu onnistuneesti, sekä tietokanta ei sisällä tauluja.
database-create

Tehtävä E on valmis!

F – Tehtävän tarkoituksena on tehdä palvelimelle ajetava weppiohjelma, mikä tekee laskun(esim. painoindeksi BMI)

Linkki toimivaan sivuun – JamiJ-testisivu – EI TOIMI TÄLLÄ HETKELLÄ

Tuolla ylempänä saimme php:n toimimaan kotihakemiston sivulla joten nyt voidaan kokeilla tehdä esimerkiksi painoindeksi laskuri php:llä
Tämän kurssin tarkoitus ei ole osata php:tä täydellisesti, joten hain vähän apuja kahdesta eri tutoriaalista ja yhdistelin niitä koska kumpikaan ei toiminut suoraan, laskivat painoindeksin ihan miten sattuu.

Tässä koodi mitä käytin. JamiJ GitHub BMI
bmi-code
Ja tässä lopputulos. HUOM!! Osoite! olen ottanut kuvan tehtävän H jälkeen!!
bmi-calc

Tehtävän F tehty!

G – Tehtävän tarkoituksena on tehdä palvelimelle ajettava weppiohjelma, joka käyttää tietokantaa (esim. TODO lista)

Linkki toimivaan sivuun – JamiJ-testisivu – EI TOIMI TÄLLÄ HETKELLÄ

TODO listat tarvitsevat tietokannan toimiakseen, jotta tietoa voidaan lisätä ja muokata.
Tietokanta ohjelma mysql asennettiin php:n yhteydessä, mutta jos haluaa vain mysql asentaa, anna komento: sudo apt-get install -y mysql-client mysql-server php-mysql
php-mysql – paketti tarvitaan jotta index.php voi ottaa yhteyden mysqllään.

Tein TODO ohjelman seuraamalla ohjetta Todo list application with PHP
Koska itse en tiedä vielä niin paljoa php:tä, että osaisin ulkoa kirjoittaa kyseisen ohjelman.
Linkki koodiin JamiJ-TODO sekä .css tiedostoon JamiJ-TODO-CSS

Loin phpmyadminissa itselleni uuden tietokannan: todo
Loin tälle tietokannalle taulun tasks johon lisäsin kyseiset tiedot
id type:INT , lenght:11, A_i
tasks type: VARCHAR, lenght 255
Tämän jälkeen tallennetaan kyseinen taulu oikealta alhaalta -> Save
todo-e1517835293576.png

Tietokanta on valmis, tein uuden kansion public_html alle nimellä todo
Komennoilla #1 cd  | #2 cd public_html/ | #3 mkdir todo | #4 cd todo |
Tänne tein tiedoston index.php komennolla: nano index.php
Loin myös tiedoston style.css komennolla: nano style.css
Ja loin niihin koodia, koodit jaettu ylempänä.

index.php tiedostosta täytyy muistaa muokata 5 riviä.
//Connect to the database $db = mysqli_connect(‘localhost’, ‘User’, ‘pass’, ‘database’);

user = tietokannan käyttäjän nimi
pass = tämän tietokannan käyttäjän salasana
database = tietokanta mihin kirjoitetaan dataa, eli itse käytän tietokantaa todo

Myös rivillä 12 mysqli_query($db, “INSERT INTO tasks (task) VALUES (‘$task’)”);
täytyy muistaa vaihtaa kohta “INSET INTO tasks (task)” eri taulun nimeen, jos teit eri nimellä taulun, kuin tasks ja taulun sisällä rivin task.

Tulokseksi pitäisi saada seuraavan näköinen sivu (ilman rivejä)

todo-ui

Tässä listassa voimme lisätä sekä poistaa rivejä, numerointi menee järjestyksessä, esim jos poistaa rivin 2 niin numerointi vaihtaa paikkaa eli: jeee rivi on numerolla 2

todo-ui-2

Tehtävä G valmis! 🙂

H – Tehtävän tarkoituksena on tehdä apachelle uusi sivu, mikä näkyy suoraan palvelimen pääsivulla(localhost / ip / osoite) ja joita voi muokata normaalin käyttäjän oikeuksilla.

Jotta saataisiin näkymään esimerkiksi BMI laskuri suoraan localhost / ip / example.com sivulla meidän täytyy muokata apachen konfigurointi tiedostoa.

Muokataan vain apachen default-conf tiedostosta path eri paikkaan. esim jjekku/public_html, jotta sivut näkyvät suoraan localhost osoitteessa ja niitä voi muokata ilman sudo oikeuksia

Muokataan apachen tiedostoa komennolla:
sudoedit /etc/apache2/sites-available 000-default.conf

Vaihdetaan DocumentRoot osoite osoittamaan oman kotihakemiston public_html kansioon.
apache2-virtualhost-hteht

Nyt pitäisi localhost / ip / example.com osoitteella näkyä kotisivu suoraan.

homepage-under-user-pub

J – Tehtävän tarkoituksena on asentaa LAMP (Linux, Apache, MySQL, PHP) ja testata kunkin komponentin toimintaa.

Tässä tehtävässä tarkoituksena on asentaa kaikki kyseiset komponentit ja testata näiden toimintaa.

Ylempien tehtävien ansiosta saimme näitä kaikkia testattua.

Tehtävät jotka jäi tekemättä, ajanpuutteen vuoksi.

D – Tehtävän tarkoituksena on tehdä virhe johonkin apachen asetustiedostoon ja analysoida mitä loki näyttää tästä virheestä

I – Tehtävän tarkoituksena on saada aiheutettua eri HTTP statuksia (200,404,500..) lokiin.

K – Tehtävän tarkoituksena on kokeilla Flaskin uutta ominaisuutta flask-testipalvelimessa

L – Tehtävän tarkoituksena on asentaa Python Flask + PostgreSQL + Apache mod WSGI ja testata näiden komponenttien toimintaa

One thought on “Viikko 3, Apache & MySQL & PHP

Leave a Reply