A webszerver weboldalakat tárol, dolgoz fel és kézbesít a webhely látogatóinak. Számos nyílt forráskódú webszerver szoftverlehetőség létezik, de az Apache HTTP-szerver számít a világ legszélesebb körben használt webszerverének. Ez azért van így, mert azon kívül, hogy nyílt forráskódú, moduláris felépítése lehetővé teszi képességeinek bővítését különböző célokat szolgáló modulok hozzáadásával. Ennek eredményeként a webszerver rendkívül robusztus.
Ha az Apache-t szeretné telepíteni egy CentOS 7 rendszerre, ez az útmutató Önnek szól. Emellett megtanulhatja, hogyan hozhat létre virtuális gazdagépeket , így több webhelyet is kiszolgálhat egyetlen CentOS-en futó Apache HTTP-szerveren.
Ez egy részletes útmutató, amely kizárólag az Apache telepítésére összpontosít. Ha a LAMP-szoftvercsomagról szóló, vázlatos útmutatót kereste, ajánljuk a Hogyan telepítsük a Linux, Apache, MySQL, PHP (LAMP) rendszert CentOS 7-re című útmutatónkat. Most pedig kezdjük el!
Előfeltételek
Mivel ez egy gyakorlati útmutató, a következőkre lesz szüksége:
- Egy CentOS 7-et futtató szerver, amelyet néhány egyszerű lépésben létrehozhat ezen a linken.
- Konfiguráljon egy nem-root felhasználót sudo jogosultságokkal a szerverén. Ezután jelentkezzen be ezzel a felhasználóval.
- Konfiguráljon egy alapvető tűzfalat a következő útmutatónk lépéseit követve: Tűzfal beállítása FirewallD segítségével CentOS 7-en.
1. lépés: Az Apache HTTP-szerver telepítése
Az Apache megtalálható a CentOS alapértelmezett tárolóiban. Ezért a telepítés rendkívül egyszerű a yum csomagkezelővel. Az előfeltételek szakaszban leírtak szerint be kell jelentkeznie a nem-root felhasználóval. Futtassa a következő parancsot a terminálban a helyi Apache httpd csomagindex frissítéséhez:
|
1 |
sudo yum update httpd |
A csomagok frissítése után írja be a következő parancsot az Apache telepítéséhez:
|
1 |
sudo yum install httpd |
Hagyja jóvá a telepítést, és várja meg, amíg a yum telepíti az Apache-t és a szükséges függőségeit.
Ha követte a lépéseket a Tűzfal beállítása FirewallD segítségével CentOS 7-en című útmutatóban, és engedélyezte a tűzfalat a 80-as porton, akkor készen is van. Firewalld a CentOS tűzfalkezelője. Ellenkező esetben a következő parancs beírásával engedélyezheti a firewalld http (80-as port) szolgáltatását:
|
1 |
sudo firewall-cmd --permanent --add-service=http |
Ha a forgalmat biztonságos HTTPS-en keresztül szeretné kiszolgálni, akkor a következő parancs beírásával engedélyezheti a firewalld https (443-as port) szolgáltatását:
|
1 |
sudo firewall-cmd --permanent --add-service=https |
Végül újra kell töltenie a firewalld-t a változtatások érvénybe lépéséhez. Íme az újratöltés parancsa:
|
1 |
sudo firewall-cmd –reload |
Ezen a ponton már telepítette és konfigurálta az Apache-t a forgalom HTTP-n vagy HTTPS-en keresztüli kiszolgálására, attól függően, hogy futtatta-e a fenti parancsokat.
2. lépés: Az Apache webszerver futásának ellenőrzése
CentOS-en az Apache folyamat nem indul el automatikusan a telepítés után. Az Apache manuális elindításához írja be a következő parancsot:
|
1 |
sudo systemctl start httpd |
A szolgáltatás sikeres elindulásának ellenőrzéséhez ellenőrizze az állapotot a következő parancs beírásával:
|
1 |
sudo systemctl status httpd |
Ha a szolgáltatás fut, a lenti képernyőképhez hasonló kimenetet kell látnia. Figyelje meg az aktív (active) állapotot:

