HTTPD – Apache2-verkkopalvelin
Apache on Linux-järjestelmien yleisimmin käytetty Web-palvelin. Web-palvelimia käytetään palvelemaan asiakastietokoneiden pyytämiä Web-sivuja. Asiakkaat pyytävät ja tarkastelevat Web-sivuja yleensä käyttämällä selainsovelluksia, kuten Firefoxia, Operaa, Chromiumia tai Internet Exploreria.
Käyttäjät syöttävät URL-osoitteen (Uniform Resource Locator) osoittaakseen Web-palvelimelle sen Fully Qualified Domain Name (FQDN) -nimen ja vaaditun resurssin polun avulla. Esimerkiksi katsoakseen Ubuntu-verkkosivuston kotisivua käyttäjä syöttää vain FQDN:n:
www.ubuntu.comJos haluat tarkastella yhteisön alisivua, käyttäjä syöttää FQDN:n ja polun:
www.ubuntu.com/communityYleisin Web-sivujen siirtämiseen käytetty protokolla on HTTP (Hyper Text Transfer Protocol) -protokolla. Protokollat, kuten Hyper Text Transfer Protocol over Secure Sockets Layer (HTTPS) ja File Transfer Protocol (FTP), protokolla tiedostojen lähettämiseen ja lataamiseen, ovat myös tuettuja.
Apache-verkkopalvelimia käytetään usein yhdessä MySQL-tietokantamoottorin, HyperText Preprocessor (PHP) -komentosarjakielen ja muiden suosittujen komentosarjakielien, kuten Python ja Perl, kanssa. Tätä kokoonpanoa kutsutaan nimellä LAMP (Linux, Apache, MySQL ja Perl/Python/PHP), ja se muodostaa tehokkaan ja vankan alustan web-pohjaisten sovellusten kehittämiseen ja käyttöönottoon.
Apache2-verkkopalvelin on saatavilla Ubuntu Linuxissa. Apache2:n asentaminen:
Anna päätekehotteeseen seuraava komento:
sudo apt install apache2Apache2 määritetään sijoittamalla käskyt tekstimuotoisiin asetustiedostoihin. Nämä direktiivit on erotettu seuraavien tiedostojen ja hakemistojen välillä:
apache2.conf: Apache2:n päämääritystiedosto. Sisältää asetukset, jotka ovat yleisiä Apache2:lle.
httpd.conf: historiallisesti tärkein Apache2-määritystiedosto, joka on nimetty httpd-demonin mukaan. Muissa jakeluissa (tai vanhemmissa Ubuntun versioissa) tiedosto saattaa olla olemassa. Ubuntussa kaikki määritysvaihtoehdot on siirretty tiedostoon apache2.conf ja alla viitattuihin hakemistoihin, eikä tätä tiedostoa enää ole.
conf-available: tämä hakemisto sisältää käytettävissä olevat asetustiedostot. Kaikki tiedostot, jotka olivat aiemmin kansiossa /etc/apache2/conf.d, tulee siirtää kansioon /etc/apache2/conf-available.
conf-enabled: sisältää symbolin /etc/apache2/conf-available tiedostoihin. Kun asetustiedosto on symlinkitetty, se otetaan käyttöön, kun apache2 käynnistetään seuraavan kerran uudelleen.
envvars: tiedosto, jossa Apache2-ympäristömuuttujat on asetettu.
mods-available: tämä hakemisto sisältää asetustiedostoja sekä moduulien lataamista että niiden määrittämistä varten. Kaikilla moduuleilla ei kuitenkaan ole tiettyjä konfiguraatiotiedostoja.
mods-enabled: sisältää symbolin /etc/apache2/mods-available tiedostoihin. Kun moduulin asetustiedosto on symlinkitetty, se otetaan käyttöön, kun apache2 käynnistetään seuraavan kerran uudelleen.
ports.conf: sisältää käskyt, jotka määrittävät, mitä TCP-portteja Apache2 kuuntelee.
sites-available: tässä hakemistossa on määritystiedostoja Apache2 Virtual Hostsille. Virtuaalikoneiden avulla Apache2 voidaan määrittää useille sivustoille, joilla on erilliset määritykset.
sites-enabled: kuten mods-enabled, sites-enabled sisältää symbolilinkkejä /etc/apache2/sites-available-hakemistoon. Vastaavasti kun sivustot-käytettävissä oleva määritystiedosto linkitetään, sen määrittämä sivusto on aktiivinen, kun Apache2 käynnistetään uudelleen.
magic: ohjeet MIME-tyypin määrittämiseen tiedoston muutaman ensimmäisen tavun perusteella.
Lisäksi muita määritystiedostoja voidaan lisätä käyttämällä Include-ohjetta, ja monien asetustiedostojen sisällyttämiseen voidaan käyttää yleismerkkejä. Mikä tahansa ohje voidaan sijoittaa mihin tahansa näistä asetustiedostoista. Apache2 tunnistaa tärkeimpien asetustiedostojen muutokset vain, kun se käynnistetään tai käynnistetään uudelleen.
Palvelin lukee myös MIME-asiakirjatyyppejä sisältävän tiedoston; tiedostonimen asettaa TypesConfig-direktiivi, tyypillisesti tiedosto /etc/apache2/mods-available/mime.conf, joka saattaa sisältää myös lisäyksiä ja ohituksia, ja se on oletuksena /etc/mime.types.
Tässä osiossa selitetään Apache2-palvelimen keskeiset määritysparametrit. Katso lisätietoja Apache2-dokumentaatiosta.
Apache2 toimitetaan virtuaalipalvelinystävällisellä oletuskokoonpanolla. Toisin sanoen se on määritetty yhdelle oletusarvoiselle virtuaaliselle isännälle (käyttämällä VirtualHost-direktiiviä), jota voidaan muokata tai käyttää sellaisenaan, jos sinulla on yksi sivusto, tai käyttää mallina lisävirtuaaliisännille, jos sinulla on useita sivustoja. Jos se jätetään yksin, oletusvirtuaalinen isäntä toimii oletussivustona tai sivuston käyttäjät näkevät, eikö heidän antamansa URL-osoite vastaa jonkin mukautetun sivustosi ServerName-ohjetta. Muokkaa oletusarvoista virtuaalista isäntää muokkaamalla tiedostoa /etc/apache2/sites-available/000-default.conf.
Huomaa
Virtuaalipalvelimelle asetetut ohjeet koskevat vain kyseistä virtuaalipalvelinta. Jos käsky on asetettu palvelimen laajuiseksi eikä sitä ole määritetty virtuaalisen isännän asetuksissa, käytetään oletusasetusta. Voit esimerkiksi määrittää Webmaster-sähköpostiosoitteen etkä määrittää yksittäisiä sähköpostiosoitteita jokaiselle virtuaaliselle isännälle.
Jos haluat määrittää uuden virtuaalisen isännän tai sivuston, kopioi tiedosto samaan hakemistoon valitsemallasi nimellä. Esimerkiksi:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mynewsite.confMuokkaa uutta tiedostoa ja määritä uusi sivusto käyttämällä joitain alla kuvattuja ohjeita.
ServerAdmin-direktiivi määrittää palvelimen järjestelmänvalvojalle mainostettavan sähköpostiosoitteen. Oletusarvo on webmaster@localhost. Tämä tulee vaihtaa sähköpostiosoitteeseen, joka toimitetaan sinulle (jos olet palvelimen järjestelmänvalvoja). Jos verkkosivustollasi on ongelma, Apache2 näyttää tämän sähköpostiosoitteen sisältävän virheilmoituksen, johon voit ilmoittaa ongelmasta. Löydä tämä ohje sivustosi määritystiedostosta /etc/apache2/sites-available.
Listen-käsky määrittää portin ja valinnaisesti IP-osoitteen, jota Apache2:n tulee kuunnella. Jos IP-osoitetta ei ole määritetty, Apache2 kuuntelee kaikkia sille koneelle määritettyjä IP-osoitteita, joissa se toimii. Listen-käskyn oletusarvo on 80. Muuta tämä arvoon 127.0.0.1:80, jos haluat, että Apache2 kuuntelee vain silmukkaliittymääsi, jotta se ei ole Internetin käytettävissä, arvoon (esimerkiksi) 81 muuttaaksesi porttia, jonka se kuuntelee tai jätä se normaaliin toimintaan. Tämä ohje löytyy ja sitä voidaan muuttaa omassa tiedostossaan /etc/apache2/ports.conf
ServerName-käsky on valinnainen ja määrittää, mihin FQDN:ään sivustosi tulee vastata. Oletusvirtuaaliisännälle ei ole määritetty ServerName-komentoa, joten se vastaa kaikkiin pyyntöihin, jotka eivät vastaa toisen virtuaalisen isännän ServerName-komentoa. Jos olet juuri hankkinut verkkotunnuksen mynewsite.com ja haluat isännöidä sitä Ubuntu-palvelimellasi, virtuaalisen isännän määritystiedostosi ServerName-käskyn arvon tulee olla mynewsite.com. Lisää tämä ohje uuteen virtuaalipalvelintiedostoon, jonka loit aiemmin (/etc/apache2/sites-available/mynewsite.conf).
Voit myös haluta, että sivustosi vastaa osoitteeseen www.mynewsite.com, koska monet käyttäjät olettavat, että www-etuliite on sopiva. Käytä tähän ServerAlias-direktiiviä. Voit myös käyttää jokerimerkkejä ServerAlias-direktiivissä.
Esimerkiksi seuraava määritys saa sivustosi vastaamaan mihin tahansa verkkotunnuspyyntöön, joka päättyy .mynewsite.com.
ServerAlias *.mynewsite.comDocumentRoot-direktiivi määrittää, mistä Apache2:n tulee etsiä tiedostoja, jotka muodostavat sivuston. Oletusarvo on /var/www/html, kuten on määritetty tiedostossa /etc/apache2/sites-available/000-default.conf. Halutessasi muuta tätä arvoa sivustosi virtuaalipalvelintiedostossa ja muista luoda hakemisto tarvittaessa!
Ota uusi VirtualHost käyttöön a2ensite-apuohjelmalla ja käynnistä Apache2 uudelleen:
sudo a2ensite mynewsitesudo systemctl käynnistä apache2.serviceHuomaa
Muista korvata uusisivustoni VirtualHostia kuvaavammalla nimellä. Yksi tapa on nimetä tiedosto VirtualHostin ServerName-käskyn mukaan.
Samalla tavalla voit poistaa sivustot käytöstä a2dissite-apuohjelmalla. Tästä voi olla hyötyä useiden VirtualHostien määritysongelmien vianmäärityksessä:
sudo a2dissite mynewsitesudo systemctl käynnistä apache2.service uudelleenTässä osiossa selitetään Apache2-palvelimen oletusasetusten määrittäminen. Jos esimerkiksi lisäät virtuaalisen isännän, sille määrittämäsi asetukset ovat etusijalla kyseiselle virtuaaliselle isännälle. Jos käskyä ei ole määritetty virtuaalisen isännän asetuksissa, käytetään oletusarvoa.
Hakemistohakemisto on oletussivu, jonka palvelin tarjoaa, kun käyttäjä pyytää hakemiston indeksiä määrittämällä vinoviivan (/) hakemiston nimen loppuun.
Kun käyttäjä esimerkiksi pyytää sivua http://www.example.com/this_directory/, hän saa joko DirectoryIndex-sivun, jos se on olemassa, palvelimen luoman hakemistoluettelon, jos sitä ei ole, ja Indeksit-vaihtoehto on määritetty tai Permission Denied -sivu, jos kumpikaan ei ole tosi. Palvelin yrittää löytää jonkin DirectoryIndex-direktiivissä luetelluista tiedostoista ja palauttaa ensimmäisen löytämänsä tiedostot. Jos se ei löydä mitään näistä tiedostoista ja jos kyseiselle hakemistolle on asetettu Options Indexes, palvelin luo ja palauttaa HTML-muodossa luettelon hakemiston alihakemistoista ja tiedostoista. Tiedostosta /etc/apache2/mods-available/dir.conf löytyvä oletusarvo on "index.html index.cgi index.pl index.php index.xhtml index.htm". Siten, jos Apache2 löytää pyydetystä hakemistosta tiedoston, joka vastaa jotakin näistä nimistä, ensimmäinen näytetään.
ErrorDocument-direktiivin avulla voit määrittää tiedoston, jota Apache2 käyttää tiettyihin virhetapahtumiin. Jos käyttäjä esimerkiksi pyytää resurssia, jota ei ole olemassa, tapahtuu 404-virhe. Oletuksena Apache2 palauttaa vain HTTP 404 -palautuskoodin. Lue /etc/apache2/conf-available/localized-error-pages.conf yksityiskohtaiset ohjeet ErrorDocumentin käyttämiseen, mukaan lukien esimerkkitiedostojen sijainnit.
Palvelin kirjoittaa oletusarvoisesti siirtolokin tiedostoon /var/log/apache2/access.log. Voit muuttaa tätä sivustokohtaisesti virtuaalisen isännän määritystiedostoissa CustomLog-käskyn avulla tai jättää sen pois hyväksyäksesi oletusarvon, joka on määritetty tiedostossa /etc/apache2/conf-available/other-vhosts-access-log.conf. Voit myös määrittää tiedoston, johon virheet kirjataan, ErrorLog-direktiivin avulla, jonka oletusarvo on /var/log/apache2/error.log. Nämä säilytetään erillään siirtolokeista Apache2-palvelimen ongelmien vianmäärityksen helpottamiseksi. Voit myös määrittää LogLevelin (oletusarvo on "warn") ja LogFormatin (oletusarvo on kohdassa/etc/apache2/apache2.conf).
Jotkin vaihtoehdot on määritetty hakemistokohtaisesti eikä palvelinkohtaisesti. Options on yksi näistä direktiiveistä. Hakemistostanza on suljettu XML-tyyppisiin tunnisteisiin, kuten:
...Hakemiston säkeistössä oleva Options-direktiivi hyväksyy yhden tai useamman seuraavista arvoista (muun muassa) välilyönnillä erotettuna:
ExecCGI – Salli CGI-komentosarjojen suorittaminen. CGI-skriptejä ei suoriteta, jos tätä vaihtoehtoa ei ole valittu.
Varoitus
Useimpia tiedostoja ei tule suorittaa CGI-skripteinä. Tämä olisi erittäin vaarallista. CGI-komentosarjat tulee säilyttää hakemistossa, joka on erillään DocumentRootista ja sen ulkopuolella, ja vain tässä hakemistossa tulee olla ExecCGI-asetus. Tämä on oletusarvo, ja CGI-komentosarjojen oletussijainti on /usr/lib/cgi-bin.
Sisältää – Salli palvelinpuolen sisällytykset. Palvelinpuolen sisältävät sallivat HTML-tiedoston sisällyttää muita tiedostoja. Katso lisätietoja Apache SSI -dokumentaatiosta (Ubuntu-yhteisö).
SisältääNOEXEC – Salli palvelinpuolen sisällytykset, mutta poista käytöstä #exec- ja #include-komennot CGI-komentosarjassa.
Hakemistot – Näytä muotoiltu luettelo hakemiston sisällöstä, jos pyydetyssä hakemistossa ei ole DirectoryIndexiä (kuten index.html).
Varoitus
Turvallisuussyistä tätä ei yleensä pitäisi määrittää, eikä sitä missään nimessä pidä asettaa DocumentRoot-hakemistossasi. Ota tämä asetus käyttöön huolellisesti hakemistokohtaisesti vain, jos olet varma, että haluat käyttäjien näkevän hakemiston koko sisällön.
Moninäkymä – Tukee sisällöstä neuvoteltuja moninäkymiä; tämä vaihtoehto on oletuksena poistettu käytöstä turvallisuussyistä. Katso tästä vaihtoehdosta Apache2-dokumentaatio.
SymLinksIfOwnerMatch – Seuraa symbolisia linkkejä vain, jos kohdetiedostolla tai -hakemistolla on sama omistaja kuin linkillä.
Tässä osassa selitetään joitakin apache2-daemonin peruskokoonpanoasetuksia.
LockFile – LockFile-käsky määrittää polun lukitustiedostoon, jota käytetään, kun palvelin on käännetty joko USE_FCNTL_SERIALIZED_ACCEPT- tai USE_FLOCK_SERIALIZED_ACCEPT-komennolla. Se on tallennettava paikalliselle levylle. Se tulee jättää oletusarvoon, ellei lokihakemisto sijaitse NFS-jaossa. Jos näin on, oletusarvo tulee vaihtaa paikkaan paikallisella levyllä ja hakemistoon, jota vain pääkäyttäjä voi lukea.
PidFile – PidFile-direktiivi asettaa tiedoston, johon palvelin tallentaa prosessitunnuksensa (pid). Tämän tiedoston pitäisi olla vain pääkäyttäjän luettavissa. Useimmissa tapauksissa se tulisi jättää oletusarvoon.
Käyttäjä – User-direktiivi määrittää käyttäjätunnuksen, jota palvelin käyttää pyyntöihin vastaamiseen. Tämä asetus määrittää palvelimen pääsyn. Kaikki tiedostot, joihin tämä käyttäjä ei pääse, ovat myös verkkosivustosi vierailijoiden ulottumattomissa. Käyttäjän oletusarvo on "www-data".
Varoitus
Ellet tiedä tarkalleen, mitä olet tekemässä, älä aseta User-ohjetta root-tilaan. Pääkäyttäjän käyttäminen luo suuria tietoturva-aukkoja Web-palvelimellesi.
Ryhmä - Ryhmädirektiivi on samanlainen kuin käyttäjädirektiivi. Ryhmä määrittää ryhmän, jonka alla palvelin vastaa pyyntöihin. Oletusryhmä on myös "www-data".
Apache2 on modulaarinen palvelin. Tämä tarkoittaa, että ydinpalvelimeen on sisällytetty vain perustoiminnot. Laajennetut ominaisuudet ovat saatavilla moduulien kautta, jotka voidaan ladata Apache2:een. Oletuksena moduulien perusjoukko sisältyy palvelimeen käännöshetkellä. Jos palvelin on käännetty käyttämään dynaamisesti ladattuja moduuleja, moduulit voidaan kääntää erikseen ja lisätä milloin tahansa LoadModule-direktiivin avulla. Muussa tapauksessa Apache2 on käännettävä uudelleen moduulien lisäämiseksi tai poistamiseksi.
Ubuntu kääntää Apache2:n sallimaan moduulien dynaamisen lataamisen. Konfigurointikäskyt voidaan sisällyttää ehdollisesti tietyn moduulin läsnäolon yhteydessä sulkemalla ne lohkoon.
Voit asentaa lisää Apache2-moduuleja ja käyttää niitä verkkopalvelimesi kanssa. Suorita esimerkiksi seuraava komento päätekehotteessa Python 3 WSGI -moduulin asentamiseksi:
sudo apt install libapache2-mod-wsgi-py3Asennus ottaa moduulin käyttöön automaattisesti, mutta voimme poistaa sen käytöstä a2dismodilla:
sudo a2dismod wsgisudo systemctl käynnistä apache2.service uudelleenJa ota se sitten uudelleen käyttöön a2enmod-apuohjelmalla:
sudo a2enmod wsgisudo systemctl käynnistä apache2.service uudelleenKatso /etc/apache2/mods-available-hakemistosta lisämoduuleja, jotka ovat jo saatavilla järjestelmässäsi.
Mod_ssl-moduuli lisää Apache2-palvelimeen tärkeän ominaisuuden - mahdollisuuden salata viestintää. Kun selaimesi kommunikoi SSL:n avulla, https://-etuliitettä käytetään URL-osoitteen (Uniform Resource Locator) alussa selaimen navigointipalkissa.
Mod_ssl-moduuli on saatavilla apache2-common-paketissa. Ota mod_ssl-moduuli käyttöön suorittamalla seuraava komento päätekehotteessa:
sudo a2enmod sslKirjassa /etc/apache2/sites-available/default-ssl.conf on HTTPS-oletusasetustiedosto. Jotta Apache2 voi tarjota HTTPS:n, tarvitaan myös varmenne ja avaintiedosto. HTTPS-oletuskokoonpano käyttää ssl-cert-paketin luomaa varmennetta ja avainta. Ne ovat hyviä testaukseen, mutta automaattisesti luotu varmenne ja avain tulisi korvata sivustolle tai palvelimelle ominaisella varmenteella. Lisätietoja avaimen luomisesta ja varmenteen hankkimisesta on kohdassa Varmenteet.
Jos haluat määrittää Apache2:n HTTPS:lle, kirjoita seuraava:
sudo a2ensite default-sslHuomaa
Hakemistot /etc/ssl/certs ja /etc/ssl/private ovat oletussijainnit. Jos asennat varmenteen ja avaimen toiseen hakemistoon, muista muuttaa SSLCertificateFile ja SSLCertificateKeyFile asianmukaisesti.
Kun Apache2 on nyt määritetty HTTPS:ää varten, käynnistä palvelu uudelleen ottaaksesi käyttöön uudet asetukset:
sudo systemctl restart apache2.serviceHuomaa
Varmenteen hankinnasta riippuen saatat joutua antamaan tunnuslauseen, kun Apache2 käynnistyy.
Pääset suojatuille palvelinsivuille kirjoittamalla https://your_hostname/url/ selaimen osoiteriville.
Jotta useampi kuin yksi käyttäjä voi kirjoittaa samaan hakemistoon, heidän on myönnettävä kirjoitusoikeudet yhteiselle ryhmälle. Seuraava esimerkki myöntää jaetut kirjoitusoikeudet tiedostoon /var/www/html ryhmälle "webmasters".
sudo chgrp -R webmasters /var/www/htmlsudo chmod -R g=rwX /var/www/html/Nämä komennot asettavat rekursiivisesti ryhmäoikeudet kaikille tiedostoille ja hakemistoille /var/www/html salliakseen lukemisen, hakemistojen kirjoittaminen ja haku. Monet järjestelmänvalvojat pitävät tätä hyödyllisenä, kun useat käyttäjät voivat muokata tiedostoja hakemistopuussa.
Varoitus
Apache2-daemon toimii www-data-käyttäjänä, jolla on vastaava www-dataryhmä. Näille ei pitäisi myöntää kirjoitusoikeutta asiakirjan juureen, koska tämä tarkoittaisi, että Apachen tai sen palvelemien sovellusten haavoittuvuudet antaisivat hyökkääjille mahdollisuuden korvata tarjotun sisällön.
Apache2-dokumentaatio sisältää perusteellista tietoa Apache2-määritysohjeista. Katso myös virallisten Apache2-dokumenttien apache2-doc-paketti.
O'Reillyn Apache-keittokirja on hyvä resurssi tiettyjen Apache2-kokoonpanojen suorittamiseen.
Jos sinulla on Ubuntua koskevia Apache2-kysymyksiä, kysy #ubuntu-server IRC-kanavalla osoitteessa freenode.net.
PREV: "Ei voi muodostaa yhteyttä DHCP-palvelimeesi" *Ratkaisu* - Xbox One