Kako instalirati Apache sa virtuelnim hostom na CentOS 8


Apache web server je opensource i popularan HTTP web server koji nastavlja da uživa ogroman udio na tržištu u industriji hostinga. Isporučuje se sa mnoštvom funkcija uključujući poboljšanja modula, podršku za više protokola, pojednostavljenu konfiguraciju i podršku za više jezika da spomenemo samo neke.

Pročitajte također: Kako instalirati Nginx na CentOS 8

U ovom vodiču ćemo vas provesti kroz instalaciju Apache web servera na CentOS 8 i RHEL 8 sa okruženjem Virtual Host. U vrijeme pisanja ovog vodiča, najnovija verzija Apache-a je Apache 2.2.43.

Instaliranje Apache web servera

Da biste započeli, prvo ažurirajte svoju CentOS 8 ili RHEL 8 listu sistemskih paketa koristeći sljedeću dnf komandu.

sudo dnf update

Kada se ažuriranje završi, instalirajte Apache web server tako što ćete izvršiti sljedeću naredbu.

sudo dnf install httpd

Jednom instaliran, možete provjeriti verziju Apache-a pokretanjem naredbe rpm.

rpm -qi httpd

Naredba ispisuje niz informacija kao što su verzija, datum izdavanja, izrada i arhitektura paketa.

Da biste pokrenuli Apache HTTP web uslugu, pokrenite naredbu systemctl.

sudo systemctl start httpd

Da potvrdite da li je usluga pokrenuta, izvršite.

sudo systemctl status httpd

Iz izlaza, „aktivan“ status u zelenoj boji ukazuje da je Apache web server pokrenut i da radi.

Da biste otklonili sve sumnje da web server radi, zatražite probnu stranicu od Apachea tako što ćete pregledati IP adresu ili naziv domene vašeg servera kao što je prikazano.

http://server-ip  

Možete dobiti IP servera pokretanjem naredbe ifconfig. Ako je vaš server hostovan u oblaku, javni IP možete dobiti pokretanjem naredbe curl.

curl ifconfig.me 
OR
curl -4 icanhazip.com

Kada pretražujete IP adresu servera, trebalo bi da vam se prikaže sljedeća web stranica.

Ovo je sigurna potvrda da web server radi.

Upravljanje Apache web serverom

Sa Apache instaliranim i pokrenutim, možete koristiti systemctl alat za inspekciju za upravljanje Apacheom.

Na primjer, da zaustavite Apache, pokrenite naredbu:

sudo systemctl stop httpd

Da ponovo pokrenete uslugu, izvršite:

sudo systemctl start httpd

Ako ste izvršili promjene u bilo kojoj od njegovih konfiguracijskih datoteka i morate ponovo pokrenuti da biste primijenili promjene, izvršite naredbu:

sudo systemctl restart httpd

Ponovno pokretanje usluge obično uzrokuje prekid usluge. Bolja alternativa je jednostavno ponovno učitavanje bez ikakvog prekida veze.

sudo systemctl reload httpd

Da biste automatski pokrenuli Apache web server nakon pokretanja ili ponovnog pokretanja, pokrenite naredbu ispod. Ovo će osigurati da se Apache automatski pokreće bez vaše intervencije.

sudo systemctl enable httpd

Ako odaberete da ne pokrenete uslugu automatski pri pokretanju, pokrenite:

sudo systemctl disable httpd

Postavljanje Apache virtuelnih hostova

Prema zadanim postavkama, Apache web server je konfiguriran da služi ili hostuje samo jednu web stranicu. Ako želite da hostirate samo jednu web stranicu, ovaj korak nije potreban. Ali u slučaju da planirate da ugostite više domena na svom serveru, onda morate da konfigurišete Apache virtuelne hostove.

Virtuelni host je zasebna datoteka koja sadrži konfiguracije koje vam omogućavaju da postavite zasebnu domenu od podrazumevane. Za ovaj vodič, postavićemo virtuelni host za domen crazytechgeek.info.

Podrazumevani virtuelni host se nalazi u /var/www/html direktorijumu. Ovo radi samo za jednu lokaciju. Da kreiramo poseban virtuelni host za našu domenu, kreiraćemo drugu strukturu direktorijuma unutar /var/www direktorijuma kao što je prikazano.

sudo mkdir -p /var/www/crazytechgeek.info/html

Dodatno, možete kreirati i direktorij za pohranjivanje datoteka dnevnika.

sudo mkdir -p /var/www/crazytechgeek.info/log

Zatim uredite dozvole za fajl koristeći $USER varijablu okruženja kao što je prikazano.

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Također, prilagodite dozvole webroot direktorija kao što je prikazano.

sudo chmod -R 755 /var/www

Zatim kreirajte uzorak datoteke index.html kao što je prikazano.

sudo vim /var/www/crazytechgeek.info/html/index.html

Pritisnite slovo 'i' na tastaturi i zalijepite neki uzorak sadržaja kao što je prikazano koji će biti prikazan na web pretraživaču prilikom testiranja virtuelnog hosta.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Sačuvajte i izađite iz konfiguracione datoteke.

Sa kreiranim uzorkom indeksne datoteke i direktorija web mjesta, sada možete nastaviti i kreirati virtualnu host datoteku. Datoteka virtuelnog hosta će sadržavati konfiguraciju stranice vaše domene i uputiti Apacheu kako će odgovoriti na zahtjeve klijenata.

