CGI, SSI ja Apachen ominaisuuksia - Demo 7
- Mallivideot
- Lomakkeen käsittely CGI-ohjelmalla
- SSI (Server Side Includes)
- Edelleenohjaus
- Salasanasuojaus
Mallivideot
- cgi.wmv 2.9M
- ssi.wmv 6.0M
- forward.wmv 664k
- passwd.wmv 1.5M
Näissä demoissa otetaan käyttöön pieni lomakkeiden käsittelyyn tarkoitettu CGI-ohjelma, lisätään www-sivuihin dynaamisia elementtejä SSI:n avulla sekä tutustutaan kuinka Apache-www-palvelimella tehdään salasanasuojaus, edelleenohjauksia ja monikielisiä www-sivuja.
Lomakkeen käsittely CGI-ohjelmalla
Asennetaan Demo3:ssa tehtyjä lomakkeita varten CGI-ohjelma:
- Ota SSH-yhteys johonkin atk-keskuksen people.cc.jyu.fi-koneeseen.
- Siirry www-kansioon ja luo sinne uusi alihakemisto nimeltään cgi-bin
- Siirry cgi-bin-kansioon
- Siirrä wget-komennolla laheta.txt- ja laheta.conf-tiedostot:
wget http://appro.mit.jyu.fi/laheta/laheta.txt wget http://appro.mit.jyu.fi/laheta/laheta.conf
- Muuta laheta.txt-tiedoston nimeksi laheta.cgi
- Anna kaikille suoritus- ja lukuoikeudet laheta.cgi- ja laheta.conf-tiedostoihin
- Muuta laheta.conf-tiedoston sisältöä niin että lomakkeen tiedot lähetettäisiin
sinulle:
- email-elementin sisälle tulee sähköpostiosoite, johon lomakkeen tiedot lähetetään.
- h1, title ja p-elementteihin voi kirjoittaa tekstiä, jotka tulevat kyseisinä elementteinä lomakkeen käsittelyn jälkeiseen palautesivuun. Vaihtoehtoisesti url-elementtiin voi määritellä oman palautesivun osoitteen.
- css-elementtiin voi määritellä palautesivulla käytettävän css-tiedoston.
- Kokeile toimiiko cgi-ohjelma komentoriviltä:
./laheta.cgi
Jos ei toimi niin tarkista ohjelman käyttöoikeudet ja laheta.conf-tiedoston sisältö. - Avaa html-kitiin demo3:ssa tekemäsi mail.html ja kyselylomake. Muuta kummankin
lomakkeen action-attribuutin arvoksi äsken asentamasi cgi-ohjelman osoite:
<form action="http://www.cc.jyu.fi/~omatunnus/cgi-bin/laheta.cgi" method="post">
- Kokeile täyttää lomakkeet ja lähettää niiden tiedot cgi-ohjelmalle. Tarkista sähköpostisi niin näet tulivatko lomakkeiden tiedot perille.
- CGI-ohjelma tuntee muutaman erityiskentän joiden toimintaa voit myös kokeilla:
- lahettajan_nimi-niminen (name-ominaisuus) kenttä tulee käsittelijän lähettämän sähköpostin lähettäjän nimeksi (engl. From)
- lomake_lahettaja-kenttä tulee käsittelijän lähettämän sähköpostin lähettäjän e-mail-osoitteeksi. Lomakkeen tiedot lähetetään kopiona myös lomakkeen täyttäjälle tässä kentässä olevaan osoitteeseen.
- Arvot voidaan määritellä seuraavien piilokenttien avulla.
<input type="hidden" name="lomake_lahettaja" value="email_osoite@palvelin.fi" /> <input type="hidden" name="lahettajan_nimi" value="Lähettäjän nimi" />
- Jos kysyt lomakkeella käyttäjältä sähköpostiosoitteen ja/tai nimen, niin voit käyttää edellisiä kenttiä piilottamattomina. Tällöin
sähköpostitse tulevassa viestissä näkyy lähettäjän sähköpostiosoite ja/tai lähettäjän nimi. Esimerkiksi:
<label for="nimi">Lomakkeen täyttäjän nimi:</label> <input type="text" id="nimi" name="lahettajan_nimi" value="Lähettäjän nimi" /> <label for="sposti">Lomakkeen täyttäjän sähköpostiosoite:</label> <input type="text" id="sposti" name="lomake_lahettaja" value="email_osoite@palvelin.fi" />
- Kenttää ei siis välttämättä tarvitse käyttää piilokenttänä!
SSI (Server Side Includes)
SSI-komennoilla voi lisätä WWW-sivuihin dynaamista toiminnallisuutta. WWW-palvelin tulkitsee xhtml-dokumenttiin upotetut komennot ennen sivun lähettämistä selaimelle. SSI-komentoja voi kokeilla Apache-WWW-palvelimissa eli atk-keskuksen WWW-palvelimilla (www.cc.jyu.fi ja people.cc.jyu.fi). www.it.jyu.fi on Microsoftin www-palvelin joten W:-asemalla olevissa dokumenteissa ei kannata SSI:tä kokeilla.
- Avaa SSH Secure File Transfer -SFTP-ohjelma Start | Program | SSH Secure Shell -valikosta.
- Ota yhteys people.cc.jyu.fi-palvelimeen. Valitse oikeanpuolimmaisesta näkymästä www-kansio.
- Luo www-kansion alle nanonano-kansio (Operation | New Folder) ja avaa se.
- Avaa W:-asemalta www-kansio ja siirrä koko hakemiston sisältö W-verkkolevyasemalta (vasen puoli) people-palvelimelle (oikea puoli).
- Aloita html-kitillä uusi tyhjä dokumentti (File | New | Blank
Text File). Kopioi tähän dokumenttiin Nanonanon kotisivun
navbar-osan lähdekoodi:
Tehdään tästä kaikille Nanonanon sivuille yhteinen navigointi, joka liitetään paikalleen SSI:n avulla. Muuta kaikki navigointipalkin linkit absoluuttisiksi jotta samat linkit toimivat millä tahansa sivulla atk-keskuksen www-palvelimelta. Esim:<div class="navbar"> <ul> <li><a href="artikkelit/">Artikkelit</a></li> <li>Galleria</li> <li>Harrastukset</li> <li><a href="linkit/">Linkit</a></li> <li><a href="opiskelu/">Opiskelu</a></li> <li>Työt</li> <li>Vieraskirja</li> </ul> </div>
<li><a href="http://www.cc.jyu.fi/~omatunnus/nanonano/artikkelit/">Artikkelit</a></li>
- Tallenna navigointipalkki navbar.html-nimelle.
- Siirrä navbar.html SFTP:llä samaan paikkaan kuin siirsit nanonanon sivuston
- Ota SSH:lla yhteys johonkin atk-keskuksen unix-koneeseen
- Siirry www/nanonano/-kansioon
- Muuta index.html-tiedostoa siten, että korvaat navbar-lohkon
seuraavalla html-kommentilla, joka toimii myös SSI-komentona:
<!--#include virtual="navbar.html"-->
- Muuta index.html-tiedoston nimeksi index.shtml.
-
Tavallisia .html-päätteisiä tiedostoja ei voida aina
automaattisesti parsia SSI-komentojen varalta koska se
olisi palvelimelle liian raskasta ja turhaa työtä. ATK-keskuksen Apache 2 -palvelin jakaa
.shtml-tiedostot text/xml-muodossa mikä ei
sovi kaikille selaimille ja validaattoreille. Luo
nanonano-hakemistoon uusi tekstitiedosto
.htaccess, johon lisäät seuraavat asetukset:
AddHandler Server-Parsed .shtml AddType text/html .shtml
Näillä asetuksilla .shtml-sivujen SSI-komennot tulevat käsitellyiksi palvelimella ja selaimet saadaan tulkitsemaan esiprosessoidut sivut html:ksi. - Muuta index.shtml-tiedoston CSS-viitettä siten, että se viittaa nanonano-hakemistossa olevaan demo2.css-tiedostoon.
- Kokeile selaimella miten nanonanon sivu toimii nyt atk-keskuksen www-palvelimelta:
http://www.cc.jyu.fi/~omatunnus/nanonano/
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.html-tiedostosta SSI-komennon kohdalle. - Varmista, että navigointipalkin linkit toimivat!
- Kokeillaan lisätä SSI:n avulla myös dokumentin muutosaika sivulle. Lisää index.shtml-tiedoston loppuun rivit:
<!--#config timefmt="%Y-%m-%e %T"--><!--#echo var="LAST_MODIFIED"-->
Ensimmäinen kommentti määrää SSI:n päivämäärämuotoilun ja jälkimmäinen aiheuttaa varsinaisen muutosajankohdan lisäämisen. Kokeile selaimella ilmestyikö muutosaika sivulle. - Lisää SSI:n avulla navigointipalkki ja muutosajankohta myös kaikille muille nanonanon sivuille niin saat keskitettyä navigoinnin ylläpidon yhteen tiedostoon. Muista tehdä oikeanlainen tiedostoviittaus navbar.html-tiedostoon nanonanon sivuston alihakemistoista. Muuta samalla myös CSS-viittaukset kuntoon. Muista myös nimetä tiedostot .shtml-päätteisiksi.
- Varmista W3C:n LinkChecker-ohjelmalla, että navigointilinkit toimivat varmasti kaikilla alasivuilla.
Edelleenohjaus
Monesti käy niin että dokumentit muuttavat paikkaansa ja saattaa olla hyvin vaivalloista muuttaa kaikkia niihin osoittavia linkkejä. Muiden tekemien linkkien muuttaminen on mahdotonta. Tällöin tulee ratkaisuksi edelleenohjaus jolla selain saadaan kulkeutumaan automaattisesti uuteen osoitteeseen.
- Muuta nanonanon opiskelu-kansion nimeksi opinnot.
- Voit kokeilla selaimella kuinka kaikki opiskelu-kansioon osoittaneet linkit rikkoutuivat edellisen muutoksen takia. Korjataan asia edelleenohjauksella
- Lisää nanonanon sivuston juuressa olevaan .htaccess-tiedostoon rivi:
Redirect permanent /~omatunnus/nanonano/opiskelu/ http://www.cc.jyu.fi/~omatunnus/nanonano/opinnot/
Edelleenohjattavan sivun (tiedoston) osoite kerrotaan absoluuttisesti palvelimen juuresta lukien. Uusi osoite pitää ilmoittaa kokonaisuudessaan. - Kokeile selaimella toimivatko linkit nyt.
- Jättämällä permanent-sana pois saataisiin tehtyä väliaikainen edelleenohjaus, jonka kohdalla esim. google säilyttää muistissaan alkuperäisen osoitteen mutta hakee sisällön uudesta osoitteesta.
- Tyypillisin esimerkki edelleenohjauksesta on WWW-palvelimien automaattisesti tekemä edelleenohjaus jos www-sivun osoite viittaa kansioon mutta osoitteesta jätetään pois viimeinen /-merkki. esim. annetaan osoitteeksi http://appro.mit.jyu.fi/2004/kevat/www/demot/demo8 eikä http://appro.mit.jyu.fi/2004/kevat/www/demot/demo8/. Ensimmäinen osoite viittaa demo8-nimiseen tiedostoon ja jos sitä ei löydy niin Apache edelleenohjaa automaattisesti demo8/-kansioon.
Salasanasuojaus
Suojaus salasanalla -mallivideo
Yksittäinen kansio on helppo suojata salasanalla.
- Suojataan nanonanon dokumentit salasanalla. Lisää artikkelit-kansioon
.htaccess-tiedosto ja kirjoita sinne:
AuthUserFile /foo/bar/tunnus/.users AuthGroupFile /dev/null AuthName ByPassword AuthType Basic <Limit GET> require valid-user </Limit>
AuthUserFile-kohtaan pitää kertoa hakemistopolku tiedostoon josta löytyvät käyttäjätunnukset ja salasanat. Tämä polku pitää tarkistaa WWW-palvelimesta eikä se siis onnistu esim. silmusta tai versosta.- Käytä jo olemassaolevaa ssh-yhteyttäsi ja ota ssh-yhteys atk-keskuksen www-palvelimeen:
ssh www.cc.jyu.fi
- Saatuasi yhteyden palvelimeen siirry www/nanonano/artikkelit/-kansioon
- Kirjoita komento pwd niin saat www-palvelimessa toimivan hakemistopolun. Polku on jokaisella käyttäjällä erilainen!
- Käytä jo olemassaolevaa ssh-yhteyttäsi ja ota ssh-yhteys atk-keskuksen www-palvelimeen:
- Laita oikea polku .htaccess-tiedostoon ja polun perään tiedostonnimeksi .users
- Luo käyttäjätunnus ja salasana komennolla:
htpasswd -c .users tunnus
- Lisää lukuoikeudet kaikille tiedostoon .users, niin palvelin pystyy lukemaan käyttäjätunnukset ja salasanat. Käyttäjätiedoston salasanat ovat kryptattuja, mutta salaamatonta yhteyttä käyttävään salasanavarmennukseen ei voi yksinään luottaa tärkeitä tietoja välitettäessä.
-
Jos sinulla ennestään on jo olemassa .users-tiedosto ja haluat lisätä siihen tunnuksia niin komento on:
htpasswd .users tunnus
- Kokeile kysyykö selain tunnusta ja salasanaa
- Tarkemmin hakemistojen suojaamisesta voi lukea atk-keskuksen ohjeesta.
Käyttäjien kommentit