h3

Linux Server Course - Linux palvelimet ict4tn021-3014


Aihe: h3 kotitehtävä

Kurssi: Linux Server Course - Linux palvelimet ict4tn021-3014

Päiväys: 06.02.2021

Opettaja: Tero Karvnen




Tehtävät

  • 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.
  • 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)
  • m) Vaihda Apachen oletussivu. Eli laita palvelimen etusivulla (ilman tildeä) näkyvä sivu niin, että alkuperäinen on jonkun käyttäjän kotihakemistossa ja voit muokata sitä ilman pääkäyttäjän oikeuksia.
  • n) Laita kaksi nimeä samaan IP-osoitteeseen. Voit simuloida nimipalvelun toimintaa /etc/hosts -tiedoston avulla. Eli niin, että samalla palvelimella osoitteella teronlenkkisivu.com tulee eri sisältö kuin osoitteella opipentest.com.

Toteuttaminen
a) Apache2 asennus:
Katsotaan mikä on koneen IP osoite:
Koska käytämme WIFI (wlp3s0), sen IP 192.168.0.116 on localhost osoite.
Kokeilemme avata sen Firefoxilla:
ja pääsemme Apache2 aloitussivuun. Se tarkoittaa, että web-palvelin asennettu kunnolla.
Luodaan omat esimerkkisivut:
cd /var/www/html
sudo mkdir website
cd website/
sudo touch index.html
sudo nano index.html

Ctrl+O Ctrl+Z ja restaitoidaan Apache2 palvelin:
sudo systemctl restart apache2

Nyt pääsemme omalle sivulle Firefoxilla:

Laitetaan omat sivut käyttöön:
sudo a2enmod userdir
Käynnistetään Apache2 uudelleen:
systemctl restart apache2
Luodaan oman kansion:
cd ~
mkdir public_html
cd public_html
nano index.html
Ctrl+O Ctrl+Z
Nyt pääsemme Firefoxilla omalle sivulle:


Apache2 lokit sijaitsevat täällä:
/var/log/apache2/access.log
/var/log/apache2/error.log

sudo nano /var/log/apache2/access.log

Löytyy useat rivit jotka esittävät erillaisien websivujen käyntiä:
192.168.0.116 - - [08/Feb/2021:19:19:41 +0200] "GET /~bfy466/ HTTP/1.1" 200 458 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0"
Se tarkoittaa, että onnistuneesti saimme websivu näkyviin. Selitykset oli saatu tästä:

192.168.0.116 %h host IP Address of visitor
- - %u user Empty in many cases unless user is authenticated
[08/Feb/2021:19:19:41 +0200] %t date & time Date and time that the event occurred
"GET /~bfy466/ HTTP/1.1" \"%r\" request Request string
200 %>s status HTTP Status code
https://httpstatuses.com/200 selittää sen kuin 200 OK The request has succeeded.

458 %b size HTTP Size
"-" \"%{Referer}i\" Referer Referer host
"Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0" \"%{User-agent}i\"
User agent header Web browser or Bot identification
Käyttänössä se on selaimen+käyttöjärjestelmän tunnistus.

Toinen rivi tarkoittaa, että sivun avaaminen epäonnistui:

192.168.0.116 - - [08/Feb/2021:19:19:48 +0200] "GET /~bfy468/ HTTP/1.1" 404 492 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0)$
Samat lokin osat, eroa on se, että HTTP statuksen koodi on 404
404 NOT FOUND
The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Kolmas rivi kertoo, että kysytty websivu oli siirty jossain muualla ja ei enää saatavilla alkuperäiselta osoitteelta:

192.168.0.116 - - [08/Feb/2021:18:25:22 +0200] "GET /website HTTP/1.1" 301 582 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0"

301 %>s status HTTP Status code
301 MOVED PERMANENTLY
The target resource has been assigned a new permanent URI and any future references to this resource ought to use one of the enclosed URIs.

Vaihdamme Apachen oletussivun:
cd /var/www/html

Tästä löytyy index.html, joka on Apachen oletussivu.
sudo mv index.html index_apache2.html
sudo nano index.html
Lisätään joku yksinkertainen HTML rakenne (example.com esimerkisivu):
Talennuksen jälkeen pääsemme Firefoxilla oletusivulle:







Muistiinpanojen yhteenveto