Apache-harjoituksia

Linux.fista
Versio hetkellä 4. maaliskuuta 2011 kello 17.18 – tehnyt Otto (keskustelu | muokkaukset) (→‎Asennus ja käynnistys)
Siirry navigaatioon Siirry hakuun

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.

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.

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

Asennus ja käynnistys

  • 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 (RedHat)
/etc/httpd/conf/httpd.conf rivi 375
  • Käyttäjien kotihakemiston käyttöönotto:
rivi 339: #UserDir disable (lisää risuaita) 
rivi 346: UserDir public_html (poista risuaita) 

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/httpd/ alla. Jos haluat löytää tietyn asetuksen, kokeile /etc/httpd -hakemisossa ajaa hakukomentoa grep -R hakusana *

  • Käynnistä Apache uudestaan:
service httpd restart # RedHat tai
sudo /etc/init.d/apache2 restart # Ubuntu
  • Luo index.htm 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.htm
mkdir ~oppilas/public_html
$EDITOR ~oppilas/public_html/index.htm
chmod 711 ~oppilas/public_html
chmod a+r ~oppilas/public_html/index.htm

Salasanasuojattujen hakemistojen tekeminen

  • Kirjoita riviltä 383 alkaen (mikäli rivinumerointi yllä täsmäsivät ja tämäkin vaikuttaa oikealta) seuraavat rivit
<Directory /home/oppilas/public_html/suojattu*>
AllowOverride AuthConfig
AuthUserFile /home/oppilas/public_html/.htpasswd 
AuthType Basic
AuthName “Salasanaa vaativa hakemisto�?
Require valid-user
</Directory>
  • Käynnistä httpd uudelleen
  • Tee hakemistoon public_html alihakemisto nimeltä suojattu
  • Tee suojattuun hakemistoon tiedosto index.htm
  • Luo .htpasswd tiedosto ja määritä siihen käyttäjä ja salasana:
htpasswd -c .htpasswd mulonlupa
  • Muuta kyseinen tiedosto luettavaksi (chmod 644 .htpasswd)
  • Testaa

httpd:n 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 httpd ajetaan, ja antaa lukuoikeus vain omistajalle ja ryhmälle eli chmod 640

Mukautetun virheilmoituksen tekeminen

  • Mikäli käyttäjä painaa Cancel-painiketta salasanaa kysyttäessä, saa hän Authorization required virheilmoituksen (virhe 401). Muutetaan kyseinen ilmoitus toiseksi.
  • Lisää riville 809 seuraava teksti
ErrorDocument 401 /eilupaa.htm
  • Luo /var/www/html/eilupaa.htm tiedosto haluamillasi teksteillä
  • Käynnistä Apache uudestaan
  • Testaa

Jotkut selaimet näyttävät omaa virheilmoitustaan httpd-palvelimen antaman ilmoituksen sijaan ("friendly error messages"). Muuta tarvittaessa selaimesi asetuksia.

Palomuurin portin 80 avaaminen

Anna komento setup, siirry kohtaan firewall konfiguration ja valitse www. Vaihtoehtoisesti lisää tiedostoon /etc/sysconfig/iptables (ennen COMMIT-riviä) rivi:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

ja anna sen jälkeen komento: service iptables restart

Jos käytössäsi on muu palomuurin asetustensäätöohjelma tai -tiedosto, käytä sitä tekemään vastaava muutos. Yhteydet voidaan sallia myös rajoitetuista verkoista määritteellä --source.

Testaa (Kokeile naapurikoneesta)

  • Rajoitetaan pääsy vain tietystä IP-osoitteesta
  • Lisää riville 391 alkaen tekstit:
<Directory /home/oppilas/*>
Order deny.allow
Deny from all
Allow from sallittavan.koneen.ip.osoite
</Directory>
  • Käynnistä httpd uudestaan
  • Testaa
  • Kommentoi edellä tekemäsi muutokset
  • Käynnistä httpd uudestaan
  • Testaa

VirtualHost

  • Lisää httpd.confin loppuun
<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

Katso http://piwik.org/ - täytä ohjeet tähän.


Webalizer statistiikka

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

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/