Tämä blogipostaus on osa Haaga-Helian Linux Palvelimet -kurssia, jota Tero Karvinen pitää keväällä 2022.
Kolmannen kurssiviikon tehtävät:
”Tee viisi vapaavalintaista kohtaa. Säädä vaikeustaso oikeaksi: helpoimmat ovat ensimmäiset a b c d e. Jos osaat jo perusteet, tee useampia tai vaikeampia kohtia. Tarkoitus on, että tehtävät tehtyäsi osaat enemmän kuin osasit ennen. Tee tehtävät alusta lähtien koneella, vaikka olisitkin kokeillut samaa asiaa tunnilla.
a) Asenna Apache ja osoita testillä, että se toimii.
b) Laita käyttäjien kotisivut (http://example.com/~tero) toimimaan. Testaa esimerkkikotisivulla.
c) Tee validi HTML5 sivu, ja testaa sen toiminta https://validator.w3.org
d) Surffaa oman palvelimesi weppisivuja. Etsi Apachen lokista esimerkki onnistuneesta (200 ok) sivulatauksesta ja epäonnistuneesta (esim 404 not found) sivulatauksesta. Analysoi rivit eli kerro jokaisesta rivistä niin paljon yksityiskohtia kuin osaat.
e) Vaihda Apachen esimerkkisivu johonkin lyheen sivuun niin, että vanha esimerkkisivu ei näy. (Tämä lienee ainoa kohta, jossa ikinä muokkaat weppisivua pääkäyttäjän oikeuksin. /var/www/html/index.html)
f) Tee virhe johonkin Apachen asetustiedostoon, etsi ja analysoi tuo rivi. Etsimiseen sopivat esimerkiksi Apachen omat lokit, syslog sekä ‘apache2ctl configtest’.
g) Tee virhe weppipalvelimella ajettavaan koodiin (esim PHP tai Python), etsi se lokista ja analysoi tuo lokirivi
h) Asenna ja kokeile PhpMyAdmin:a tai jotain muuta valmista weppiliittymää tietokantojen hallinnointiin.
i) Tee palvelimella ajettava weppiohjelma, joka tekee käyttäjälle jonkin yksinkertaisen laskun (esim. painoindeksi BMI)
j) Tee palvelimella ajettava weppiohjelma, joka käyttää tietokantaa. Voit tehdä jonkin yksinkertaisen CRUD-ohjelman, esimerkiksi TODO-listan
k) 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.
l) 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.
m) Kokeile jotain Flaskin uutta ominaisuutta flask-testipalvelimessa. Voit kokeilla esim. muotteja (templates), tietokantaa tai syötteiden ottamista lomakkeilta (forms).
n) Asenna Python Flask + PostgreSQL + Apache mod WSGI. Testaa kunkin komponentin toiminta. Testaa lopuksi kokonaisuus. (vaikea) ja voit muokata sitä ilman pääkäyttäjän oikeuksia.
o) 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.”
(Karvinen 2022)
Koska harjoittelen vielä perusteita, valitsin tehtäväksi 5 ensimmäistä tehtävää.
a) Apachen asennus
Asensin Apachen komennolla
$ sudo apt-get install apache2
Tämän jälkeen piti vielä testata Apachen toimivuus. Niinpä avasin palvelimen esimerkkisivun Firefox-selaimessa komennolla
$ firefox ”http://localhost”
Pyydetty sivu aukesi selaimeen ja esimerkkisivulla näkyi teksti ”Moi”, kuten pitikin muokattuani Apachen esimerkkisivua viime luennon harjoituksissa.
Tutkin seuraavaksi, millä IP-osoitteella palvelin näkyy Internetissä. Tämän sai selville komennolla
$ ip addr
Komentorivin tulosteista löytyi sisäverkon IPv4- ja IPv6-osoitteet, jotka näkyvät kohdassa 3: IPv4-osoite näyttäisi olevan 192.168.43.247, IPv6-osoite 2001:14bb:63d:f677:3a9f:8b3b:37e:e5da. Kun avasin sisäisen IPv4-osoitteen sivun Firefox-selaimessa, aukesi sama localhost-sivu ”Moi”-tekstillä kuin aiemmin. Sen sijaan IPv6-osoitteella ei löytynyt mitään:
$ firefox 192.168.43.247
192-alkuisella IPv4-osoitteella Apachen esimerkkisivun osoiteriville ilmestyi yliviivattu lukon kuva varoitukseksi siitä, että yhteys ei ole salattu. Kun kokeilin samaa ip addr -tulosteen ensimmäisellä sisäverkon IP-osoitteella 127.0.0.1, osoiterivin lukko-kuvake ei ollut yliviivattu vaan yhteys oli salattu:
$ firefox http://127.0.0.1
(Debian ei ole näköjään kovin tarkka siitä, missä muodossa IP-osoitteen ilmaisee komentorivillä: osoitteen ympärillä saisi olla lainausmerkit, mutta ne eivät ole näköjään pakollisia, ja yllä kävi ilmi, että myös ilman http://-alkua komentorivi ymmärtää, mitä halutaan.)
Julkisia IP-osoitteita komentorivin tulosteessa ei näy. Selvitin sivustolla whatismyipaddress.com julkiset IP-osoitteeni, mutta en saanut julkisella IPv4- ja IPv6-osoitteella Apachen esimerkkisivua näkyviin vaan yritys päättyi aikakatkaisuun.
Lopuksi varmistin vielä, millä nimellä tietokoneeni näkyy verkossa:
$ host 192.168.43.247
Komentorivin tulosteen mukaan kone näkyy verkossa nimellä suska-dell, siis aivan oikein. (Karvinen 2008)
Testaukseni perusteella Apache-palvelin toimii odotetulla tavalla.
b) Käyttäjien kotisivut näkyviin
Loin ensin uuden testikäyttäjän nimeltä susanna01. Tein tämän komennolla
$ sudo adduser susanna01
Tällöin käyttäjätunnuksen luomisen yhteydessä pääsin syöttämään käyttäjälle myös salasanan, joka oli yli 8 merkkiä pitkä, sisälsi numeroita, isoja ja pieniä kirjaimia sekä erikoismerkkejä. Minulta kysyttiin myös luotavan käyttäjän koko nimi, huoneen numero, puhelinnumerot ja muita tietoja, mutta jätin muut kuin käyttäjän nimen tyhjäksi.
Menin luodun käyttäjän kotihakemistoon /home/susanna01. Otin userdir-moduulin käyttöön komennolla
$ sudo a2enmod userdir
Käynnistin Apache-palvelimen uudestaan, jotta muutos tulisi voimaan. Tämä tapahtui komennolla
$ sudo service apache2 restart
Tarkistin vielä komennolla ”$ pwd”, että olen varmasti testikäyttäjän susanna01 kotihakemistossa. Tämän jälkeen yritin luoda testikäyttäjälle public_html-kansion, joka näkyisi myös Apache-palvelimella, mutta pelkkä komento
$ mkdir public_html
ei riittänyt, vaan kansion tekemiseen tarvittiinkin pääkäyttäjän (super user) oikeuksia:
$ sudo mkdir public_html
Tarkistin vielä komennolla ”$ ls”, että public_html-kansio tosiaan löytyy käyttäjän susanna01 kotihakemistosta, ja koska näin oli, avasin public_html:n myös Firefox-selaimeen osoitteessa http://localhost/~susanna01 nähdäkseni, mitä tapahtuu. Sain selaimeen näkyviin tyhjän hakemiston, joten toistaiseksi kaikki oli niin kuin pitikin ja public_html-kansion luominen oli onnistunut:
Testasin vielä toisella tietokoneella, saanko käyttäjän susanna01 hakemiston näkyviin Internetin kautta, ja osoitteella http://192.168.43.247/~susanna01/ se tosiaan näkyi julkisesti:
Seuraavaksi halusin esimerkkisivun, jossa on tervehdys käyttäjälle.
…
(Karvinen 2008)
c) Validi HTML5-sivu
Tulossa.
d) Apachen lokien tutkimista
Tulossa.
e) Apachen esimerkkisivun muokkaus pääkäyttäjänä
Tulossa.
Kun olin aikeissa sulkea tietokoneen tältä päivältä, lopetin Apache-palvelimen käytön komennolla
$ sudo systemctl stop apache2
Tämän jälkeen palvelimeen ei saatu yhteyttä ja siten public_html-kansion sisältökään ei ollut enää näkyvillä Internetissä.
Lähteet
Karvinen, T. 2008. Install Apache Web Server on Ubuntu. Luettavissa: https://terokarvinen.com/2008/install-apache-web-server-on-ubuntu-4/. Luettu: 7. – 8.2.2022.
Karvinen, T. 2022. Linux Palvelimet 2022. Kurssisivusto. Luettavissa: https://terokarvinen.com/2021/linux-palvelimet-ict4tn021-3018/. Luettu: 7.2.2022.
Artikkelia on päivitetty 13.3.2022: lisätty otsikoihin viittaukset tehtävänantoon.
Paluuviite: Teoriasta käytäntöön pilvipalvelimen avulla (h4) - Susanna Lehto
Paluuviite: Komentojen automatisointi ja skriptaus (h6) - Susanna Lehto