ITE1804 - Operativsystemer og tjenestedrift Øvingsoppgave 5
Installasjon og konfigurering av webtjeneren apache
Læreboken omhandler apache webtjener i kapittel 23, les
gjennom dette før lab og bruk som referanse/oppslag under labben.
Ubuntu dokumentasjon Apache installasjon
APT basert installasjon
Benytt apt for installering av apache webtjener og webalizer dersom disse ikke allerede er installert, sudo apt-get install apache2 webalizer gjør
susen ! . Sjekk at den kjører
ved å gå til http://localhost/ med en nettleser. Webalizer skal benyttes for å vise statistikk om
trafikk til webtjeneren, det tar vi litt senere.
Oppsett av webtjeneren
Apache konfigurasjon endres ved editering av
konfigurasjonsfilene i mappen /etc/apache2/. Ubuntu bewnytter konfigurasjonsfilen apache2.conf, denne inkluderer andre filer i samme mappe og undermapper. Filen vi skal gjøre endringer i er sites-available/000-default.conf. Ubuntu benytter som standard "Virtual hosts", foreløpig har vi kun en av disse, flere settes opp senere. Mange Linux distroer benytter httpd.conf som standard, dette benyttes også i læreboka. Vær oppmerksom på det. Slike forskjeller mellom ulike linux distroer er ikke uvanlig. Webmin
kan benyttes til konfigurering av Apache, men det kan være
noe vanskelig å finne fram pga. alle valg og opsjoner som tilbys.
Webdelinger
Hvilken som helst katalog kan deles ut på web, men vær klar
over at også alle underkataloger blir tilgjengelige. Se på filen sites-available/000-default.conf i mappen /etc/apache2/. Her er det satt opp at katalogen /var/www/ er standard webområde, DocumentRoot direktivet peker til denne katalogen, og katalogen er delt ut på web med Directory direktivet, delingen er gjort i filen apache2.conf. Du skal lage en ny webdeling og sørge for at denne er standard webområde for systemet ditt.
- Opprett mappen /home/www/ og
del denne ut på web slik at alle kan aksessere denne. Dette
gjøre ved å benytte <Directory> direktivet isites-available/000-default.conf filen, dette direktivet har en rekke opsjoner. En enkel variant
ser ut som følger:
<Directory
"/home/www">
AllowOverride None
Options Indexes
Require all granted
</Directory>
Alias /www "/home/www/"
- Her er området åpent for alle og alias www er satt opp for området.
- Opprett filen startsiden.html og legg inn følgende i filen <h1>Det virker !</h1>.
- Restart apache, må gjøres for hver endring, kommando service apache2 restart
- Gå til området http://localhost/www/ med en nettleser. Du burde få en oversikt over filene i mappen, se på startsiden.html.
- Option Indexes bestemmer om browsing av katalogen er påslått eller ikke. Dette innebærer at dersom det ikke eksisterer en startside (normalt index.htm/html/php) så vil apache tillate at katalogen browses, alle filene i katalogen listes ut. Dette kan medføre en sikkerhetsrisiko, men i enkelte tilfeller ønsker en seg dette. I pkt over fikk du en slik liste, dersom det ikke eksistere en startside.
- Fjern direktivet Options Indexes fra oppsettet over i sites-available/000-default.conf, restart Apache og prøv å aksessere den samme katalogen, hva skjer nå ?
- Kopier startsiden.html til index.html. Prøv å aksessere katalogen på nytt, og sammenlign med resultatet du fikk i puktet over.
Documentroot
Standard
webområde angis med direktivet DocumentRoot,dvs. at direktivet Documentroot peker til mappen som skal være startsiden/området for denne webtjeneren. For å sette opp sitt egen standard webområde kan en endre
Documentroot direktivet i config filen.
- Sett standard webområde til å være /home/www/
- Sjekk
att dette virker, du skal nå kunne få opp det samme området både med
aksess av din webtjener ved kun å angi adressen http://localhost/ og ved å angi http://localhost/www/.
Brukernes hjemmeområde
Brukerne kan normalt ha egne webområder, disse ligger lagret
i mappen public_html i hver brukers egen mappe. URL for aksess blit
systemnavn/~brukernavn. Slå på denne funksjonaliteten ved å følge oppskriften under. Test
så ut dette for en av brukerne dine.
- Ubuntu har to mapper under /etc/apache med navn modules-available og modules-enabled. Modulen Userdir tilbyr brukernes filer ut på web.
- UserDir modulen aktiveres enkelt med kommandoen a2enmod userdir. Apache må restartes deretter for at endringene skal bli aktive.
- Sjekk filen userdir.conf, her er det direktivet UserDir som settes til public_html, og alle public_html katalogene blir automatisk satt opp som webdelinger. Dette skjer i direktivet <Directory> for
public_html katalogene, her der du katalogspesifikasjonen for hvor public_html mappen forventes å ligge. AllowOverride AuthConfig er lagt inn på public_html , dermed kan brukeren selv styre aksessen til mappen ved hjelp av en .htaccess fil, dette ser vi på litt senere.
- Opprett mappen public_html i hjemmekatalog for brukeren din og legg inn
en fil der med navn index.html.
- Gå
til adressen http://localhost/~ditt-brukernavn og verifiser at du får opp
filen. Brukeren har nå sitt private webområde som er åpent for alle, vi
skal senere begrense aksessen til dette området.
Begrensning av aksess
Begrensing av aksess basert på IP-nummer for klient
gjøres ved å legge inn IP-nummer evt. IP-nett som
har aksess til webområde, evt. som stenges ute fra
webområde. Se læreboka s. 90-91
- <Directory> direktivet benyttet over kan
modifiseres til å inneholde IP adresser som
angir hvem som får tilgang, f.eks.
<Directory
"/home/www">
AllowOverride None
Options Indexes
Require ip 127.0.0.1
</Directory>
- Verifiser at du får aksess til webområdet fra
en
webleser fra ditt system, benytt adresse http://127.0.0.1/. Har du kun konsolltilgang benytt kommandoen wget http://127.0.0.1/ og verifiser at du får lastet ned filen index.html. Prøv deretter å aksessere
webområdet fra Windows, f.eks. http://din-IP-adresse/. Du må da benytte den eksterne IP adressen til Linux systemet, benytt kommandoen ifconfig på Linux for å finne IP adressen. Spørsmål:
Fungerer begrensningene ?
Hvilken
feilmelding får du ?
- Fjern IP begrensningene når du har verifisert at
dette
virker.
- Du skal nå teste aksess basert på brukernavn og
passord. Du må opprette en .htaccess fil i den
katalogen som skal beskyttes. Vi skal her beskytte en mappe med navn lukket under public_html katalogen til brukeren din.
- .htaccess filen inneholder en peker til
en passord database og den inneholder de brukerne som har aksess til
området.Programmet htpasswd benyttes for å opprette passord
databasen og legge inn brukere og passord. Passord databasen skal ikke
ligge på et område som er tilgjengelig fra web.
- Hver bruker kan ha sin passordfil, opprette en passordfil i hjemmekatalog til din bruker med kommando htpasswd -c /home/ditt-brukernavn/.htpasswd student. Denne kommandoen oppretter passordfilen .htpasswd i din hjemmekatalog og legger inn brukeren med navn student. Angi passordet for student brukeren.
- Apache webtjener må ha leseaksess til denne filen
- Opprett mappen lukket under brukeren din sin public_html mappe og opprett en .htaccess fil i denne mappen, filen skal inneholde følgende:
AuthName "Min lukkede mappe"
AuthType Basic
AuthUserFile /home/ditt-brukernavn/.htpasswd
require user student
student er her brukernavnet for den brukeren som skal ha aksess.
- Prøv å
aksesser webområdet nå. Spørsmål:
Hva skjer ?
- Prøv å logge deg på med en gyldig og
ugyldig bruker og verifiser at du får tilgang/ikke tilgang.
Loggfiler
Apache logger all trafikk som standard, feilmeldinger logges
også. Filene ligger i mappen /var/log/apache2/. Se på access.log filen, her ser du all aksess av webområdet og hvilke webdokumenter som
er forespurt.
- Sjekk loggfilen for webtjeneren.
- Beskriv hvilken informasjon som logges for hver klient som aksesserer webtjeneren.
- Hvilke
feilmeldinger inneholder denne for brukeren som
ikke fikk tilgang i oppgaven over ?
Installajson av PHP modul
Installer php7 og php7 apache modulen ved hjelp av apt. Benytt følgende kommandoer:
apt-get install php7.0 libapache2-mod-php7.0
Restart Apache
og sjekk at PHP virker ved hjelp av et lite skript som starter
funksjonen phpinfo(). Opprett filen phpinfo.php i mappen /home/www/. Test deretter dette ved å aksessere http://localhost/phpinfo.php. Du
skal da få opp informasjon om PHP miljøet på
systemet.
Innhold i filen phpinfo.php:
<?php
phpinfo();
?>
Spørsmål:
- PHP virker sannsynlig uten problemer, hvordan kan dette ha seg ? (Restart Apache dersom PHP skriptet ikke kjører.)
- Hvilken fil er det som laster støtte for PHP i Apache. Tips: Se i mappen modules-available/
- Hva er navnet på modulen som lastes ?
Statistikk over bruk (frivillig)
Webalizer kan benyttes for å hente ut statistikk over bruk av
webområdet, de som har lyst kan prøve dette.
Webalizer er installert med apt, det som må gjøres er fortelle
webalizer hvor aksessfilene til apache ligger, dette gjøres i .conf
filen for webalizer. Deretter kjøres kommando webalizer, denne produserer .html filer over statistikk for din webtjener.
Besvarelse
Alle og filer opprettet/endret leveres i et PDF dokument, følgende inkluderes i dokumentet: NB! Ikke som vedlegg.
- alle .conf filer du har opprettet/endret
- .htaccess & .htpasswd filene
- En beskrivelse av apache installasjonen med eventuelle problemer/utfordringer