Harjoitus 3

Tehtävässä käytetyt harjoitukset löytyvät seuravaassa osoiteessa Tero Karvinen Learn Free software with meLinux palvelimet ict4tn021 -6 kurssin opettajana toimii Tero Karvinen.

Kotitehtävät ovat seuraavat:

a) Asenna Apache, laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.

b) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit.Tee jokin seuraavista (yksi riittää, useampi vapaaehtoisena lisätehtävänä):

c) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi

d) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.

e) Asenna ja kokeile PhpMyAdmin:a tai jotain muuta valmista weppiliittymää tietokantojen hallinnointiin.

f) Tee palvelimella ajettava weppiohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)

g) Tee palvelimella ajettava weppiohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan

h) Tee Apachelle uusi sivu, joka näkyy suoraan palvelimen pääsivulla, mutta jonka sivuja voi muokata normaalin käyttäjän oikeuksilla (name based virtual host, DocumentRoot käyttäjän kotihakemistoon).

i) Kuinka monta eri HTTP Status:ta (200, 404, 500…) saat aiheutettua lokeihin? Selitä, miten aiheutit tilanteet ja analysoi yksi rivi kustakin statuksesta.

j) Asenna LAMP (Linux, Apache, MySQL, PHP). Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (Voit aloittaa tilanteesta, jossa Linux-käyttöjärjestelmä on jo asennettu, mutta ei muita (AMP) osia.

k) Kokeile jotain Flaskin uutta ominaisuutta flask-testipalvelimessa. Voit kokeilla esim. muotteja (templates), tietokantaa tai syötteiden ottamista lomakkeilta (forms).

l) Asenna Python Flask + PostgreSQL + Apache mod WSGI. Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (vaikea)

a)Aloitin tehtävän asentamalla apache-ohjelmiston seuraava komennolla “sudo apt-get install apache2”. Kun asennus saatu valmiiksi, varmistin apache toiminta aluksi lokaalisti siirtymällä nettiselaimen kautta seuraava osoitteseen http://localhost. Apache oletussivu aukesi ruudulle ilman ongelmia, joten apache näyttäisi toimivan oikein lokaalisti.

Workspaces_017png

Seuraavaksi testasin näkyykö apachen kotisivu myös työaseman seuraava netti-osoitteseen kautta. Tarkistin aluksi työaseman netti-ip komenttokehoittesta komenolla”ip addr”. Komennon avulla ruudulle saadan listattua hyödyllisiä tietoja koneen verkkoyhteyksiin liittyen. Koska työasema on kytketty verkkoon wlanin kautta, testausta varten tarvittavia tieto löytyyi laitteen “wlp3s0″alta riviltä “inet 192.168.43.4/24 brd 192.168.43.255 scope global dynamic wlp3s0.”

Työaseman netti-ip  on siis 192.168.43.4, syötin ip-osoite nettiselaimeen ja katsoin aukeaako apachen oletussivu jälleen ruudulle.

Workspaces_018

Apache oletussivu aukesi ruudulle ilman ongelmia, joten siiryin seuraavan vaiheeseen, missä luodaan käyttäjän kotihakemistoon kansio jonne voidaan luoda oma web-sivu.

Ennen kansion luomista käyty enabloimassa userdir module (vaadittiin, jotta käyttäjän kotihakemiston käyttäminen web-sivuja toimisi)

Ajettu komentokehotteeseen komento “sudo a2enmod userdir”, joka aktivoi userdir moduulin. Jotta muutokset tulevat voimaan apache pitää myös uudeleenkäynnistää komennolla “sudo service apache2 restart”.

Workspaces_020png

Kun userdir moduuli saatiin aktivoitua, jatkoin tehtävää luomalla käytäjän kotihakemistoon uusi kansio tuleva nettisivua varten komenolla “mkdir public_html” Kansion luonnin jälkeen siiryin selaimessa osoitteseen “http://localhost/~saban, ja varmistin, että kotisivulle pääseminen onnistuu. Selaimen avautunut tyhjä parent directory, joten kaikki näyttäisi kunnossa tähän mennessä.

Workspaces_021png

Seuraavaksi luotu aiemmin luotuun /public_html kansioon uusi tiedosto “index.html” “nano index.html” komenolla, ja kirjoitettu tiedostoon teksti “Hello World!” ja testattu siirtyä sivustolle uudelleen selaimen kautta.

Workspaces_23png

Selaimeen avautunut nyt teksti Hello World, joten nettisivu on nyt valmis tulevia muokkauksia varten.