A kimenet azt jelzi, hogy a szolgáltatás sikeresen elindult és fut. Ezután azt is le kell tesztelnünk, hogy az Apache képes-e oldalt kiszolgálni az internetes felhasználóknak. Az Apache tartalmaz egy alapértelmezett oldalt, amellyel tesztelheti, hogy a szervere elérhető-e az interneten keresztül.
Meg kell találnia a szervere nyilvános IP-címét, ha még nem tudja. Ezt az IP-címet kell beírnia a böngészője címsorába az alapértelmezett Apache weboldal lekéréséhez. A gazdagép hálózati címeit a következő parancs beírásával jelenítheti meg:
|
1 |
hostname –I |
A kapott címek listájából mindegyiket kipróbálhatja a böngészőjében, hogy ellenőrizze a működésüket. Opcionálisan használhatja a curl hogy lekérje az IP-címét innen: icanhazip.com. Az alábbi parancs kiírja a nyilvános IP-címét, ahogyan az egy másik internetes helyen lévő számítógépről látható:
|
1 |
curl -4 icanhazip.com |
Miután megvan a szervere nyilvános IP-címe, másolja be a böngészője címsorába:
|
1 |
http://your_server_public_ip |
A böngészőjének be kell töltenie az alapértelmezett CentOS 7 Apache weboldalt:

Ha be tudta tölteni az alapértelmezett Apache weboldalt, az azt jelenti, hogy a szervere megfelelően működik. Ha lejjebb görget, alapvető információkat láthat az Apache fájlokról és a könyvtárak helyéről. Ha a szolgáltatás telepítve van és megfelelően működik, használhatja a különböző systemctl parancsokat a szolgáltatás kezeléséhez.
3. lépés: Az Apache szolgáltatás kezelése
Ebben a részben bemutatunk néhány alapvető Apache kezelési parancsot. Íme a parancs, amely leállítja a webszervert:
|
1 |
sudo systemctl stop httpd |
Íme a parancs a webszerver elindításához:
|
1 |
sudo systemctl start httpd |
Következőként, íme a parancs a webszerver újraindításához (leállítás és indítás):
|
1 |
sudo systemctl restart httpd |
Ezután bemutatjuk az Apache szolgáltatás újratöltésére szolgáló parancsot. Ez a parancs akkor szükséges, ha csupán konfigurációs módosításokat hajt végre. Az újratöltéssel az Apache folyamat átveszi a konfigurációs változtatásokat anélkül, hogy megszakítaná a kapcsolatokat, mint ahogy az egy újraindítás esetén történt volna:
|
1 |
sudo systemctl reload httpd |
Az alapértelmezett konfigurációk szerint az Apache automatikusan elindul a szerver rendszerindításakor. Ha meg szeretné változtatni ezt a viselkedést, íme a parancs a szolgáltatás rendszerindításkor történő elindulásának letiltására:
|
1 |
sudo systemctl disable httpd |
A szolgáltatás rendszerindításkor történő elindulásának újbóli engedélyezéséhez írja be a következő parancsot:
|
1 |
sudo systemctl enable httpd |
4. lépés: Apache virtuális gazdagépek beállítása
Alapértelmezés szerint az Apache egyetlen webhely kiszolgálására van konfigurálva. A legtöbb esetben azt szeretné, hogy a webszervere több webhelyet is kiszolgáljon és hosztoljon. Például lehetnek aldomainjei, vagy szeretne egy blogoldalt beállítani a fő vállalati/szervezeti webhelyéhez. Itt jönnek képbe az Apache virtuális gazdagépek. Az Apache virtuális gazdagépek lehetővé teszik, hogy konfigurálja a webszervert több webhely kiszolgálására. Az Apache virtuális gazdagépek a szerverblokkok megfelelői az Nginx szerverben.
Ebben az útmutatóban bemutatjuk, hogyan hozhat létre virtuális gazdagépet az example.com tartományt használva domainként. Természetesen az example.com domain nem fog működni az interneten, ezért ki kell cserélnie a saját tényleges domainjére – a lépések ugyanazok.
Amikor telepíti az Apache-ot CentOS-re, az telepít egy virtuális gazdagépet, amely úgy van konfigurálva, hogy a tartalmat a /var/www/html könyvtárból szolgálja ki. Ez a kialakítás jól működik, ha egyetlen webhelyet hosztol. Mi azonban több webhelyet szeretnénk hosztolni. Meghagyjuk az alapértelmezett /var/www/html könyvtárat, és ehelyett létrehozunk egy másik könyvtárat az example.com domain számára a /var/www helyen. Az alapértelmezett könyvtár meghagyásának oka az, hogy ez szolgálja ki a kéréseket, ha az ügyfélkérések nem egyeznek meg a virtuális gazdagépekkel konfigurált többi webhellyel. Továbbá, ha le szeretné tiltani a létrehozott virtuális gazdagépeket, az alapértelmezett továbbra is kiszolgálja a forgalmat.
Először hozzon létre egy könyvtárat a /var/www könyvtáron belül a domain nevéhez. Szabadon választhat tetszőleges nevet. Azonban ajánlott a domainhez hasonló nevet választani a könnyű megjegyezhetőség érdekében, amikor létrehozza a virtuális gazdagép conf fájlját. Írja be a következő parancsot az example könyvtár létrehozásához:
|
1 |
sudo mkdir -p /var/www/example |
Írja be a következő parancsot egy további mappa létrehozásához, amely a webhely naplófájljait fogja tartalmazni:
|
1 |
sudo mkdir -p /var/www/example/log |
Miután a webhely könyvtárai a helyükön vannak, rendelje hozzá a könyvtár tulajdonjogát a $USER környezeti változóval a következő parancs segítségével:
|
1 |
sudo chown -R $USER:$USER /var/www/example |
Futtassa a következő parancsot annak biztosítására, hogy a webes gyökérkönyvtár az alapértelmezett jogosultságokkal rendelkezzen:
|
1 |
sudo chmod -R 755 /var/www |
Most hozzon létre egy egyszerű index.html oldalt a nano segítségével a(z) example könyvtárban a következő parancs beírásával:
|
1 |
sudo nano /var/www/example/index.html |
A nano szerkesztőben adja hozzá a következő HTML-kódrészletet:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Üdvözöljük a(z) Example.com!</title> </head> <body> <h1>Ha ön látja ezt az üzenetet, , az azt jelenti, hogy a(z) <em>example.com</em> virtuális gazdagép már működik!</h1> </body> </html> |
Ha végzett, mentse el a fájlt a Ctrl O billentyűkombinációval, majd nyomja meg az ENTER billentyűt. Most bezárhatja a szerkesztőt a Ctrl X.
Eddig megvan a webhely könyvtára és az alapvető weboldal a virtuális gazdagép teszteléséhez. Ezután létre kell hoznunk a virtuális gazdagép konfigurációs fájljait. A virtuális gazdagép fájljai határozzák meg az egyetlen Apache szerveren kiszolgálni kívánt különböző webhelyek konfigurációit. A beállított tartománynév-kéréseket a megfelelő könyvtárba irányítják.
A virtuális gazdagép fájljai a(z) /etc/httpd/sites-available könyvtárban tárolódnak. Az aktivált virtuális gazdagép fájlok szimbolikus linkkel kapcsolódnak a(z) /etc/httpd/sites-available könyvtárból a(z) /etc/httpd/sites-enabled könyvtárba. Ez a két könyvtár alapértelmezés szerint nem jön létre CentOS rendszeren, ezért magának kell létrehoznia őket. Írja be a következő parancsot a könyvtárak létrehozásához:
|
1 |
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled |
Miután a könyvtárak a helyükön vannak, utasítsa az Apache-ot, hogy a sites-enabled könyvtárban keresse a virtuális gazdagépeket. Ezt az Apache fő konfigurációs fájljának módosításával teheti meg. Írja be a következő parancsot a fájl nano szerkesztőben való megnyitásához:
|
1 |
sudo nano /etc/httpd/conf/httpd.conf |
Szeretnénk hozzáadni egy sort, amely arra utasítja az Apache-ot, hogy egy opcionális könyvtárban keressen további konfigurációs fájlokat. Görgessen a fájl aljára, és adja hozzá a következő sort a végéhez:
|
1 |
IncludeOptional sites-enabled/*.conf |
Mentse el a fájlt a Ctrl O billentyűkombinációval, majd nyomja meg az ENTER billentyűt. Most bezárhatja a szerkesztőt a Ctrl X billentyűkkel. A következő lépés a virtuális gazdagép fájljának létrehozása a sites-available könyvtárban. Írja be a következő parancsot az új fájl létrehozásához és nano szerkesztővel való megnyitásához:
|
1 |
sudo nano /etc/httpd/sites-available/example.conf |
A megnyitott fájlban adja hozzá a következő konfigurációs blokkot. Ne felejtse el lecserélni az example.com címet a saját tartománynevére, és ha eltérő könyvtárnevet használt a /var/www/example helyen, akkor azt is frissítse értelemszerűen:
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example ErrorLog /var/www/example/log/error.log CustomLog /var/www/example/log/requests.log combined </VirtualHost> |
Mint látható, megadtuk a tartománynevet és a dokumentum gyökérkönyvtárát, ahol az ehhez a tartományhoz kiszolgálandó fájlok találhatók. Megadtuk a hibanapló helyét is – ez segítséget nyújt majd a szerver hibaelhárítása során.
Miután a virtuális gazdagép fájlja a(z) sites-available könyvtárban van, a következő lépés a fájl engedélyezése egy szimbolikus link létrehozásával a(z) sites-enabled könyvtárba. Írja be a következő parancsot a szimbolikus link létrehozásához:
|
1 |
sudo ln -s /etc/httpd/sites-available/example.conf /etc/httpd/sites-enabled/example.conf |
Ha idáig követte a lépéseket, a virtuális gazdagépnek mostanra készen kell állnia a weboldal tartalmának kiszolgálására. Van azonban még egy ellenőrzés, amelyet be kell állítania, mielőtt a virtuális gazdagépek működni kezdenének. Ezzel a következőkben foglalkozunk.
5. lépés: A SELinux jogosultságok módosítása a virtuális gazdagépek engedélyezéséhez
A Linux-disztribúciók, beleértve a Fedora, RHEL és CentOS rendszereket, alapértelmezés szerint tartalmazzák a SELinuxot. SELinux (Security Enhanced Linux) egy biztonsági architektúra Linux rendszerekhez, amely korlátozza és meghatározza, hogyan dolgozza fel a szerver a kéréseket, és hogyan lépjenek interakcióba a felhasználók a socketekkel, hálózati portokkal és az alapvető könyvtárakkal.
Alapértelmezés szerint a SELinux együttműködik az alapértelmezett Apache konfigurációval. Az Ön által létrehozott egyéni virtuális gazdagép esetében azonban – beleértve az egyéni naplózási könyvtárat is – szolgáltatáshiba lép fel, amikor megpróbálja újraindítani az Apache szolgáltatást. A megoldás a SELinux szabályzatok módosítása, hogy az Apache szolgáltatás írhasson a szükséges fájlokba.
A SELinux rendkívül biztonságos szerverré teszi a CentOS-t. Ezért nem javasoljuk a teljes kikapcsolását. Mivel a SELinux lehetővé teszi a biztonsági szint többféle módon történő testreszabását, javasoljuk, hogy a szabályzatokat csak a környezet igényei alapján frissítse vagy állítsa be.
Két lehetősége van az Apache szabályzatok frissítésére: vagy Univerzálisan vagy Konkrét könyvtáranként. Egy adott könyvtárra vonatkozó szabályzatok frissítése biztonságosabb. Ezért ez az ajánlott opció.
-
Az Apache szabályzatok univerzális frissítése
Módosíthatja az Apache szabályzatot univerzálisan, ami arra utasítja a SELinuxot, hogy minden Apache folyamatot azonosan kezeljen, a következő logikai érték (Boolean) használatával: httpd_unified. Ne feledje, hogy az Apache szabályzatok univerzális módosítása nem biztosít ugyanolyan szintű ellenőrzést, mint az egyes könyvtárak egyedi beállítása. Karbantartás szempontjából azonban kényelmesebb. Futtassa a következő parancsot az Apache szabályzatok univerzális frissítéséhez:
|
1 |
sudo setsebool -P httpd_unified 1 |
Nézzük meg, mit csinálnak a parancsban szereplő értékek:
- setsebool – frissíti a SELinux logikai (boolean) értékeit.
- -P tag – frissíti a rendszerindításkori értéket, így ez a változás az újraindítások után is megmarad.
- httpd_unified – az a logikai érték, amely arra utasítja a SELinuxot, hogy minden Apache folyamatot azonos típusúként kezeljen. Az 1-es érték használata engedélyezi azt.
-
Apache szabályzatok módosítása egy könyvtáron
Ha nagyobb ellenőrzést szeretne a könyvtárak felett, akkor az Apache szabályzatok könyvtárankénti módosítása a megfelelő út. Ez azonban azzal a többletköltséggel jár, hogy több karbantartást igényel. Ennek oka, hogy a szabályzat nem globális. Ezért manuálisan kell beállítania a környezet típusát (context type) minden olyan új naplózási könyvtárhoz, amelyet a virtuális gazdagép conf fájljaiban megad.
A szabályzat frissítése előtt először ellenőrizze a SELinux által a /var/www/example/log könyvtárhoz rendelt környezettípust a következő paranccsal:
|
1 |
sudo ls -dZ /var/www/example/log/ |
A parancs a következőhöz hasonló kimenetet ad, ami alapvetően a könyvtár SELinux környezete (context):
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example/log/ |
httpd_sys_content_t a jelenlegi környezet, amely azt jelzi a SELinuxnak, hogy az Apache folyamat csak az ebben a könyvtárban létrehozott fájlokat olvashatja. Mivel a virtuális gazdagép konfigurációink alapján azt szeretnénk, hogy az Apache írhasson a naplófájlokba a /var/www/example/log könyvtárban, módosítani fogjuk ezt a szabályzatot, hogy lehetővé tegyük az Apache számára a webalkalmazás naplófájljainak létrehozását és azokhoz való hozzáfűzést. Az ezt lehetővé tevő környezet a httpd_log_t. Íme a parancs a környezet frissítésére:
|
1 |
sudo semanage fcontext -a -t httpd_log_t "/var/www/example/log(/.*)?" |
A fenti parancs módosításainak alkalmazásához és ahhoz, hogy azok a rendszerindítások után is megmaradjanak, futtassa a következő parancsot:
|
1 |
sudo restorecon -R -v /var/www/example/log |
Nézzük meg, mit csinál a parancs:
- restorecon – alkalmazza a változtatásokat, és biztosítja, hogy azok újraindítás után is megmaradjanak.
- -R flag – rekurzívan futtatja a parancsot, frissítve a meglévő fájlokat az új kontextus használatára.
- -v flag – kiírja a kontextus változásait a parancs lefutása után. Valami ilyesmit fog kiírni:
|
1 2 |
Kimenet: restorecon reset /var/www/example/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0 |
|
1 |
sudo ls -dZ /var/www/example/log/ |
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log |
6. lépés: A virtuális gazdagép konfigurációjának tesztelése
Mielőtt tesztelhetné a virtuális gazdagépet, újra kell indítania az Apache szolgáltatásokat. Íme az ehhez szükséges parancs:
|
1 |
sudo systemctl restart httpd |
Ezután listázza ki a naplókönyvtár tartalmát a következő paranccsal:
|
1 |
ls -lZ /var/www/example/log |
Valami ilyesmit kell mutatnia, jelezve, hogy az Apache létrehozta a naplófájlokat:

Ha eddig követte a lépéseket, az Apache-nak most már képesnek kell lennie a minta HTML-oldal kiszolgálására, amikor meglátogatja a virtuális gazdagép fájljában meghatározott tartománynevét. Ha szeretné, megismételheti a 4. és 5. lépést további tartományok beállításához és az SELinux engedélyeik megfelelő frissítéséhez.
Összegzés
Ebben az útmutatóban telepítettük az Apache-ot, megtanultuk, hogyan frissítsük az SELinux irányelveket, hogy az Apache írhasson az egyéni naplófájlokba, és végül teszteltük a konfigurációnkat, hogy megbizonyosodjunk a helyes működéséről. Ezzel a háttérrel képesnek kell lennie arra, hogy erre építve jobb alkalmazásokat és gazdagabb élményeket nyújtson.
Ha szeretne felfedezni egy teljes webszoftver-csomagot, tekintse meg a következő útmutatónkat: a LAMP-csomag telepítése CentOS 7 rendszerre.
Kellemes számítógépezést!
Hozzászólások
Még nincsenek hozzászólások. Legyen Ön az első.