Seminaarityö Opintojakso: Opettaja: A241227 Linux-järjestelmät Tomi Pahula Opintojakson toteutus: Syksy 2011 Opiskelijaryhmä: Opiskelija: TI09OHJ Pavel Savushkin Raportti palautettu: 02.11.2011 Seminaarityön aihe: Apache WWW-palvelin
2 SISÄLLYSLUETTELO: 1 Apache historia... 3 2 Palvelimen toiminta... 6 3 Apache-palvelimen ajoympäristöt... 7 4 Tärkeimmät ominaisuudet... 8 5 Asentaminen ja konfigurointi... 9 6 Apache-palvelimen rakenne... 12 HTTPD.CONF -ASETUSTIEDOSTO... 12 SRM.CONF -ASETUSTIEDOSTO... 15 7 Apache 1.3:sen erot 2.0:aan... 17 Lähteet... 18
3 1 Apache historia Nykyisin Apache- ohjelmistosäätiönä tunnettu yritys aloitti toimintansa vuonna 1995 Apache ryhmä nimen alla. Tämä ryhmä koostui joukosta Internet sivustojen ylläpitäjiä, jotka perustivat postituslistan sen jälkeen kun HTTP Daemonin virallinen kehitys keskeytyi vuoden 1994 aikana. Apache ryhmän jäsenet halusivat koordinoida tekemänsä muutokset ja lisäosat HTTP Daemoniin, sekä saattaa ne yleiseen levitykseen ylläpitäjien keskuudessa. Kehitystyön jatkuessa keskeisiksi jäseniksi nousivat Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew Wilson myos Eric Hagberg, Frank Peters ja Nicolas Pioch osallistuivat ryhmän projekteihin. Ensimmäinen virallinen versio (0.6.2) Apache palvelimesta julkaistiin huhtikuussa 1995, se käytti pohjanaan NCSA http (National Center for Supercomputing Applications) versiota 1.3. Näihin aikoihin myös NCSA:ssa aloitettiin http palvelimien kehitys uudelleen. Apache oli kerännyt jo suurta suosiota ylläpitäjien keskuudessa ja osa NCSA:n kehittäjistä liittyi Apache ryhmään kunniajäseninä jakamaan ideoita näiden kahden projektin välillä. Nykyisin Apachea kehittävät tuhannet vapaaehtoiset ohjelmoijat eri maista. Http palvelinohjelmistojen lisäksi Apache on tuottanut lukuisia onnistuneita projekteja kuten ActiveMQ. ActiveMQ on välikasiohjelma joka kääntää tiedon lähettäneen ohjelman viestiprotokollan viestin vastaanottavan ohjelman viestiprotokollan mukaiseksi. Kaiken kaikkiaan Apache software foundation on ollut osallisena lähes 140 projektissa, jotka ovat tuoneet palvelinohjelmistot kaikkien saataville. Viimeisimmän tutkimusotoksen perusteella Apachen palvelin ohjelmisto hallitsee markkinoita täysin. Otokseen vastanneista lähes 100 miljoonaa Internet-sivua käytti Apachea, tämä vastaa 58,9% osuutta. Seuraavana perässä ovat Microsoft 12,46%, Nginx 11,28%, Google 8,13%, osuuksilla.
4 Developer September 2011 Percent October 2011 Percent Change Apache 99,963,635 59.99% 99,883,550 58.90% -1.09 Microsoft 20,548,834 12.33% 21,137,071 12.46% 0.13 nginx 17,495,435 10.50% 19,121,348 11.28% 0.78 Google 13,270,024 7.96% 13,781,508 8.13% 0.16 Yahoo.com. Suuriliikenteisiä sivustoja jotka käyttävät Apache http:ta ovat Facebook.com ja Apachen suosion alun on helppo selittää silla, että se oli ainoa varteenotettava ohjelmisto aikanaan, mutta mikä tekee Apachesta niin suositun vielä tänäkin päivänä suurien yritysten ohjelmistojen rinnalla. Ennen kaikkea Apache http on ilmainen ja sen takia hyvin suosittu esimerkiksi koulu tai yksityiskäytössä. Tämän ansiosta tulevat ylläpitäjät ja palvelimien ohjelmoijat saavat ensikosketuksensa palvelimiin juuri Apachen avulla. Apache on onnistunut luomaan viimeisten 15 vuoden aikana suuren kommuunin vapaaehtoisista kehittäjistä, niin ammattilaisista kuin harrastelijoista. Ison yhteisen ansiosta kehitystyö on lähes keskeytymätöntä ja uusia parannuksia olemassa oleviin puutteisiin tai ongelmatilanteisiin syntyy nopeasti.
5 Eräs syy, miksi juuri Apachen http on saavuttanut suuren suosion, on toisten käyttäjien tarjoama vertaistuki. Internet ja varsinkin asiaan vannoutuneet keskustelupalstat usein sisältävät paljon neuvoja ja ohjeita miten saat oman palvelimen toimimaan. Useimmat yritykset eivät tarjoa ilmaista opetusta ohjelmistojensa käyttöön, varsinkin tämän takia suuri määrä aloittelevista käyttäjistä karttavat naita ohjelmia.
6 2 Palvelimen toiminta WWW-järjestelmät toimivat asiakas/palvelin-periaatteella (client/server). Asiakasohjelma lähettää http-protokollaa käyttäen palvelupyynnön palvelinohjelmalle. Palvelin suorittaa pyydetyn palvelun ja lähettää http-protokollaa käyttäen vastauksen asiakkaalle. Www-järjestelmien tapauksessa palvelin on www- tai web-palvelin. Asiakasohjelma on hyvin usein selain. Seuraava kuva esittää palvelimen toimintaa. Käyttäjä kirjoittaa verkkoresurssin URL-osoitteen selaimen osoitekenttään tai klikkaa sivulla olevaa linkkiä. Verkkoresurssi voi olla HTML-tiedosto, ASP- tai JSP-tiedosto, cgi-ohjelma, Java-servletti, hakukone, jne. Selaimesta lähtee palvelimelle httpprotokollan mukainen pyyntö. Palvelin lähettää selaimelle vastauksen käyttäen http-protokollaa. Vastaus on yleensä jonkinlainen HTML-tiedosto. Selaimen HTML-parseri tulkitsee saamansa HTML-tiedoston ja näyttää sen selaimen näyttöalueessa.
3 Apache-palvelimen ajoympäristöt 7 Alkuaan Apache-palvelin kehitettiin UNIX-käyttöjärjestelmässä ajettavaksi. Sen yleisimmät ajoympäristöt ovatkin Linux-, Solaris- ja FreeBSB- käyttöjärjestelmät. Apachepalvelimesta on tehty myös NT/Win -ympäristöissä toimivat versiot. Normaalisti Apache toimii Unix-käyttöjärjestelmässä taustaprosessina, joka tarjoaa palveluja ja jolla ei ole varsinaista käyttöliittymää. Tällaisesta prosessista käytetään Unix-käyttöjärjestelmässä nimeä demoni (daemon). Windows NT -käyttöjärjestelmässä taustaprosessista käytetään nimitystä palvelu (service). Apachen toimintaperiaate on erilainen Unix- ja NT-käyttöjärjestelmissä. Unixkäyttöjärjestelmässä Apache luo käynnistyksen yhteydessä prosesseja, jotka käsittelevät asiakkailta tulevia palvelupyyntöjä. NT-käyttöjärjestelmässä palvelupyyntöjen käsittely perustuu säikeisiin (thread). Säikeiden käyttö on tehokkaampaa ja vähemmän tietokoneen resursseja kuluttavaa kuin prosessien käyttö. Uusimmassa Apache versiossa 2.0 palvelut toteutetaan myös Unix-ympäristössä säikeiden avulla.
8 4 Tärkeimmät ominaisuudet Tuki HTTP 1.1 protokollalle Modulaarinen (uusien moduulien lisääminen ja Apachen toiminnan laajentaminen) Virheilmoitukset täysin konfiguroitavissa Virtuaalipalvelin, jolloin yksi Apachen-palvelin voi palvella asiakkaita usealla eri nimellä (esim. www.firma.com tai www.yritys.com) Apache voi toimia proxy-palvelimena, mikä vähentää liikennettä yrityksen sisäverkosta ulkoverkkoon. Mahdollisuus laajentaa palvelimien toimintaa palvelinprosessissa ajettavilla Perlohjelmilla (kirjastolla perlmod) Käyttäjien tunnistus CGI- ja FAST-CGI tuki Apache haarauttaa (fork) palvelinprosessinsa haluttuun määrään lapsiprosesseja etukäteen. Nämä lapsiprosessit ovat äitiprosessien täydellisiä kopioita. Lapsiprosesseja pidetään aina käynnissä alustustiedostoissa määrätty määrä, mutta niitä voidaan tarvittaessa käynnistää enemmänkin. Asiakkailta (yleensä selaimelta) tuleviin pyyntöihin vastaavat juuri httpd-lapsiprosessit. Näin ollen palvelinprosessin käynnistykseen ei yleensä kulu aikaa pyynnön tapahtuessa. Apachessa on ollut http 1.1 yhteensopivuus versioista 1.2.x lähtien. Apachessa on tuki mm. jatkuville yhteyksille (persistant connection), mikä tarkoittaa sitä, että kolme INLINE-kuvaa sisältävä HTML-dokumentti (yhteensä 4 tiedostoa) voidaan siirtää yhden http-yhteyden aikana. http 1.0 protokollassa jokaisen elementin siirtoa varten piti luoda uusi http-yhteys, mikä luonnollisesti hidasti palvelimen toimintaa. Apache-palvelimen etuja ovat toimintavarmuus ja GPL-lisenssillä jaettava lähdekoodi. Suuri markkinaosuus ja lähdekoodin julkisuus takaa jatkuvan kehityksen. Apache palvelinta testataan jatkuvasti kovassa käytössä (jatkuvassa käytössä useita miljoonia palvelimia). Aina uuden virheen ilmetessä korjaus tulee nopeasti Apachen kotisivulle.
5 Asentaminen ja konfigurointi 9 Konfiguroinneissa ja käynnistyksessä on linux-pakettijakelukohtaisia eroja. Jos Apache asennetaan Windows-käyttöjärjestelmään, voidaan asennusohjelman jälkeen palvelu käynnistää Ohjauspaneeli/Control Panel -> Valvontatyökalut/Administrative Tools -> Palvelut/Services' -näkymästä. Esitelmä keskittyy tarkastelemaan prosessia Fedora Core 12 -jakelun näkökulmasta. Asennetaan Apachen uusin versio paketinhallinnasta: # yum install httpd Apachen käynnistys-skripti sijaitsee tämän jälkeen /etc/init.d hakemistossa, tiedostossa 'httpd'. Sinne ovat määritetty funktiot palvelun käynnistykselle, pysäytykselle ja uudelleenkäynnistykselle. Näiden toteutuksia voi tarkastella tiedostosta ('cat/etc/init.d/httpd') Apache-palvelu saadaan käynnistettyä, kun yllämainitussa httpd-tiedostossa oleva käynnistys-skripti (start()-funktio) saada ajettua. Käytetään samassa yhteydessä myös 'chkconfig'-työkalua, joka helpottaa esimerkiksi järjestelmävalvojien tehtäviä järjestelmässä pyörivien palvelujen ylläpidossa ja käytössä. 'Chkconfig <pavelunnimi> <on/off>' asettaa palvelun käynnistymään aina järjestelmän käynnistyksen yhteydessä. Suoritetaan komennot: # chkconfig httpd on # /etc/init.d/httpd start Vaihtoehtoisesti voidaan käyttää myös suoraan palveluita manipuloivaa komentoa 'service', ja käynnistää Apache-palvelu seuraavasti: # sevice httpd start Kun komennot on ajettu, on Apache www-palvelimen palvelu käynnistetty, ja se pyörii taustalla. Kannattaa myös varmistaa, että Apachen käyttämä portti 80 on avattuna. # netstat -tulpn grep :80
10 Palvelun pysäytys onnistuu vastaavasti käyttämällä 'start'-parametrin sijaan 'stop'- parametria, samojen yllämainittujen komentojen kanssa. Kun palvelu on käynnistetty, on seuraava askel yleensä konfiguroida Apache siten, että se löytää halutut hakemistot ja tiedostot www-sivustojen pyörittämiseen. Tämä, ja myös Apachen muu konfigurointi tehdään '/etc/httpd/conf/httpd.conf' -tiedostoon. Windows-käyttöjärjestelmissä httpd.conf -tiedosto löytyy Apachen asennushakemiston alta. Ennen uusien muutosten tekemistä on yleensä kannattavaa tehdä tiedostosta varmuuskopio, jotta voidaan tarvittaessa palata toimivaan versioon. Fedorassa on oletuksena asetettu juurihakemistoksi '/var/www/html'. Tähän hakemistoon luodut html-tiedostot ovat heti palvelun käytössä. Ensimmäisen asennuksen jälkeen kannattaa palvelimen virheetön toimivuus varmistaa luomalla hakemistoon 'index.html'- tiedosto, jonka sisältönä on jokin helposti tunnistettava ja lyhyt merkkijono. Tämän jälkeen selaimen pitäisi näyttää merkkijono, kun url:ksi syötetään 'http://localhost:80/'. Vaikkakaan Apache-asennuspaketin mukana ei tulekaan erillistä graafista käyttöliittymää konfiguroinnin suorittamista varten, on httpd.conf-tekstitiedosto todella hyvin kommentoitu, ja jokainen attribuutti ja sen käyttötarkoitus on selitetty. Näin ollen konfigurointi ei yleensä muodostu ylitsepääsemättömäksi esteeksi, vaikka sitä ei olisi ennen tehnyt. Tiedostoa käsitellessä kannattaa huomioida kommenttiriviä merkitsevä merkki '#', jonka jälkeen kirjoitettua tekstiä palvelu ei lue. Isompia kokonaisuuksia konfiguroinnissa määritellään lohkoissa, jolloin syntaksi muistuttaa hieman XML:aa. <Lohko> attribuutti1 arvo arvo2 attribuutti2 arvo3 <Alilohko> attribuutti3 arvo4 </Alilohko> </Lohko>
11 Vaikka oletuksena käytettävä konfiguraatiotiedosto on httpd.conf, ei kaikkia konfiguraatioita ole pakollista tehdä yhteen tiedostoon. Palvelimen käyttämiä konfiguraatioita voidaan modularisoida kivasti esimerkiksi sen päällä pyörivien palveluiden mukaan lisäämällä include-määritteitä tiedoston alkuun, ja tehdä määritteiden mukaisiin muihin konfiguraatio-tiedostoihin halutut konfiguraatiot. Konfigurointi kannattaa aloittaa muuttamalla 'ServerAdmin' -attribuutin arvoksi sähköpostiosoite, johon itse pääsee kasiksi. Talloin erilaisista virheistä mahdollisesti raportoivat sähköpostit ovat luettavissa. Myös 'ServerName' -attribuutti kannattaa muuttaa vastaamaan todellista palvelimen osoitetta. Alkuvaiheessa/ohjelmistokehityksessä käy vaikkapa oma ip-osoite, tai 'localhost'.
6 Apache-palvelimen rakenne 12 Apache voidaan imuroida Apache Software Foundation -yhdistyksen sivuilta (www.apache.org) tai joltakin sen kansainväliseltä peilisivustolta. Apache julkistetaan sekä binääri- että lähdekoodiversiona. Binääriversio voidaan asentaa sellaisenaan ja sitä on saatavana useille käyttöjärjestelmille. Lähdekoodiversio, jota voidaan editoida ja muunnella kulloiseenkin tarkoitukseen sopivaksi, pitää ennen asennusta kääntää ja kehittää asentamiskelpoiseksi ohjelmaksi. Ydin ja moduulit Apache-palvelin koostuu ytimestä ja moduuleista, joista voidaan koota halutut ominaisuudet omaava palvelin. Moduulit voidaan kiinnittää palvelimeen pysyvästi tai ne voidaan ladata ajon aikana dynaamisesti. Virallinen Apache sisältää ytimen ja tietyt standardimoduulit. Konfigurointitiedostot Apache-palvelimella on konfigurointitiedostoja, jotka ilmoittavat palvelinohjelmistolle, minkälaisessa ympäristössä se toimii ja miten sen tulee toimia. Konfigurointitiedostot ovat tekstitiedostoja, joita voidaan käsitellä manuaalisesti tekstieditorilla. Nykyään on olemassa myös graafisia editoreita, joilla voidaan käsitellä konfigurointitiedostoja. Apache-palvelimen asennusohjelma perustaa conf-nimisen hakemiston ja vie hakemistoon kolme konfigurointitiedostoa: httpd.conf, tärkein konfigurointitiedosto srm.conf, palvelimen resurssienmäärittelytiedosto access.conf, palvelimen käyttöoikeuksien määrittelytiedosto httpd.conf -asetustiedosto Tiedosto httpd.conf sisältää palvelimen tärkeimmät asetustiedot. Tiedostoa voi muokata millä tahansa Unix-tekstieditorilla. Tässä luvussa käydään httpd.conftiedoston tärkeimmät räätälöitävät kohdat läpi. Aloitetaan palvelimen toiminnan kannalta välttämättömistä määrittelyistä. ServerType Unix-koneeseen asennettavaa palvelinta voidaan ajaa kahdessa tilassa: joko standalone- tai inetd-tilassa. Kun palvelinta ajetaan inetd-tilassa, UNIX huolehtii
13 palvelinohjelmiston käynnistämisestä aina hakupyynnön saapuessa palvelimelle annettuun TCP-porttiosoitteeseen. Apache-palvelinta suositellaan ajettavaksi standalone-tilassa, jolloin palvelinprosessi on jatkuvasti päällä odottamassa hakupyyntöjä. Tällöin sitä ei tarvitse erikseen käynnistää, vaan Apachen äitiprosessi kopioi itse itsensä lapsiprosessiksi, joka palvelee asiakasta. Port Port-direktiivi määrittelee palvelimen kuuntelemaan TCP-portin numeron. Standardiporttinumero on 80. Mikäli palvelin käynnistetään standalone-tilassa porttiin, jonka numero on pienempi kuin 1024, palvelin täytyy käynnistää pääkäyttäjän tunnuksilla. HostnameLookups Apache-palvelin voi yrittää selvittää Web-sivuja hakevien koneiden iposoitteita vastaavan nimellä lokitiedostoa varten. Tämä aiheuttaa turhia kyselyjä DNS-nimipalvelimelle, joten asetusta ei kannata yleensä käyttää. User Oletuksena WWW-palvelin ajetaan ei kukaan käyttäjän oikeuksilla. Tällä oletus ei ole omaa kotihakemistoa, joten oikeudet jäävät suhteellisen pieniksi. Ajattaessa palvelinta Standalone-tilassa jokainen hakupyyntö käynnistää httpdäitiprosessista uuden lapsiprosessin muistiin. Apachen äitiprosessi käynnistetään pääkäyttäjän oikeuksilla, mutta jokainen uusi palvelinkopio käynnistyy User- ja Group-kohdissa annetulla tunnuksella. Kyseessä on käyttäjä, jolle täytyy antaa oikeudet esimerkiksi cgi-ohjelmien ajamiseen. ServerRoot Palvelimen juurihakemisto (ServerRoot) on hakemisto, jossa palvelin säilyttää asetus-, virhe- ja lokitiedostot (conf- ja logs-hakemistot). Asetus on tästä eteenpäin Apache-palvelimen juurihakemisto myös kaikissa asetuksissa (esim. ErrorLog, TransferLog jne.) Palvelin olettaa löytäneensä kaikki tarvitsemansa tiedostot hakemiston alihakemistossa. Hakemiston voi määritellä apache-palvelimen käynnistämisen yhteydessä f-parametrilla.
14 ServerAdmin Palvelimen ylläpitäjän sähköpostiosoite, joka näkyy oletuksena joissakin Apache-palvelimen antamissa virheilmoituksissa. ErrorLog, TransferLog, RefererLog, AgentLog Nämä ovat lokitiedostojen sijoituspaikkoja palvelimen juurihakemiston alla. Lokitiedostot voidaan tallentaa myös minne tahansa palvelimen hakemistoon, jolloin käynnistettäessä palvelin uudestaan, täytyy näiden hakemistojen olla olemassa. PidFile Palvelimen käynnissä olemisesta kertovan tiedoston (Pidfile) nimeäminen. Tiedosto httpd.pid sisältää httpd-äitiprosessin Prosessitunnuksen (PID). Tätä lukua voi käyttää esimerkiksi palvelimen käynnistämiseksi uudelleen. ServerName WWW-palvelimen nimi. Huomaa, että palvelimen nimen on löydyttävä nyös DNS-nimipalvelusta, muuten palvelin toimii ainoastaan IP-osoitteella. Timeout Timeout-directiivi asettaa maksimiajan (seuraavassa 400 sekuntia), jonka palvelin odottaa yhden selaimelta tulevan pyynnön täyttämisestä. KeepAlive, KeepAliveTimeout, MaxKeepAliveRequests Selaimelta tehdään useita peräkkäisiä pyyntöjä samalle palvelimelle. Tämän takia luotua yhteyttä ei voi sulkea, vaan sen pitää olla auki. Peräkkäiset pyynnöt sallitaan KeepAlive-directiivin On-arvolla. Vaihtoehtoisesti voi antaa myös yhtäaikaisesti auki pidettävien yhteyksien lukumäärän. KeepAliveTimeout vastaa montako pyyntöä yhdelle yhteydelle sallitaan. Arvo 0 tarkoittaa rajoittamatonta määrää. MaxKeepAliveRequests tiedostossa määritellään myös sekä virtuaalipalvelimen (Virtual host) ja proxy-palvelimen asetukset.
15 srm.conf -asetustiedosto Tätä tiedostoa ei enää uusimmissa Apachen versioissa ole, vaan myös tämän tiedoston sisältämät tiedot on liitetty httpd.conf tiedostoon. Tiedosto käsitellään kuitenkin erillisenä, koska myös vanhempia Apachen versioita käytetään edelleen. Srm.conf määrittelee Apache-palvelimella olevia resursseja, kuten HTML- ja XML-dokumentteja, CGI-ohjelmia sekä muita palvelimella käytettäviä resursseja. Suurimman osan tiedoston oletusarvoista voi pitää sellaisenaan, joten tässä käsitellään vain ne osat, joita tiedoston asetuksista tavallisesti pitää muuttaa. DocumentRoot DocumentRoot-directiivillä tehdään dokumenttien juurihakemiston määritys. Tämä on hakemisto, jonka tiedostot ladataan tullessa WWW-palvelimelle ainoastaan palvelimen nimellä. UserDir Periaatteessa kaikki HTML-tiedostot voidaan sijoittaa yllä määritellyn dokumenttien juurihakemiston alihakemistoihin, mutta ylläpitäjän kannalta helpompi tapa on määritellä jokaiselle käyttäjälle oma hakemisto. Hakemisto, josta Apache hakee dokumentteja palvelupyynnön tullessa tavallisten käyttäjien hakemistoon, määritellään UserDir-parametrilla. DirectoryIndex Palvelimelle täytyy kertoa myös indeksitiedoston nimi. Indeksitiedosto on tiedosto, joka palautetaan silloin, kun URL-osoite viittaa johonkin hakemistoon. Apache-palvelimessa voi määritellä useampia indeksitiedostoja, kuten alla olevassa esimerkissä on tehty. FancyIndexing Jos hakemistokohtaista indeksitiedostoa ei ole, hakemistossa olevien tiedostojen tyyppiä pyritään kuvaamaan tietyillä kuvakkeilla (icon). Samoin näytetään tiedot tiedostojen koosta ja luontipäivämäärästä. Jos tätä ei haluta, määritellään FancyIndexing off.
16 AccessFileName AccessFileName-direktiivillä voi muuttaa hakemistokohtaisen suojaustiedoston nimen (oletus.htaccess). Suojaustiedostoja kannattaa käyttää palvelimelle, jossa on runsaasti tavallisia käyttäjiä, joiden täytyy suojata omat kotisivunsa. Tällöin palvelin tarkastaa jokaisen pyynnön yhteydessä, löytyykö AccessFileName directiivillä määritelty tiedosto palvelimen hakemistosta (tehotonta). DefaultType Seuraavalla direktiivillä määritellään oletus-mime-tyypiksi text/plain, jos palvelimella olevan tiedosto tarkennin ei sitä kerro. Alias, ScriptAlias Alias-direktiivi määtittelee Apache-palvelimella käytettävän polkunimen jollekin palvelimella olevalle hakemistolle. ScriptAlias-direktiivi on kuten alias, mutta se määrittelee, mihin hakemistoon palvelimella ajettavat CGI-ohjelmat sijoitetaan.
17 7 Apache 1.3:sen erot 2.0:aan Apache 2.0 palvelin ilmestyi joulukuussa 2000. Ensimmäiset versiot olivat beta versioita mutta vuonna 2002 saatiin ensimmäinen stabiili versio ulos. Uusin versio on 2.0.24. Uusi versio eroaa melkolailla vanhasta 1.3 versiosta. Se sisältää uusia ominaisuuksia ja on rakenteeltaan erilainen. 2.0 on huomattu käytössä stabiiliksi ja on yleistymässä. Uudessa Red Hat Linux 8.0 versiossa tulee jo mukana Apachen 2.0 versio. Uusia ominaisuuksia: Paremmat ominaisuudet UNIX-ympäristössä Tehokkaampaa moniajoa Uusi rakennus järjestelmä Pakettien kääntäminen on muiden yleisten pakettien kaltainen. Useiden protokollien tuki Uusia protokolla moduuleita voidaan lisätä. Parempi tuki muissakin kuin UNIX alustoissa. Uusi API moduuli Kehittyneempi ja monipuolisempi API moduuli IPv6 tuki Suodattaminen Ulkoiset ohjelmat voivat toimia suodattimina jotka ajetaan eri tapauksissa Monikielinen virheilmoitus Yksinkertainen konfigurointi Windows NT unicode tuki Regular Expression Library päivitetty Uusi selkeämpi versio Perl 5 syntaksissa
18 Lähteet http://myy.helia.fi/~atk90d/palvelin/apache.html http://users.metropolia.fi/~hakka/linux/esitelmat/apache2.pdf https://publications.theseus.fi/bitstream/handle/10024/811/tirkkonen_mikko.pdf?sequen ce=1 http://www2.it.lut.fi/kurssit/06-07/ti5316800/linux-tyot/www_palvelimet- Arsi_Hartikainen-dokumentti.pdf www.2kmediat.com www.apache.org www.netcraft.com www.redhat.com