b/i) tätä tehtävä varten seuraan apache2:n lokeja, nämä sijaitsevat “/var/log/apache2/”. Käytän lokien seuramiseen seuraava komentoa “tail-f” jonka olen käyttänyt aikaisemasta tehtävästä.

Teen ensimmäiseksi onnistuneen sivulatauksen. Toteutan tämän siirtymällä selaimella osoitteeseen http://127.0.0.1/ (localhost), seuraan acces.log tiedostoa.

Workspaces_026png

Ensimäisenä on osoite mistä pyyntö tulee, tässä tapauksessa 127.0.0.1(localhost), tämän jälkeen päiväys ja aikavyöhykä. Seuraavaksi kerotaan mitä metodia käytetään tiedon käsittellemiseen, tässä tapauksessa GET metodia (Tiedon pyyntöä). / merkintä kertoo mistä tietoa haetaan, tässä tapauksessa /var/www/html. Tämän jälkeen tieto mitä http protokollaa käytetään, tässä tapauksessa 1.1. koodi 200 kertoo että onnistuneesta sivulatauksesta, toisella rivillä esintyy 304, tämä viittaa siihen että tiedostoa ei ole muutettu edellisen latauksen jälkeen joten siitä ei tarvitse ladata.

Seuraava luku kertoo latauksen koon tavuina. Tämän jälkeen tule tietoa käyttäjän järjestelmästä sekä selaimesta.X11 viittaa kommukaatioprotokollaan joka mahdollistaa ikkuna(Window) tyylisen käytön.

Täsät voimme päätellä että ensimmäinen rivi on itse sivusto ja toinen rivi viittaa kuvaa joka ladattavalla sivustolla on.

Epäonnistuneessa sivulatauksessa käytän samaa osoitetta mutta lisään siihen “/private” =127.0.0.1/ private. Seuraa samaa acces.log tiedostoa kuin aikaisemmin.

Workspaces_030 Loki merkinnät on lähes identtisiä edeliseen, poikkeuksena että sivuston lataukseen viittavalla rivillä on koodi 404, mikä tarkoittaa että haettua resurssia ei ole löytynyt.

C) Varmistaakseni että kaikki päivitykset on ajan tasalla päivitin järjestelmän komennolla “sudo apt-get update”. Tämän jälkeen siiryin asentamaan Apache2 moduliin komenolla “sudo apt-get install -y libapache2-mod-php” ja käynnistin palvelimeen uudelleen komenolla “sudo systemctl restart apache2.service”. Tämän jälkeen ajoin komennon sudoedit  /etcapache2/mods-available/php7.0.conf, ja muokkasin php:n asetustietoja jotta saadan php käytetty public_html kansiossa. (lisäsin “#” merkit kuva alla korostettujen rivien alkuun).

Workspaces_35png

Muokkauksen jälkeen tallensin muutokset CTRL+O ja Y, ENTER, CTRL+X -näppäinyhdistelmien avulla, ja käynnistin apache-palvelimen uudelleen komennolla “sudo systemctl restart apache2.service”

Avasin uuden terminaalin ja siiryin public_html kansioon komennolla “cd ~/public_html”,

Lisäsin public_html -kansioon .htaccess -tiedoston ja lisäsin nano-editorilla sinne sisällön

AddType application/x-httpd-php .html
DirectoryIndex shop.html

mikä kertoo Apachelle, että se ymmärtää lukea HTML-tiedostoihin sisällytettyä PHP-koodia. Lisäksi kansion juuri/indeksitiedosto muutettiin tiedostoon ~/public_html/shop.html.

Lisäsin ~/public_html/ -kansioon shop.html-tiedoston ja editoin sitä nano-editorilla. Alla lopputulos:

89

d)Tein pienen muutoksen Apachen asetuksiin komennolla “sudoedit/etc/apache2/apache2.conf” vaihdoin arvon ${APACHE_LOG_DIR} muotoon {APACHE_LOG_DIRs}, ja käynnistin palvelimen uudestaan komennolla “sudo service apache2 restart” Apache ei enää toiminut.

Sain virhe näkyville komennolla “apache2ctl configtest”

Terminal - saban@saban-ThinkPad-X220: -var-log-apache2_40png

https://ubuntuforums.org/showthread.php?t=1639623

http://www.mvnet.fi/index.php?osio=Kotisivun_teko&sivu=PHP-ohjelmointi

http://www.ekurssit.net/kurssit/php/

http://terokarvinen.com/2017/aikataulu-%E2%80%93-linux-palvelimet-ict4tn021-7-ti-ja-6-to-alkukevat-2018-5-op