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.