Johdanto
Apachen HTTP-palvelin on maailman käytetyin WWW-palvelin. Se tarjoaa monia tehokkaita ominaisuuksia, mukaan lukien dynaamisesti kuormitettavat moduulit, vankka mediatuki ja laaja integrointi muihin suosittuihin ohjelmistoihin.
tässä oppaassa asennat CentOS 7-palvelimellesi Apache-verkkopalvelimen, jossa on virtuaalisia isäntiä.
edeltävät opaskirjat
tarvitset seuraavat ohjeet tämän oppaan täydentämiseksi:
- ei-pääkäyttäjä, jonka sudo-oikeudet on määritetty palvelimellasi ja joka on perustettu noudattamalla CentOS 7: n alkuperäistä palvelimen asennusohjetta.
- peruspalomuuri, joka on määritetty noudattamalla uuden CentOS 7-Palvelinoppaan suositeltuja lisävaiheita.
Vaihe 1 — Apachen asentaminen
Apache on saatavilla Centosin oletusohjelmistovarastoista, eli sen voi asentaa
paketinhallinta.
edeltävissä asetuksissa ei-root sudo-käyttäjänä Päivitä paikallinen Apache httpd
paketti-indeksi vastaamaan viimeisimpiä ylävirran muutoksia:
- sudo yum update httpd
kun paketit on päivitetty, asenna Apache-paketti:
- sudo yum install httpd
asennuksen vahvistamisen jälkeen yum
asentaa Apachen ja kaikki tarvittavat riippuvuudet.
Jos olet suorittanut edeltävissä osioissa mainitut uuden CentOS 7-Palvelinoppaan Lisäsuositukset, olet asentanut firewalld
palvelimellesi ja sinun on avattava portti 80
, jotta Apache voi palvella pyyntöjä HTTP: n kautta. Jos et ole vielä tehnyt sitä, voit tehdä sen ottamalla firewalld
’s http
palvelun käyttöön seuraavalla komennolla:
- sudo firewall-cmd --permanent --add-service=http
Jos aiot määrittää Apachen palvelemaan sisältöä HTTPS: n kautta, haluat myös avata portin 443
ottamalla käyttöön https
palvelu:
- sudo firewall-cmd --permanent --add-service=https
lataa seuraavaksi palomuuri, jotta nämä uudet säännöt tulevat voimaan:
- sudo firewall-cmd --reload
palomuurin uudelleenlatauksen jälkeen olet valmis käynnistämään palvelun ja tarkistamaan WWW-palvelimen.
Vaihe 2 — WWW-palvelimen tarkistaminen
Apache ei käynnisty automaattisesti CentOS-järjestelmässä asennuksen päätyttyä. Apache-prosessi on aloitettava manuaalisesti:
- sudo systemctl start httpd
varmista, että palvelu on käynnissä seuraavalla komennolla:
- sudo systemctl status httpd
näet active
status kun palvelu on käynnissä:
OutputRedirecting to /bin/systemctl status httpd.service● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1290 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1290 /usr/sbin/httpd -DFOREGROUND ├─1291 /usr/sbin/httpd -DFOREGROUND ├─1292 /usr/sbin/httpd -DFOREGROUND ├─1293 /usr/sbin/httpd -DFOREGROUND ├─1294 /usr/sbin/httpd -DFOREGROUND └─1295 /usr/sbin/httpd -DFOREGROUND...
kuten tästä tulosteesta näkyy, palvelu näyttää käynnistyneen onnistuneesti. Paras tapa testata tätä on kuitenkin pyytää sivu Apassilta.
voit käyttää Apache-aloitussivua vahvistaaksesi, että ohjelmisto toimii oikein IP-osoitteesi kautta. Jos et tiedä palvelimesi IP-osoitetta, voit saada sen muutamalla eri tavalla komentoriviltä.
kirjoita tämä palvelimesi komentokehotteeseen:
- hostname -I
Tämä komento näyttää kaikki isännän verkko-osoitteet, joten saat takaisin muutaman välilyönneillä erotetun IP-osoitteen. Voit kokeilla jokaista selaimessasi nähdäksesi, toimivatko ne.
Vaihtoehtoisesti voit käyttää curl
IP-osoitteesi pyytämiseen icanhazip.com
, joka antaa sinulle julkisen IPv4-osoitteesi katsottuna toisesta paikasta internetissä:
- curl -4 icanhazip.com
kun sinulla on palvelimen IP-osoite, syötä se selaimesi osoiteriville:
http://your_server_ip
näet oletussivut CentOS 7 Apache web page:
Tämä sivu osoittaa, että Apache toimii oikein. Se sisältää myös joitakin perustietoja tärkeistä Apache-tiedostoista ja hakemistojen sijainneista. Nyt kun palvelu on asennettu ja käynnissä, voit käyttää erilaisia systemctl
– komentoja palvelun hallintaan.
Vaihe 3 — Apache-prosessin hallinta
nyt kun sinulla on web-palvelin toiminnassa, käydään läpi joitakin perushallintakomentoja.
pysäyttääksesi WWW-palvelimen, type:
- sudo systemctl stop httpd
käynnistääksesi WWW-palvelimen, kun se on pysäytetty, type:
- sudo systemctl start httpd
pysäyttääksesi ja käynnistääksesi palvelun uudelleen, type:
- sudo systemctl restart httpd
Jos teet vain asetusmuutoksia, Apache voi usein ladata uudelleen ilman, että yhteydet katkeavat. Voit tehdä tämän käyttämällä tätä komentoa:
- sudo systemctl reload httpd
oletuksena Apache on määritetty käynnistymään automaattisesti, kun palvelin käynnistyy. Jos tämä ei ole mitä haluat, poista tämä käyttäytyminen kirjoittamalla:
- sudo systemctl disable httpd
jotta palvelu käynnistyisi uudelleen käynnistyksen yhteydessä, type:
- sudo systemctl enable httpd
Apache käynnistyy nyt automaattisesti, kun palvelin käynnistyy uudelleen.
Apachen oletusasetukset sallivat palvelimesi isännöidä yhtä verkkosivustoa. Jos aiot hosting useita verkkotunnuksia palvelimella, sinun täytyy määrittää virtuaalisia isäntiä Apache web-palvelimen.
Vaihe 4 — virtuaalisten isäntien perustaminen (suositeltava)
Kun käytät Apache-www-palvelinta, voit käyttää virtuaalisia isäntiä (samanlaisia palvelinlohkoja nginx: ssä) kapseloidaksesi määritystiedot ja isännöidäksesi useampaa kuin yhtä verkkotunnusta yhdeltä palvelimelta. Tässä vaiheessa luot verkkotunnuksen nimeltä example.com
, mutta sinun tulee korvata tämä omalla verkkotunnuksellasi. Lisätietoja verkkotunnuksen perustamisesta DigitalOcean-ohjelmalla on DigitalOcean DNS-ohjelman Johdantoesityksessä.
Apache CentOS 7: ssä on oletusarvoisesti käytössä yksi palvelinlohko, joka on määritetty palvelemaan asiakirjoja/var/www/html
hakemistosta. Vaikka tämä toimii hyvin yhden sivuston, se voi tulla kömpelö, jos hosting useita sivustoja. Sen sijaan, että muuttaisit /var/www/html
, luot hakemistorakenteen /var/www
example.com
site, jättäen /var/www/html
palvelevaksi oletushakemistoksi, jos asiakkaan pyyntö ei vastaa muita sivustoja.
Luo html
Hakemisto example.com
käyttäen -p
lippua tarvittavien ylähakemistojen luomiseen:
- sudo mkdir -p /var/www/example.com/html
luo lisähakemisto lokin tallentamiseen sivuston tiedostot:
- sudo mkdir -p /var/www/example.com/log
seuraavaksi html
hakemiston omistajaksi $USER
ympäristömuuttuja:
- sudo chown -R $USER:$USER /var/www/example.com/html
varmista, että verkkojuurellasi on oletusluvat aseta:
- sudo chmod -R 755 /var/www
Next, create a sample index.html
page using vi
or your favorite editor:
- sudo vi /var/www/example.com/html/index.html
Press i
to switch to INSERT
mode and add the following sample HTML to the file:
<html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body></html>
Save and close the file by pressing ESC
, typing :wq
, and pressing ENTER
.
kun sivustohakemisto ja sample index-tiedosto ovat paikoillaan, olet lähes valmis luomaan virtuaaliset isäntätiedostot. Virtuaaliset isäntätiedostot määrittelevät erillisten sivustojesi kokoonpanon ja kertovat Apache-verkkopalvelimelle, miten vastata erilaisiin verkkotunnuspyyntöihin.
ennen kuin luot virtuaalisia isäntiä, sinun täytyy luoda sites-available
hakemisto, johon voit tallentaa ne. Luot myös sites-enabled
– hakemiston, joka kertoo Apachelle, että virtuaalinen isäntä on valmis palvelemaan vierailijoita. sites-enabled
hakemistossa on symbolisia linkkejä virtuaalisiin isäntiin, jotka haluamme julkaista. Luo molemmat hakemistot seuraavalla komennolla:
- sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
seuraavaksi pyydät Apachea etsimään virtuaalisia isäntiä sites-enabled
hakemistosta. Tämän saavuttamiseksi muokkaa Apachen pääasetustiedostoa ja lisää rivi, joka ilmoittaa valinnaisen hakemiston lisäasetustiedostoille:
- sudo vi /etc/httpd/conf/httpd.conf
Lisää tämä rivi tiedoston loppuun:
IncludeOptional sites-enabled/*.conf
Tallenna ja sulje tiedosto, kun olet lisännyt kyseisen rivin. Nyt kun sinulla on virtuaalinen isäntä hakemistoja paikallaan, voit luoda virtuaalisen isäntätiedoston.
aloita luomalla uusi tiedosto sites-available
Hakemisto:
- sudo vi /etc/httpd/sites-available/example.com.conf
Lisää seuraavaan asetuslohkoon ja muuta example.com
verkkotunnus verkkotunnukseesi:
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/html ErrorLog /var/www/example.com/log/error.log CustomLog /var/www/example.com/log/requests.log combined</VirtualHost>
Tämä kertoo Apachelle, mistä löytyy suoraan juuri, jolla on julkisesti saatavilla olevat verkkodokumentit. Se kertoo myös Apache missä tallentaa virhe ja pyytää lokit tämän tietyn sivuston.
Tallenna ja sulje tiedosto, kun olet valmis.
nyt kun olet luonut virtuaaliset isäntätiedostot, otat ne käyttöön niin, että Apache tietää palvella niitä vierailijoille. Voit tehdä tämän luomalla symbolisen linkin jokaiselle virtuaaliselle isännälle sites-enabled
hakemistoon:
- sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
virtuaalinen isäntäsi on nyt konfiguroitu ja valmis palvelemaan sisältöä. Ennen kuin käynnistät Apache-palvelun uudelleen, varmistakaamme, että selinuxilla on oikeat käytännöt virtuaalisille isännillesi.
Vaihe 5 — SELinuxin käyttöoikeuksien säätäminen virtuaalisille isännille (suositeltava)
SELinux on määritetty toimimaan Apachen oletusasetuksilla. Koska määrität mukautetun lokihakemiston virtual hosts-asetustiedostoon, saat virheen, jos yrität käynnistää Apache-palvelun. Tämän ratkaisemiseksi sinun on päivitettävä SELinux-käytännöt, jotta Apache voi kirjoittaa tarvittaviin tiedostoihin. SELinux tuo parannetun tietoturvan CentOS 7-ympäristöösi, joten ytimen moduulin poistaminen käytöstä kokonaan ei ole suositeltavaa.
on olemassa erilaisia tapoja asettaa käytäntöjä ympäristön tarpeiden mukaan, sillä SELinuxin avulla voit muokata suojaustasoasi. Tämä vaihe kattaa kaksi tapaa säätää Apache politiikkaa: yleisesti ja tiettyyn hakemistoon. Hakemistojen käytäntöjen säätäminen on turvallisempaa, ja siksi se on suositeltava lähestymistapa.
Apache-käytäntöjen säätäminen universaalisti
Apache-käytäntöjen asettaminen universaalisti kertoo Selinuxille, että kaikkien Apache-prosessien tulee käsitellä identtisesti käyttämällä httpd_unified
boolean. Vaikka tämä lähestymistapa on kätevämpi, se ei anna sinulle saman tason valvontaa kuin lähestymistapa, joka keskittyy tiedosto-tai hakemistokäytäntöön.
suorita seuraava komento yleisen Apache-käytännön asettamiseksi:
- sudo setsebool -P httpd_unified 1
setsebool
komento muuttaa SELinux boolean-arvoja. -P
lippu päivittää käynnistysajan arvon, jolloin tämä muutos jatkuu uudelleenkäynnistyksissä. httpd_unified
on Boolen, joka käskee SELinuxia käsittelemään kaikkia Apache-prosesseja saman tyyppisinä, joten sallit sen arvolla 1
.
Apache-käytäntöjen säätäminen hakemistossa
SELinuxin käyttöoikeuksien asettaminen /var/www/example.com/log
hakemistoon antaa sinulle enemmän kontrollia Apache-käytäntöihisi, mutta saattaa myös vaatia enemmän ylläpitoa. Koska tämä asetus ei ole yleispätevä, sinun on määritettävä kontekstityyppi manuaalisesti uusille lokihakemistoille, jotka on määritetty virtuaalipalvelimen määrityksissä.
tarkista ensin SELinuxin antama kontekstityyppi /var/www/example.com/log
Hakemisto:
- sudo ls -dZ /var/www/example.com/log/
Tämä komento listaa ja tulostaa hakemiston SELinux-kontekstin. Näet ulostulo samanlainen kuin seuraavat:
Outputdrwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/
nykyinen konteksti on httpd_sys_content_t
, mikä kertoo Selinuxille, että Apache-prosessi voi lukea vain tässä hakemistossa luotuja tiedostoja. Tässä opetusohjelmassa /var/www/example.com/log
Hakemisto httpd_log_t
. Tämän tyypin avulla Apache voi luoda ja liittää verkkosovelluksen lokitiedostoja:
- sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"
seuraava, käytä restorecon
komentoa näiden muutosten soveltamiseen ja niiden jatkamiseen uudelleenkäynnistysten välillä:
- sudo restorecon -R -v /var/www/example.com/log
-R
lippu suorittaa tämän komennon rekursiivisesti, eli se päivittää olemassa olevat tiedostot käyttämään uutta kontekstia. -v
lippu tulostaa komennon yhteydessä tehdyt muutokset. Näet seuraavan tuotoksen, joka vahvistaa muutokset:
Outputrestorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0
voit luetella kontekstit vielä kerran nähdäksesi muutokset:
- sudo ls -dZ /var/www/example.com/log/
tuotos kuvastaa päivitettyä kontekstityyppiä:
Outputdrwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log
nyt kun /var/www/example.com/log
hakemistossa on käytössä httpd_log_t
type, olet valmis testaamaan virtuaalisen isäntäkonfiguraatiosi.
Vaihe 6 — Virtual Hostin testaus (suositus)
kun SELinux-konteksti on päivitetty jommallakummalla menetelmällä, Apache voi kirjoittaa /var/www/example.com/log
– hakemistoon. Voit nyt käynnistää Apache-palvelun onnistuneesti uudelleen:
- sudo systemctl restart httpd
listaa /var/www/example.com/log
hakemiston sisältö nähdäksesi, onko Apache luonut lokitiedostot:
- ls -lZ /var/www/example.com/log
näet, että Apache pystyi luomaan error.log
ja requests.log
tiedostot, jotka on määritelty virtual host-kokoonpanossa:
Output-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log
nyt kun olet määrittänyt virtuaalisen isäntäsi ja päivittänyt SELinuxin käyttöoikeudet, Apache palvelee nyt verkkotunnustasi. Tätä voi testata navigoimalla http://example.com
, jossa pitäisi nähdä jotain tällaista:
Tämä vahvistaa, että virtuaalinen isäntäsi on onnistuneesti määritetty ja tarjoiltu sisältöä. Toista vaiheet 4 ja 5 luodaksesi uusia virtuaalisia isäntiä, joilla on SELinux-oikeudet lisäalueille.
johtopäätös
tässä opetusohjelmassa asensit ja hallitsit Apache-www-palvelinta. Nyt kun web-palvelin on asennettu, sinulla on monia vaihtoehtoja sisällön tyyppi voit palvella ja teknologioita voit luoda rikkaampi kokemus.
Jos haluat rakentaa täydellisemmän sovelluspinon, voit katsoa tämän artikkelin siitä, miten Lamppupino määritetään CentOS 7: ssä.