Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Tietoa laitoksesta:

 

Harjoitustyö 2: WWW-palvelimen asennus ja konfigurointi

Harjoitustyössä asennetaan ja konfiguroidaan WWW-palvelin. Palvelimen toiminta tulisi testata (mahdollisesti virtuaalisen) verkon yli toiselta koneelta käsin, jos vain suinkin mahdollista. Tällä kertaa virtuaalikoneiden käyttö harjoitustyön toteutukseen on peräti suotavaa. Asennetun palvelimen ei tarvitse olla näkyvissä julkisessa internetissä. Harjoitustyön voi siis tehdä asentamalla Linux virtuaalikoneeseen ja testaamalla palvelimen toiminta käyttämällä oikealla fyysisellä koneella toimivaa selainta. Asiakaskoneen ei tarvitse käyttää Linuxia käyttöjärjestelmänä.

Kuten 1. harjoitustyössä, harjoitustyöstä palautetaan oppimispäiväkirja, mielellään ihan tavallinen tekstitiedosto, tosin OpenOffice-dokumenttikin käy. Oppimispäiväkirjasta pitäisi selvitä miten harjoitustyö eteni, mitä komentorivikomentoja suoritettiin ja kuinka paljon eri vaiheisiin tuli käytettyä aikaa. Jos jonkin harjoituksen osa-alueen toteutus ei onnistunut, niin oppimispäiväkirjasta pitäisi selvitä oma arvio epäonnistumisen syystä.

Harjoitustyötä varten saa tarvittaessa laitokselta käyttöön oman virtuaalikoneen. Laitoksen puolesta asennettu virtuaalikone tulee olemaan verkkoyhteyksiltään rajoitettu (se ei tule olemaan näkymään laitoksen verkon ulkopuolelle).

Tehtävänä on asentaa ja konfiguroida nimipohjainen VirtualHost Apache WWW-palvelimeen. Asennuksen pitää tukea SSL-kryptausta siten, että käytetyllä SSL-sertifikaatilla on sama nimi kuin konfiguroidulla VirtualHostilla. Palvelimella suoritetaan PHP-skriptejä ja suojatun yhteyden takaa myös CGI-skriptejä. Valmiiksi asennetulla palvelimella pitää olla yksi PHP-skripti, joka hakee tietoja samalla palvelimella sijaitsevasta tietokannasta ja CGI-skripti, joka suoritetaan tavallisen käyttäjän oikeuksin, mutta vain SSL-kryptatun yhteyden yli.

Harjoitustyön vaiheet siis ovat:

Harjoitustyön palautus

Harjoitustyö palautetaan tar.bz2 pakettina, jossa on erillisinä tiedostoina: Harjoitustyön voi palauttaa sivun http://db.cs.helsinki.fi/~jjaakkol/linux-return/ avulla.

SQL-esimerkki tietokantaan luotavasta taulusta:

  create table movies (name varchar, year integer);
  insert into movies values ('Holy Grail', 1975);
  insert into movies values ('Life of Brian', 1979);
  insert into movies values ('The Meaning of Life', 1983);

PHP-skripti esimerkki:

<html>
<title>Movie list</title>
<body>
<h1>Selected list of great movies</h1>
<table>
<? 
// Insert your own database settings here
$conn=pg_Connect("host=localhost port=10001 password=fooblah 
dbname=jjaakkol");
$result=pg_exec("select * from movies");
while ( $arr = pg_fetch_array ($result) ) {
        echo '<tr><td>'. $arr["name"] . '</td><td>' . $arr["year"] . 
                '</td></tr>';
}
pg_close($conn);
?>
</pre>
</html>

Suoritettava CGI-skripti

Skripti kertoo minkä käyttäjän oikeuksin skripti suoritettiin ja skriptin tulostamat ympäristömuuttujat kertovat apachen ja ssl:n konfiguraatiosta.
#!/bin/sh
echo "Content-Type: text/plain"
echo ""
echo "-----------------------------"
echo "this CGI process run by : `id -a`"
echo "-----------------------------"
/bin/date
echo "-----------------------------"
ulimit -a
ulimit -Ha
echo "-----------------------------"
env
echo "-----------------------------"