Apache HTTP-palvelin

APACHE HTTPD KOULUTUSTA VUONNA 2025!

Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi heti! Koulutuksen järjestää asiantuntijasi Koulutus- ja konsultointipalvelu KK Mediat.

Apachen virtuaalipalvelimet

Apache tukee virtuaalipalvelinmäärityksiä, joiden avulla yksi HTTP-palvelin voi palvella useita verkkotunnuksia sekä alidomaineja. Apachen virtuaalipalvelimet voivat perustua nimipohjaisiin tai IP-pohjaisiin virtuaalipalvelinmäärityksiin. Useimmiten käytössä ovat nimipohjainen virtuaalipalvelimet, jolloin kaikki sivustot jakavat saman IP-osoitteen.

Nimipohjaiset virtuaalipalvelimet

Nimipohjaiset virtuaalipalvelimet luottavat asiakkaan välittämään isäntänimeen IP-osoitteen sijasta. Tätä tekniikkaa käyttämällä, useat palvelut voivat jakaa saman IP-osoitteen. Nimipohjaisen virtuaalipalvelimen perustaminen on myös usein helppoa, koska nimipalvelin tarvitsee mapata vain yhdistämään isäntänimi oikeaan IP-osoitteeseen. Apache hoitaa loppuosan.

Jotta nimipohjaisia virtuaalipalvelimia voitaisiin käyttää, täytyy Apachelle kertoa mitä IP:tä kuunneella. Tämä määritellään ominaisuudella NameVirtualHost. Yleensä ominaisuuden arvoksi merkitään asteriks (*), joka tarkoittaa että kaikki IP-osoitteet ovat kelvollisia. Voimme antaa arvoksi myös IP-osoitteen.

Seuraava askel on luoda <VirtualHost>-lohko, jossa määritellään virtuaalipalvelin. Jokaisen lohkon sisällä tulisi määritellä vähintään virtuaalipalvelimen nimi ominaisuudella ServerName ja sivuston julkaisukansio ominaisuudella DocumentRoot. Esimerkki:

NameVirtualHost *
<VirtualHost *>
  ServerName www.2kmediat.com
  DocumentRoot /www/2k
</VirtualHost>

<VirtualHost *>
  ServerName yritys.2kmediat.com
  DocumentRoot /www/corp/
</VirtualHost>


Apache tarkistaa IP-osoitteen perusteella, sopiiko se NameVirtualHost-määritykseen. Tämän jälkeen se etsii ServerName- tai ServerAlias-määrityksen perusteella oikean konfiguraation. Jos osumaa ei löydy, käytetään listan ensimmäistä virtuaalipalvelinta oletuksena.

IP-pohjaiset virtuaalipalvelimet

IP-pohjaisissa virtuaalipalvelinmäärittelyissä osalla tai kaikilla palvelulla on toisistaan eroava IP-osoite. Tällaisessa tilanteessa Apache voidaan konfiguroida joko suorittamaan erillinen httpd daemon jokaiselle isäntänimelle tai käyttämään yhtä jaettua daemonia, joka käsittelee kaikki isäntänimet.

Keskitymme tässä tarkastelemaan jälkimmäistä tapaa, jolloin konfigurointi tapahtuisi seuraavasti:


<VirtualHost 192.168.1.100>
  ServerAdmin webmaster@2kmediat.com
  DocumentRoot /www/2k
  ServerName www.2kmediat.com
  ErrorLog /logs/error2k_log
  TransferLog /logs/access2k_log
</VirtualHost>

<VirtualHost  192.168.1.101>
  ServerAdmin webmaster@2kmediat.com
  DocumentRoot /www/corp 
  ServerName www.2kmediat.com
  ErrorLog /logs/errorCorp_log
  TransferLog /logs/accessCorp_log
</VirtualHost>


Staging- ja tuotantoympäristöt virtuaalipalvelimien avulla

Virtuaalipalvelimien avulla voidaan helposti erottaa staging- eli testipalvelin tuotantoversiosta. Esimerkiksi:


<VirtualHost *:80>
    ServerName staging.yritys.fi
    DocumentRoot /var/www/staging
</VirtualHost>

<VirtualHost *:80>
    ServerName www.yritys.fi
    DocumentRoot /var/www/production
</VirtualHost>


Tämä rakenne mahdollistaa uuden version testaamisen ilman, että se vaikuttaa loppukäyttäjiin. Lisäksi voidaan käyttää erillisiä virhelokeja ja ympäristömuuttujia stagingin ja tuotannon välillä.

Virtuaalipalvelimien konfiguraation hajauttaminen

Yksittäisellä Apache-palvelimella voi olla jopa satoja erilaisia virtuaalipalvelimia. Tällöin hallintaa voidaan helpottaa hajauttamalla vHostien-konfiguraatio erillisiin tiedostoihin. Esimerkiksi:


# httpd.conf
IncludeOptional sites-enabled/*.conf


Tämän jälkeen jokainen sivusto voi olla omassa tiedostossaan, esim. sites-enabled/yritys.conf. Tämä rakenne parantaa ylläpidettävyyttä ja mahdollistaa automaattisen sivustojen hallinnan skriptien avulla.