Apache HTTP Server

Assemblix wiki

Loikkaa: valikkoon, hakuun
Tämä artikkeli tai osio on keskeneräinen. Voit auttaa täydentämällä artikkelia.
Apache HTTP Server
Kehittäjä: Apache Software Foundation
Uusin versio: 2.2.9
13.6.2008
Käyttöjärjestelmä: Useita
Lisenssi: Apache License
Kotisivu http://httpd.apache.org/

Avoimen lähdekoodin WWW-palvelin. Vastaa LAMP-lyhenteen kirjainta A.

Sisällysluettelo

[muokkaa] Yleistä

Apache HTTP Server, tuttavallisesti pelkkä Apache, on eniten käytetty web-palvelinohjelmisto.

Apachea edelsi Unix-pohjainen NCSA httpd, jolla oli keskeinen rooli webin alkuaikoina 1990-luvun alussa.

Ryhmä ohjelmoijia alkoi muokata NCSA:n palvelinta omalla ajallaan, ja muodosti oman kehityshaaran nimeltä Apache. Nimivalinnan taustalla ei ollut mitään syvällisempää logiikkaa [1]. Myöhemmin kuitenkin huomattiin, että se muistuttaa patch-sanaa joka sopi myös kehitystiimin paikkaushenkiseen ohjelmointityyliin. Vaikka Apache-nimen valinta oli pelkkä sattuma, kerrotaan monessa lähteessä yhä että Apache olisi väännös sanoista "a patchy server" eli "paikattu palvelinsofta".

Myöhemmin Apachesta on tehty versioita eri käyttöjärjestelmille, mukaanluettuna Windowsille ja Mac OS X:lle. Windows-version porttaus syntyi irrottamalla peruskoodista oma haaransa ja "paikkaamalla" sitä Windows-pohjaisilla kutsuilla.

[muokkaa] Versiot

Ensimmäinen Apachen versio 0.2 julkaistiin 18.3.1995 [2]. Toiminnallisesti tämä vastasi NCSA httpd:n versiota 1.3. Kesällä 1995 ilmestyi ensimmäinen merkittävä uudelleenkirjoitettu versio jossa oli uutuutena mm. moduuliarkkitehtuuri.

Apache 1.0 ilmestyi 23. marraskuuta 1995. Versioon 1.1 lisättiin HTTP 1.1:n keep-alive -tuki, joka nopeutti palvelimen toimintaa jopa 50 prosentilla [3]. Apache 1.2:een mennessä Apacheen toteutettiin loput HTTP 1.1:n laajennukset. Asetustiedostojen syntaksia pyrittiin pitämään edelleen yhteensopivana NCSA httpd:n kanssa[4].

Apache 1.3 oli suuri päivitys, joka rikkoi yhteensopivuuden vanhempiin versioihin. Apache 1.3 toi dynaamisten kirjastojen tuen ja ensimmäisen Windows-version [5].

Apachea kehitetiin pitkään paikkaamalla alkuperäistä 1.x-pohjaista koodia, mutta vanhan koodiarkkitehtuurin rajat tulivat vastaan. Ongelmallisimmaksi koettiin monoliittinen ydin, jota oli vaikea sovittaa eri käyttöjärjestelmille. Apache-kehittäjät päättivät luoda kokonaan uuden, modulaarisen 2.0-versiohaaran.

Kakkosversion keskeisiä uudistuksia ovat parantunut alustariippumattomuus ja kehittyneempi prosessiarkkitehtuuri [6].

Apache 2.2 ilmestyi 2. joulukuuta 2005. Tässä versiossa oli mukana uusin Apache Portable Runtime -kirjasto ja suorituskykyä parantavia optimointeja.

[muokkaa] Apache Portable Runtime

Apache httpd:n 2.0-versiosta eteenpäin peruslogiikan sisältävä koodi on kaikille käyttöjärjestelmäversioille yhteistä. Alustariippuvainen, suoraan käyttöjärjestelmän kanssa keskusteleva koodi on eristetty Apache Portable Runtime -kirjastoon (APR).

Koska Apachen 2.0-versiosta eteenpäin vain ydinkoodi on käyttöjärjestelmäkohtaista, selkeytyy korjausten kohdistus ja versiohallinta.

Apache httpd:n 1.x-versiossa käyttöjärjestelmäkohtaiset jakelut ovat hankaloittaneet tietoturvavikojen korjaamista. Windows-versiosta löytyneet viat eivät ole välttämättä koskettaneet Unix-versiota ja päinvastoin.

APR on yleiskäyttöinen porttauskirjasto eikä sitä ole sidottu pelkästään httpd web-palvelimeen. APR tarjoaa C-ohjelmoijalle käyttöjärjestelmästä riippumattoman rajapinnan verkkoliikenteeseen, muistin ja prosessien hallintaan sekä tiedostojen käsittelyyn.

APR:ää on kehitetty usean vuoden ajan ja se on portattu tähän mennessä eri Unix-versioihin, Windowsiin, BeOS:ään ja Novell Netwareen. Jokainen uusi APR-porttaus tarkoittaa käytännössä uutta alustaa Apache httpd:n tukemien käyttöjärjestelmien listaan.

[muokkaa] Prosessimallit

Apache httpd:n 1.x-sarjaa on kritisoitu sen heikosta skaalautumisesta. Apache httpd 1.3 käyttää jokaista tulevaa HTTP-pyyntöä varten omaa prosessia, joka käsittelee pyynnön ja palauttaa vastauksen.

Linuxissa prosessit ovat muihin Unix-johdannaisiin verrattuna kevyitä. Windowsissa ja muissa prosesseja raskaammin käsittelevissä käyttöjärjestelmissä kuten IBM:n AIX:ssä ratkaisu on kuitenkin kostautunut heikkona suoritustehona.

Erillisillä prosesseilla toteutettu pyyntökäsittely on turvallisuuden ja vakauden kannalta hyvä ratkaisu, koska vaihtoehtoisessa eli säiepohjaisessa toteutuksessa huonosti käyttäytyvä koodi voi helposti kaataa koko palvelimen.

Säikeet ovat nopeampia ja kuluttavat vähemmän muistia, mutta niitä ei valitettavasti tueta kaikissa käyttöjärjestelmissä.

Apache 2.0:n toteutuksessa on haluttu tarjota vaihtoehto kaikkiin ympäristöihin, joten uusi Multi-Processing Modules -arkkitehtuuri tukee useita erilaisia prosessointimoduuleita.

Unix-versioissa käytetään oletuksena 1.3-versiosta tuttua prefork-moduulia, mutta tilalle voidaan käännettäessä valita tehokkaampi worker-moduuli. Worker on hybridi, joka käyttää sekä säikeitä että prosesseja. Ratkaisulla on haluttu turvata vakaus mutta hyödyntää myös säieoptimointia

[muokkaa] Lähteet

  1. ^ What's the Story Behind Apache? Linux Journal
  2. ^ Changes with Apache 2.2.4 Apache Software Foundation
  3. ^ New Features with Apache 1.1 Apache Software Foundation
  4. ^ New Features with Apache 1.2 Apache Software Foundation
  5. ^ Overview of New Features in Apache 1.3 Apache Software Foundation
  6. ^ Overview of new features in Apache 2.0 Apache Software Foundation

[muokkaa] Linkkejä

Henkilökohtaiset työkalut