Apache-www-palvelimen ominaisuudet
Käydään läpi muutama hyödyllinen ominaisuus Apache-www-palvelimesta ja helpotetaan niillä omien sivujen ylläpitoa ja suojausta.
SSI (Server Side Includes)
yksinkertaistettu malli (malli.zip)
Samanlaisena toistuvien elementtien lisääminen ja muokkaaminen on vaivalloista, sillä samaa koodia joudutaan normaalisti kopioimaan useille sivuille. Toistuvia osia ovat esimerkiksi vakionavigointipalkki ja päivitystiedot. Parempi ratkaisu on keskittää kaikille sivuille yhteiset osat samaan paikkaan ja liittää ne automaattisesti kullekin sivulle sopivaan paikkaan. Tähän voidaan käyttää esimerkiksi Apache-wwwpalvelimissa toimivaa SSI-tekniikkaa. WWW-palvelin tulkitsee dokumenttiin upotetut komennot ennen sivun lähettämistä selaimelle.
Tehtävä: Helpotetaan Nanonanon sivuston ylläpitoa siirtämällä kaikille dokumenteille yhteinen navigointi yhteen tiedostoon, josta sitä on helppoa keskitetysti ylläpitää.
- Aloita uusi täysin tyhjä dokumentti (ilman mitään HTML-pohjaa).
Kopioi tähän dokumenttiin Nanonanon etusivulla olevan
<nav class="navbar">...</nav>
-osan lähdekoodi. -
Muuta kaikki navigointipalkin linkit puoliabsoluuttisiksi,
jotta samat linkit toimivat miltä tahansa Nanonanon sivulta. Esim:
<li><a href="/~omatunnus/www/artikkelit/">Artikkelit</a></li>
Suhteellisia linkkejä ei voi sellaisenaan käyttää, koska niiden pitäisi olla erilaisia eri sivuilla. Tämä ongelma voidaan kiertää käyttämällä base-elementtiä. Voit lisätä jokaisen sivun head-osaan heti ensimmäiseksi base-elementin, joka määrää minkä osoitteen perusteella kaikki sivun suhteelliset linkit pitää tulkita. Tämä koskee kaikkia sivuun suhteellisilla linkeillä linkitettyjä osia mukaanlukien tavalliset linkit, kuvat, css-tiedostot, videot jne. Normaalisti suhteelliset linkit tulkitaan kyseisen sivun osoitteen perusteella mutta base-elementillä tämä voidaan muuttaa halutuksi:
<base href="http://users.jyu.fi/~omatunnus/" />
base-määritys voi itse olla myös suhteellinen:
<base href="../" />
Käytä siis joko puoliabsoluuttisia linkkejä tai lisää base-elementti jokaiselle sivulle ja käytä suhteellisia linkkejä.
- Tallenna navigointipalkki navbar.include-nimellä Nanonanon kotisivuhakemistoon juureen W:\www\.
-
Muuta W:\www\-hakemistossa olevan index.html-tiedoston nimeksi index.shtml.
- Useissa Apache-palvelimissa oletuksena .shtml-päätteiset tiedostot prosessoidaan SSI-komentojen varalta. Hakemistosta palautetaan yleensä index.shtml-tiedosto, jos hakemistossa ei ole index.html-tiedostoa. Voimme siis käyttää hakemistoissa aivan hyvin index.shtml-nimisiä tiedostoja, koska linkkimme viittaavat hakemistoihin eivätkä index.html-tiedostoihin.
- Muuta index.shtml-tiedostoa siten, että korvaat
navbar-lohkon seuraavalla SSI-komennolla:
<!--#include virtual="/~omatunnuksesi/www/navbar.include"-->
- Kokeile selaimella miten etusivu toimii nyt selaimessa:
http://users.jyu.fi/~omatunnus/www/
Jos kaikki meni oikein, niin edellä lisäämäsi SSI-komennon tilalla pitäisi selaimessa näkyä ihan normaali navigointipalkki, jonka WWW-palvelin lisäsi navbar.include-tiedostosta SSI-komennon kohdalle. Huom. tämä ei toimi muilla tavoin kokeiltuna vaan ainoastaan users.jyu.fi:stä avatussa osoitteessa.
- Varmista, että navigointipalkin linkit toimivat. Kokeile kaikkien linkkien toimintaa itse tai tarkista sivu W3C:n Link Checkerillä.
- Kokeillaan lisätä SSI:n avulla myös dokumentin muutosaika sivulle. Siirrä index.shtml-tiedoston lopussa
oleva
strong
-elementti poisaddress
-lohkosta ja sijoita sep
-elementin sisälleaddress
-lohkon perään. Korvaa aikamääre rivillä:<!--#config timefmt="%Y-%m-%d %T"--><!--#echo var="LAST_MODIFIED"-->
- Ensimmäinen kommentti määrää SSI:n päivämäärämuotoilun.
- Jälkimmäinen kommentti aiheuttaa varsinaisen muutosajankohdan lisäämisen.
- Kokeile selaimella ilmestyikö muutosaika sivulle.
- HUOM! Jos muutosajankohta tai muut SSI-komentosi eivät tunnu toimivan, niin varmista että
hakemistossasi ei ole enää index.html- ja/tai index.htm-nimisiä tiedostoja. Jos niitä löytyy,
niin silloin index.shtml-tiedostoja ei prosessoida hakemiston oletustiedostoiksi. Tällöin kyseiset
index.html- ja/tai index.htm-tiedostot täytyy joko nimetä uudelleen tai poistaa, jotta
index.shtml-tiedoston saa toimimaan hakemiston oletustiedostona.
Tiedostot joita käytetään kansion indeksitiedostoina voi itse määrätä .htaccess-tiedoston avulla.
- Tee ohjaus3.css:ään asiayhteydestä riippuva tyyli, joka siirtää
address
-lohkon jälkeisenp
-elementin oikeaan laitaanaddress
-lohkon alapuolelle. Tee vastaavat lisäykset myös Nanonanon sivuston mobiili.css-tiedostoon. - Siirrä
address
-lohko omaan tiedostoon address.include. Lisää se etusivun loppuun SSI-komennolla:<!--#include virtual="/~omatunnuksesi/www/address.include"-->
- Miksi päivitysajankohtaa ei voitu siirtää suoraan address.include-tiedostoon?
- Avaa pääteyhteys esimerkiksi PuTTY-ohjelmalla jalava.cc.jyu.fi-palvelimeen (tai halava.cc.jyu.fi).
Siirry
cd
-komennolla symbolisen html-linkin alla olevaan www-hakemistoon. - Aja komento
nano -w .htaccess
Komento luo
.htaccess
tiedoston, jolla voidaan ohjata Apache-palvelimen toimintaa hakemistokohtaisesti. - Lisää .htaccess-tiedostoon seuraavat asetukset:
AddHandler Server-Parsed .html AddType text/html .html #seuraava rivi määrittää kansion indeksitiedostot. Ensimmäistä, joka näistä löytyy, käytetään indeksitiedostona DirectoryIndex index.shtml index.html index.htm
- Ensimmäisellä direktiivillä käsketään palvelimen etsiä mahdolliset SSI-komennot kaikista .html-päätteisistä tiedostoista.
- Toinen määre varmistaa, että prosessoinnin jälkeenkin tiedostot jaetaan oikealla mediatyypillä. Apache 2 -WWW-palvelin jakaa oletuksena .shtml-päätteiset XHTML-tiedostot text/xml-muodossa, mikä ei sovi kaikille selaimille ja validaattoreille, joten pitää määrätä mediatyypiksi text/html.
- Tavallisia .html-päätteisiä tiedostoja ei yleensä kannata automaattisesti parsia SSI-komentojen varalta, koska se aiheuttaa palvelimelle raskasta ja turhaa työtä. Tässä tehtävässä kaikkiin .html-tiedostoihin on kuitenkin tarkoitus lisätä navigointipalkki automaattisesti, joten operaatio on perusteltu.
- Tallenna lopuksi tiedosto valinnalla Ctrl+O ja poistu tiedoston muokkauksesta valinnalla Ctrl+X. .htaccess-tiedoston asetukset vaikuttavat siihen kansioon ja sen alikansioihin, joissa tiedosto sijaitsee
- Lisää SSI-komentojen avulla navigointipalkki, tekijätiedot ja muutosajankohta ainakin artikkelit-, opiskelu- ja linkit-hakemistoissa oleville sivuille.
- Varmista W3C:n Link Checker -ohjelmalla, että navigointilinkit toimivat varmasti kaikilla alasivuilla.
- Validoi lopuksi HTML- ja CSS-koodit ja korjaa mahdolliset virheet.
Salasanasuojaus
Yksittäinen kansio ja sen alikansiot on helppo suojata salasanalla.
- Suojataan Nanonanon dokumentit salasanalla. Lisää artikkelit-kansioon
.htaccess-tiedosto ja kirjoita sinne:
AuthUserFile /home/tunnus/.htusers AuthGroupFile /dev/null AuthName ByPassword AuthType Basic <Limit GET> require valid-user </Limit>
AuthUserFile-kohtaan annettava polku on oltava WWW-palvelimella toimiva ja sen on osoitettava salasanatiedostoon. Oikea polku näyttää samalta kuin halava/jalava-koneissa kotihakemiston polku, mutta ei kuitenkaan todellisuudessa ole sama. Tietoturvasyistä .htusers-tiedosto ei saa olla public_html-kansiossa, koska sieltä tiedosto olisi kaikkien luettavissa.
- Luo tunnus ja salasana seuraavalla komennolla, jossa korvaat sanan omatunnus omalla käyttäjätunnuksellasi:
Komento luo tunnustiedoston kansioon /wwwhome/home/omatunnus/, joka näkyy www-palvelimelle polkuna /home/omatunnus/. Vrt. edellä .htaccess-tiedostoon lisätty polku.htpasswd -c /wwwhome/home/omatunnus/.htusers tunnus
- Anna kaikille lukuoikeus .htusers-tiedostoon:
chmod a+r /wwwhome/home/omatunnus/.htusers
- Jos sinulla ennestään on jo olemassa .htusers-tiedosto ja haluat lisätä siihen tunnuksia, niin komento on:
htpasswd /wwwhome/home/omatunnus/.htusers tunnus
- Kokeile kysyykö selain tunnusta ja salasanaa.
- Tarkemmin hakemistojen suojaamisesta voi lukea Digipalvelujen ohjeesta.
Käyttäjien kommentit