Apache-harjoituksia
Tarkoituksena on pystyttää oppilaitoksen (yrityksen) www-palvelin, johon tulee niin oppilaitoksen (yrityksen) kuin oppilaiden (työntekijöiden) kotisivut. Mahdollistetaan salasanasuojattujen hakemistojen tekeminen, määritetään mukautetut virheilmoitukset, tarkastellaan palvelimelle pääsyn rajoittamista, tutkitaan miten virtualHost määritteet toimivat ja lopuksi tutkitaan miten saadaan helposti luotua raportteja sivustojen käytöstä webalizerin avulla.
Taustatietoa Internetin toiminnasta:[muokkaa]
- karttoja: http://www.telegeography.com/
- mitä tapahtuu kun avaa www-sivun: http://prezi.com/gks10schfggg/i-made-a-map-of-the-internet-and-other-lessons-about-speeding-up-web-sites/
- Analysoi itse mitä tapahtuu kun selain avaa www-sivun: http://getfirebug.com/
Ohjeet on kirjoitettu Redhatia ajatellen. Joissakin kohdissa on myös kerrottu Debianissa tai muussa jakelussa tarvittavat versiot komennoista. Pienin muutoksin ohjeet soveltuvat myös muille jakeluille; lue tarvittaessa oman jakelusi käynnistysskripteistä, ohjelmien asentamisesta, käytettävistä tekstieditoreista, palomuurin säätämisestä yms. httpd:n käyttämät hakemistot löytyvät asetustiedostosta hakemalla avainsanoja ServerRoot, DocumentRoot ja UserDir.
Perustoimet[muokkaa]
Asennus ja käynnistys[muokkaa]
- Asenna Apache jakelun asennuskomennolla, esimerkiksi:
yum install httpd # RedHat tai sudo apt-get install apache2 # Debian
- Käynnistä Apache:
service httpd start # RedHat tai sudo /etc/init.d/apache2 start # Ubuntu
- Tarkista Apachen toimivuus selaimella (http://127.0.0.1 tai http://localhost)
- Muokkaa tekstieditorilla (esim. nanolla) sisältä. Tarkista toimivuus.
- Mahdollista index.htm ja index.php (vain RedHat, Ubuntussa ne ovat valmiina)
/etc/httpd/conf/httpd.conf rivi 375
Rivinumerot vaihtelevat asetustiedoston versiosta toiseen RedHat:ssa.
Ubuntussa (ja muissa Debian-pohjaisissa jakeluissa) tiedosto httpd.conf on tyhjä, koska kaikki asetukset on pilkottu useampaan tiedostoon kansion /etc/apache2/ alla. Jos haluat löytää tietyn asetuksen, kokeile /etc/apache2 -hakemisossa ajaa hakukomentoa grep -R hakusana *
- Käyttäjien kotihakemiston käyttöönotto:
rivi 339: #UserDir disable (lisää risuaita) rivi 346: UserDir public_html (poista risuaita)
Ubuntussa UserDir-määrittely on valmiiksi olemassa tiedostossa /etc/apache2/mods-available/userdir.conf. Se otetaan käyttöön tekemällä siihen symbolinen linkki kansioon /etc/apache2/mods-enabled/, kuten myös userdir.load-tiedostolle.
cd /etc/apache2/mods-enabled/ sudo ln -s ../mods-available/userdir.conf userdir.conf sudo ln -s ../mods-available/userdir.load userdir.load
- Käynnistä Apache uudestaan:
service httpd restart # RedHat tai sudo /etc/init.d/apache2 restart # Ubuntu
- Luo index.html käyttäjän "oppilas" kotihakemistoon public_html nimiseen kansioon (korvaa tarvittaessa $EDITOR käyttämälläsi tekstieditorilla). Muuta kotihakemiston oikeuksiksi 711 ja anna vastaavasti kaikille lukuoikeus tiedostoon index.html
mkdir ~oppilas/public_html $EDITOR ~oppilas/public_html/index.html chmod 711 ~oppilas/public_html chmod a+r ~oppilas/public_html/index.html
Salasanasuojattujen hakemistojen tekeminen[muokkaa]
- Kirjoita riviltä 383 alkaen (RedHat:ssa, mikäli rivinumerointi yllä täsmäsivät ja tämäkin vaikuttaa oikealta) seuraavat rivit tai Ubuntussa laita teksti tiedostoon httpd.conf:
<Directory /var/www/suojattu*> AllowOverride AuthConfig AuthUserFile /var/www/suojattu/.htpasswd AuthType Basic AuthName "Salasanaa vaativa hakemisto" Require valid-user </Directory>
- Käynnistä palvelin uudelleen
- Tee hakemistoon /var/www/ alihakemisto nimeltä suojattu
cd /var/www/ mkdir suojattu
- Luo kansioon .htpasswd tiedosto ja määritä siihen käyttäjä ja salasana:
cd suojattu sudo htpasswd -c .htpasswd tunnus
- Testaa
Apachen asetuksissa on yleensä kielto näyttää .ht-alkuisia tiedostoja. Tämä suojaus ei kuitenkaan estä muita järjestelmän käyttäjiä lukemasta tiedostoa. Parempi on määrätä tiedoston ryhmäksi se ryhmä, jona palvelin ajetaan, ja antaa lukuoikeus vain omistajalle ja ryhmälle eli sudo chown www-data:www-data * ja sudo chmod 640
Mukautetun virheilmoituksen tekeminen[muokkaa]
- Mikäli käyttäjä painaa Cancel-painiketta salasanaa kysyttäessä, saa hän Authorization required virheilmoituksen (virhe 401). Muutetaan kyseinen ilmoitus toiseksi.
- Lisää tiedostoon seuraava teksti
ErrorDocument 401 /eilupaa.html
- Luo /var/www/eilupaa.html tiedosto haluamillasi teksteillä
- Käynnistä Apache uudestaan
- Testaa
Jotkut selaimet näyttävät omaa virheilmoitustaan http-palvelimen antaman ilmoituksen sijaan ("friendly error messages"). Muuta tarvittaessa selaimesi asetuksia.
VirtualHost[muokkaa]
- Lisää httpd.confin loppuun (RedHat) tai sites-enabled-kansioon tiedostoon:
<VirtualHost apache.palvelimen.ip.osoite> ServerAdmin webmaster@wwwmalli.jee DocumentRoot /home/oppilas/public_html ServerName wwwmalli.jee ServerAlias www.wwwmalli.jee ErrorLog logs/wwwmalli.jee-error_log CustomLog logs/wwwmalli.jee-access_log common </VirtualHost>
- sekä muuta:
# Use name-based virtual hosting. NameVirtualHost apache.palvelimen.ip.osoite
- Käynnistä Apache uudelleen
- Lisää asiakaskoneen /etc/hosts tiedostoon rivi:
apache.palvelimen.ip.osoite wwwmalli.jee
- Testaa toimivuus
Ongelmanratkaisuharjoitus: Piwik-tilastointi[muokkaa]
Katso http://piwik.org/ - täytä ohjeet tähän.
Webalizer statistiikka[muokkaa]
Asenna Webalizer
yum install webalizer # RedHat tai
- Anna komento webalizer
- Käynnistä Apache uudestaan
- Testaa osoitteessa 127.0.0.1/usage
- Jos haluat mahdollistaa tilastojen näkymisen muillekin kuin 127.0.0.1:lle, niin muuta rajoituksia tiedostossa /etc/httpd/conf.d/webalizer.conf
- Käynnistä Apache uudestaan
- Testaa osoitteessa apache.palvelimen.ip.osoite/usage
- Määritä webalizer automaattiseksi
- Anna komento rootin kotihakemistossa:
crontab -e ja lisää rivi 30 * * * * webalizer
Editori on vim, jossa insert mahdollistaa kirjoitustilan, esc lopettaa kirjoitustilan, :w tallentaa ja :q lopettaa. Voit käyttää muuta editoria määrittelemällä ympäristömuuttuja EDITOR, kertaluonteisesti korvaamalla crontab-komento komennolla
env EDITOR=suosikkieditorisi crontab -e
- Määritä Apache käynnistymään automaattisesti. Muuta järjestelmän käynnistysskriptejä jakeluusi sopivalla tavalla, esimerkiksi:
chkconfig --level 35 httpd on (huomaa kaksi viivaa ennen level sanaa).
ln -s /etc/init.d/apache /etc/rc2.d/S35apache
Numero 35 määrittää missä kohtaa käynnistymistä httpd on käynnistettävä. Numero 2 on Debianin oletusajotaso. Varmista, että numerot sopivat jakeluusi, esimerkiksi vertaamalla muihin käynnistysskriptihakemistossa oleviin palveluihin.
SELinux[muokkaa]
Jos SELinux käytössä joudut tekemään erilaisia muutoksia määrityksiin. Alla yksi esimerkki
- Käytäjien kotihakemistoja varten tarvittavat muutokset:
yum install system-config-securitylevel # RedHat
- Anna komento:
system-config-securitylevel # RedHat
- Tarkista, että rasti kohdassa Allow HTTPD to read home directories
- Anna komento:
chcon -t httpd_sys_content_t /home/oppilas/public_html # RedHat
- Tee sama index.htm tiedostolle
- Lisätietoja osoitteesta: