Az Apache virtualhost
lehetővé teszi egynél több webhely futtatását egyetlen szerveren. A virtualhostok
segítségével megadhatod a webhely gyökérkönyvtárát (a webhely fájljait tartalmazó könyvtárat), külön biztonsági beállításokat hozhatsz létre minden webhelyhez, különböző SSL-tanúsítványokat használhatsz, és még sok mást.
Ez a cikk bemutatja, hogyan állíthatod be az Apache virtualhost
szolgáltatást CentOS 8 linux rendszeren.
Előfeltételek
Mielőt folytatnánk győződjünk meg, hogy adottak-e az ideális feltételek:
- Van olyan domain neved beállítva, ami publikus IP-re mutat. pl. nekem a linuxtudor.hu a 139.28.140.95 ip-re mutat. Ez egy A rekord a DNS-ben bejegyezve.
- Az Apache webszerver telepítve van a Rocky Linux 9 linux rendszeredre.
- root vagy sudo jogosultságokkal rendelkező felhasználóként vagy bejelentkezve.
Végezzük el az előfeltételek ellenőrzését
A golinux.hu domainnal fogok dolgozni:
nslookup golinux.hu
Non-authoritative answer: Name: golinux.hu Address: 159.223.9.239

Ez így megfelelő. A képen a névszerver beállításom látható ez eltérhet, attól függően hol lett a domain regisztrálva és ki biztosítja a namserve
r-t.
Még gyorsan ellenőrizzük az apache rajta van-e a gépen és fut-e a szolgáltatása:
systemctl status httpd
Egy elfogadható kimenet:
● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d └─php-fpm.conf Active: active (running) since Tue 2022-09-06 15:44:34 UTC; 3h 25min ago Docs: man:httpd.service(8) Main PID: 17033 (httpd) Status: "Total requests: 42; Idle/Busy workers 100/0;Requests/sec: 0.0034; Bytes served/sec: 177 B/sec" Tasks: 278 (limit: 4676) Memory: 33.1M CGroup: /system.slice/httpd.service ├─17033 /usr/sbin/httpd -DFOREGROUND ├─17035 /usr/sbin/httpd -DFOREGROUND ├─17036 /usr/sbin/httpd -DFOREGROUND ├─17037 /usr/sbin/httpd -DFOREGROUND ├─17038 /usr/sbin/httpd -DFOREGROUND └─17260 /usr/sbin/httpd -DFOREGROUND
Minden adott a virtualhost kialakításához, az előfeltétlek ideálisak.
Könyvtár struktúra kialakítása
Jelen példában csak egy domain állítunk be, a golinux.hu-t, de a többi domain-od is hasonlóan mehet mellé. A /var/www könyvtárba fogjuk a domain webroot könyvtárait létrehozni.
/var/www/ ├── peldadomain.hu ├── peldadomain.org ├── peldadomain.com
Az én saját virtulalhost-om webroot-ja a /var/www/golinux.hu/
könyvtár lesz. Amit ide teszek, az lesz a http://golinux.hu/ tartalma.
Létre is hozom ezt a könyvtárat:
mkdir -p /var/www/golinux.hu
A virtualhost konfigurációs fájl létrehozása
Van néhány módja a virtuális host beállításának. Fel lehet venni az összes virtuális host-ot egyetlen fájlba, vagy létrehozhatsz minden egyes virtuális host-hoz egy-egy külön konfigurációs fájlt. Általában előnyben kell részesíteni a második megközelítést, amely jobban karbantartható és átlátható.
Alapértelmezés szerint az Apache úgy van beállítva, hogy az /etc/httpd/conf.d/
könyvtárból betöltse az összes konfigurációs fájlt, amely .conf-ra végződik. Nyissuk meg vim-mel a /etc/httpd/conf.d/golinux.hu.conf
<VirtualHost *:80> ServerName golinux.hu ServerAlias www.golinux.hu ServerAdmin webmaster@golinux.hu DocumentRoot /var/www/golinux.hu/ <Directory /var/www/golinux.hu> Options -Indexes +FollowSymLinks AllowOverride All </Directory> ErrorLog /var/log/httpd/golinux.hu-error.log CustomLog /var/log/httpd/golinux.hu-access.log combined </VirtualHost>
ServerName
: Annak a tartománynak a neve, amelyhez a virtuális host konfigurációt használni fogod. Ez a domain neve.ServerAlias
: Minden más tartomány, amelyhez a virtuális host konfigurációja is használatos, például azwww
aldomain. Majd a későbbiekben átirányítjuk, így nem lesz www.golinux.hu csak golinux.huServerAdmin
: bármilyen e-mail cím, nem fogjuk használni.DocumentRoot
: Az a könyvtár, amelyből az Apache kiszolgálja a tartományfájlokat.Directory:
Ez a direktíva vezérli a könyvtáronkénti kiszolgáló viselkedését.ErrorLog
,CustomLog
: A naplófájlok helye.
Szerkeszd a fájlt igényeid szerint, és mentsd el.
A konfigurációs fájl nevének .conf-ra kell végződnie. A konfigurációs fájlt tetszés szerint nevezheted el. A legjobb módszer viszont a doménnév használata a virtuális host konfigurációs fájl neveként.
Teszteld a konfigurációs fájl szintaxisát a következővel:
apachectl configtest
Ha minden rendben a kimenete egy Syntax OK
Mivel az apache konfigurációja megváltozott újra kell indítani a szolgáltatást:
systemctl restart httpd
Apache virtuális host működésének ellenőrzése
Tesztelés céljából hozzunk létre egy index.html fájlt a virtuális host gyökérkönyvtárába:
vi /var/www/golinux.hu/index.html
Tartalma pedig a következő legyen:
<!DOCTYPE html> <html lang="hu" dir="ltr"> <head> <meta charset="utf-8"> <title>Kezdőoldal - golinux.hu</title> </head> <body> <h1>Nagyszerű! Az az első virtális hostom!</h1> </body> </html>
Fontos hogy megfelelő jogosultság legyen a fájlon, mert ha a root-é nem fog futni, ezért adjuk át az apache felhasználónak.
chown -R apache: /var/www/golinux.hu
Így kell kinéznie a fájlnak:
-rw-r--r--. 1 apache apache 215 Sep 6 20:14 /var/www/golinux.hu/index.html
Nyisd meg böngészőben http://golinux.hu
címet, és ellenőrizd, hogy minden a várt módon működik-e.
Mondjuk egy ehhez hasonló kimenet elfogadható:

Összegzés
Ha sikerült betölteni a böngészőbe az első virtuális hostunk, akkor ennek analógiájára létrehozhatunk további virtuális hostokat vagy jelen esetben domain-okat (pl. golinux.org, linuxninja.hu stb.) és aldomain-okat (pl. tippek.golinux.hu). Még egy feladatunk maradt az TLS/SSL beállítása, hogy weboldalunkra látogatók nagyobb biztonságba legyenek.