Datoteka virtuelnog hosta će sadržavati konfiguraciju stranice vaše domene i uputiti Apacheu kako će odgovoriti na zahtjeve klijenata. Ali u nastavku, trebate kreirati 2 direktorija: sites-available i sites-enabled direktorij.

Datoteka virtuelnog hosta će biti pohranjena u direktoriju sites-available dok će sites-enabled direktorij sadržavati simboličku vezu do virtualnog hosta.

Kreirajte oba direktorija kao što je prikazano.

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

Zatim izmijenite glavnu konfiguracijsku datoteku Apache web servera i uputite Apacheu gdje da locira virtualni host unutar direktorija s omogućenim web lokacijama.

sudo vim /etc/httpd/conf/httpd.conf

Dodajte red kao što je prikazano na samom kraju konfiguracionog fajla.

IncludeOptional sites-enabled/*.conf

Sačuvaj i izađi.

Sada kreirajte virtuelni host fajl kao što je prikazano:

sudo vim /etc/httpd/sites-available/crazytechgeek.info

Zalijepite sadržaj ispod i zamijenite crazytechgeek.info sa svojim imenom domene.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Sačuvajte i izađite iz datoteke.

Sada omogućite virtuelni host fajl kreiranjem simboličke veze u sites-enabled direktorijumu.

sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Podešavanje SELinux dozvola za virtuelne hostove

CentOS 8 i RHEL 8 se isporučuju sa SELinux koji je sigurnosni modul za jačanje sigurnosti Linux sistema. Pošto ste u prethodnom koraku konfigurisali prilagođeni log direktorij, morate ažurirati neke SELinux politike kako biste uputili Apache web server da piše u direktorij.

Postoje 2 pristupa u prilagođavanju SELinux Apache politika: univerzalno prilagođavanje politika i politika u direktoriju. Ovo drugo je poželjnije jer je poželjnije.

Prilagođavanje SELinux politika na direktoriju

Uređivanje SELinux dozvola za direktorij dnevnika daje vam apsolutnu kontrolu nad pravilima Apache web servera. Ova metoda je prilično duga i zahtijeva od vas da ručno konfigurirate tip konteksta za dodatne direktorije navedene u konfiguracijskoj datoteci virtualnog hosta.

Prije nego što počnete, prvo potvrdite tip konteksta koji je SELinux dodijelio direktoriju dnevnika:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Izlaz bi trebao biti sličan onome što imamo u nastavku.

Iz izlaza, postavljeni kontekst je httpd_sys_content_t. Ovo ukazuje da web server može čitati samo datoteke u direktoriju dnevnika. Morate promijeniti ovaj kontekst u httpd_log_t da omogućite Apacheu da generiše i dodaje unose dnevnika u direktorij.

Stoga, izvršite naredbu:

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Ako slučajno dobijete grešku ispod „semanage: komanda nije pronađena“.

To implicira da paketi koji obezbjeđuju naredbu semanage nisu instalirani. Da biste ispravili ovu grešku, morate instalirati te pakete. Ali prvo, provjerite koji paketi pružaju naredbu semanage tako što ćete pokrenuti:

sudo dnf whatprovides /usr/sbin/semanage

Izlaz nam daje paket koji omogućava upravljanje, a to je policycoreutils-python-utils.

Sada instalirajte paket kao što je prikazano koristeći DNF menadžer paketa.

sudo dnf install policycoreutils-python-utils

Naredba za promjenu konteksta bi sada trebala raditi.

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Da sačuvate promjene i učinite ih trajnim, izdajte naredbu restorecon kao što je prikazano:

sudo restorecon -R -v /var/www/crazytechgeek.info/log

Promjene možete potvrditi ponovnim pokretanjem naredbe:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Svakako imajte na umu da se tip konteksta promijenio u httpd_log_t kao što se vidi u izlazu.

Ponovo pokrenite Apache da bi promjene bile primijenjene.

sudo systemctl restart httpd

Sada možete potvrditi da li Apache sprema datoteke dnevnika u direktorij dnevnika navodeći njegov sadržaj kao što je prikazano:

ls -l /var/www/crazytechgeek.info/log/

Trebali biste moći vidjeti dvije datoteke dnevnika kao što je prikazano: dnevnik grešaka i log fajlove zahtjeva.

Testiranje Apache virtuelnog hosta

Na kraju, morate biti sigurni da Apache web server opslužuje vašu virtualnu host datoteku. Da biste to uradili, otvorite pretraživač i idite na IP adresu ili naziv domene vašeg servera:

http://domain-name

Savršeno! Ovo ukazuje da je sve prošlo dobro i da se naš virtuelni host opslužuje prema očekivanjima.

Zaključak

U ovom vodiču naučili smo kako da instaliramo Apache web server na CentOS 8 i RHEL 8 i kako da konfigurišemo virtuelnu datoteku hosta da posluživanje sadržaja za dodatnu domenu. Slobodno konfigurirajte više datoteka virtualnog hosta kako smatrate prikladnim za smještaj dodatnih domena.

Ako želite da postavite kompletan hosting stog, preporučio sam vam da instalirate LAMP stack na CentOS 8.