Ero sivun ”Apache-harjoituksia” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
Ei muokkausyhteenvetoa
 
(27 välissä olevaa versiota 7 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
Kyseessä on OPEKO:n kurssille (30-31.1.2006 / Timo Kapanen) tehtyä materiaalia, josta on poistettu kuvat ja muita vain kurssille kuuluvaa materiaalia.
{{jakeluspesifinen}}
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.


Tarkoituksena on luoda 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:====
* 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/


Perustoimet
Ohjeet on kirjoitettu [[Redhat]]ia ajatellen. Joissakin kohdissa on myös kerrottu [[Debian]]issa tai muussa [[jakelu]]ssa tarvittavat versiot komennoista. Pienin muutoksin ohjeet soveltuvat myös muille jakeluille; lue tarvittaessa oman jakelusi [[GNU/Linuxin käynnistysprosessi#Pikkuisen init-skripteistä|käynnistysskripteistä]], [[ohjelmien asentaminen|ohjelmien asentamisesta]], käytettävistä [[tekstieditori|tekstieditoreista]], [[palomuuri]]n säätämisestä yms. httpd:n käyttämät hakemistot löytyvät asetustiedostosta hakemalla avainsanoja ServerRoot, DocumentRoot ja UserDir.


Asennus ja käynnistys
==Perustoimet==
Asenna apache:
yum install httpd


Käynnistä Apache:
===Asennus ja käynnistys===
service httpd start
*Asenna [[Apache httpd|Apache]] jakelun asennuskomennolla, esimerkiksi:
yum install httpd # RedHat tai
sudo apt-get install apache2 # Debian


Tarkista Apachen toimivuus selaimella (127.0.0.1)
*Käynnistä Apache:
service httpd start # RedHat tai
sudo /etc/init.d/apache2 start # Ubuntu


Oletussivun luominen
*Tarkista Apachen toimivuus selaimella (http://127.0.0.1 tai http://localhost)
Luo index.html /var/www/html/ hakemistoon:
touch /var/www/html/index.html


Kirjoita mc:llä sisältö.
*Muokkaa [[tekstieditori]]lla (esim. [[nano]]lla) sisältä. Tarkista toimivuus.
Tarkista toimivuus.


Mahdollista index.htm ja index.php
*Mahdollista index.htm ja index.php (vain RedHat, Ubuntussa ne ovat valmiina)
/etc/httpd/conf/httpd.conf rivi 375
/etc/httpd/conf/httpd.conf rivi 375


Käyttäjien kotihakemiston käyttöönotto
Rivinumerot vaihtelevat asetustiedoston versiosta toiseen RedHat:ssa.
rivi 339: #UserDir disable (lisää risuaita)
rivi 346: UserDir public_html (poista risuaita)


Käynnistä Apache uudestaan: service httpd restart
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 *''


Luo index.htm oppilas käyttäjän kotihakemistoon public_html nimiseen kansioon. Muuta kotihakemiston oikeuksiksi 711
*Käyttäjien kotihakemiston käyttöönotto:
Salasanasuojattujen hakemistojen tekeminen
rivi 339: #UserDir disable (lisää risuaita)
rivi 346: UserDir public_html (poista risuaita)


Kirjoita riviltä 383 alkaen seuraavat rivit:
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.
<Directory /home/oppilas/public_html/suojattu*>
AllowOverride AuthConfig
AuthUserFile /home/oppilas/public_html/.htpasswd
AuthType Basic
Require valid-user
</Directory>


Käynnistä httpd uudelleen
cd /etc/apache2/mods-enabled/
Tee public_html hakemistoon suojattu niminen alihakemisto
sudo ln -s ../mods-available/userdir.conf userdir.conf
Tee suojattu hakemistoon index.htm tiedosto
sudo ln -s ../mods-available/userdir.load userdir.load
Luo .htpasswd tiedosto ja määritä siihen käyttäjä ja salasana:
htpasswd -c .htpasswd mulonlupa
Muuta kyseinen tiedosto luettavaksi (chmod 644 .htpasswd)
Testaa


Mukautetun virheilmoituksen tekeminen
*Käynnistä Apache uudestaan:
service httpd restart # RedHat tai
sudo /etc/init.d/apache2 restart # Ubuntu


Mikäli käyttäjä painaa Cancel-painiketta salasanaa kysyttäessä, saa hän Authorization required virheilmoituksen (virhe 401). Muutetaan kyseinen ilmoitus toiseksi.
*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


Lisää riville 809 seuraava teksti:
mkdir ~oppilas/public_html
ErrorDocument 401 /eilupaa.htm
$EDITOR ~oppilas/public_html/index.html
chmod 711 ~oppilas/public_html
chmod a+r ~oppilas/public_html/index.html


Luo /var/www/html/eilupaa.htm tiedosto haluamillasi teksteillä
===Salasanasuojattujen hakemistojen tekeminen===
Käynnistä Apache uudestaan
Testaa


Palomuurin portin 80 avaaminen
*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:


Anna komento setup, siirry kohtaan firewall konfiguration ja valitse www.
<Directory /var/www/suojattu*>
Vaihtoehtoisesti lisää tiedostoon /etc/sysconfig/iptables rivi
AllowOverride AuthConfig
-A RH-Firewall-1-INPUT -m state NEW -m tcp -p tcp –dport 80 -j ACCEPT
AuthUserFile /var/www/suojattu/.htpasswd
ja anna sen jälkeen komento: service iptables restart
AuthType Basic
AuthName "Salasanaa vaativa hakemisto"
Require valid-user
</Directory>


Testaa (Kokeile naapurikoneesta)
*Käynnistä palvelin uudelleen
Rajoitetaan pääsy vain tietystä IP-osoitteesta
*Tee hakemistoon <tt>/var/www/</tt> alihakemisto nimeltä <tt>suojattu</tt>
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


Lisää riville 391 alkaen tekstit:
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 <tt>sudo chown www-data:www-data *</tt> ja <tt>sudo chmod 640</tt>
<Directory /home/oppilas/*>
Order deny.allow
Deny from all
Allow from sallittavan.koneen.ip.osoite
</Directory>


Käynnistä httpd uudestaan
===Mukautetun virheilmoituksen tekeminen===
Testaa
Kommentoi edellä tekemäsi muutokset
Käynnistä httpd uudestaan
Testaa


VirtualHost
*Mikäli käyttäjä painaa Cancel-painiketta salasanaa kysyttäessä, saa hän Authorization required virheilmoituksen (virhe 401). Muutetaan kyseinen ilmoitus toiseksi.


Lisää httpd.conf loppuun
*Lisää tiedostoon seuraava teksti
<VirtualHost 127.0.0.1>
ErrorDocument 401 /eilupaa.html
    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:
*Luo /var/www/eilupaa.html tiedosto haluamillasi teksteillä
# Use name-based virtual hosting.
*Käynnistä Apache uudestaan
#
*Testaa
NameVirtualHost 127.0.0.1


Uudelleen käynnistä Apache
Jotkut selaimet näyttävät omaa virheilmoitustaan http-palvelimen antaman ilmoituksen sijaan ("friendly error messages"). Muuta tarvittaessa selaimesi asetuksia.
Lisää asiakaskoneen /etc/hosts tiedostoon rivi
apache.palvelimen.ip.osoite wwwmalli.jee
testaa toimivuus


Webalizer statistiikka
===VirtualHost===


Asenna Webalizer
*Lisää httpd.confin loppuun (RedHat) tai sites-enabled-kansioon tiedostoon:
yum install webalizer
<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>


Anna komento webalizer
*sekä muuta:
# Use name-based virtual hosting.
NameVirtualHost apache.palvelimen.ip.osoite


Käynnistä Apache uudestaan
*Käynnistä Apache uudelleen
Testaa osoitteessa 127.0.0.1/usage
*Lisää asiakaskoneen /etc/hosts tiedostoon rivi:
apache.palvelimen.ip.osoite wwwmalli.jee
*Testaa toimivuus


Jos haluat mahdollistaa tilastojen näkymisen muillekin kuin 127.0.0.1:lle, niin poista rajoitukset tiedostosta /etc/httpd/conf.d/webalizer.conf
== Ongelmanratkaisuharjoitus: Piwik-tilastointi ==
Käynnistä Apache uudestaan
Testaa osoitteessa apache.palvelimen.ip.osoite/usage


Määritä webalizer automaattiseksi
Katso http://piwik.org/ - täytä ohjeet tähän.
Anna komento rootin kotihakemistossa:
crontab -e
ja lisää rivi
30 * * * * webalizer
(Insert mahdollistaa kirjoitustilan, esc lopettaa kirjoitustilan, :w tallentaa ja :q lopettaa)


Määritä Apache käynnistymää automaattisesti
Anna komento: chkconfig --level 35 httpd on (huomaa kaksi viivaa ennen level sanaa).


SELinuxista
==Webalizer statistiikka==


Jos SELinux käytössä joudut tekemään erilaisia muutoksia määrityksiin. Alla yksi esimerkki:
Asenna [[Webalizer]]
yum install webalizer # RedHat tai


Käytäjien kotikansioita varten tarvittavat muutokset:
*Anna komento webalizer
yum install system-config-securitylevel
Anna komento:
system-config-securitylevel
Tarkista, että rasti kohdassa Allow HTTPD to read home directories


Anna komento:
*Käynnistä Apache uudestaan
chcon -t httpd_sys_content_t /home/oppilas/public_html
*Testaa osoitteessa 127.0.0.1/usage


tee sama index.htm tiedostolle
*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


Lisätietoja osoitteesta:
*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 [[Debian]]in oletus[[ajotaso]]. Varmista, että numerot sopivat jakeluusi, esimerkiksi vertaamalla muihin käynnistysskriptihakemistossa oleviin palveluihin.
 
==SELinux==
 
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:
http://fedora.redhat.com/docs/selinux-apache-fc3/
http://fedora.redhat.com/docs/selinux-apache-fc3/


[[Luokka:Apache]]
[[Luokka:Apache]]
[[Luokka:Ohjeet]]
[[Luokka:Opetusmateriaalit]]

Nykyinen versio 4. maaliskuuta 2011 kello 18.59

Artikkeli soveltuu vain tietylle jakelulle vaikka sen tulisi käsitellä aihetta neutraalisti. Sitä tulisi muuttaa siirtämällä jakeluriippuvaiset yksityiskohdat Jakelukohtaista kappaleen alle - tai koko sivu kyseisen jakelun alasivuksi.

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]

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
  • 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:

http://fedora.redhat.com/docs/selinux-apache-fc3/