Kako namestiti Apache z navideznim gostiteljem na CentOS 8


Spletni strežnik Apache je odprti vir in priljubljen spletni strežnik HTTP, ki ima še vedno velik tržni delež v industriji gostovanja. Ponuja veliko funkcij, vključno z izboljšavami modulov, podporo za več protokolov, poenostavljeno konfiguracijo in podporo za več jezikov, če omenimo le nekatere.

V tem priročniku vas bomo vodili skozi namestitev spletnega strežnika Apache na CentOS 8 in RHEL 8 z okoljem Virtual Host. V času pisanja te vadnice je najnovejša različica Apacheja Apache 2.2.43.

Namestitev spletnega strežnika Apache

Za začetek najprej posodobite seznam sistemskih paketov CentOS 8 ali RHEL 8 z naslednjim ukazom dnf.

$ sudo dnf update

Ko je posodobitev končana, namestite spletni strežnik Apache z izvajanjem naslednjega ukaza.

$ sudo dnf install httpd

Po namestitvi lahko različico Apache preverite z zagonom ukaza rpm.

$ rpm -qi httpd

Ukaz natisne vrsto informacij, kot so različica, datum izdaje, gradnja in arhitektura paketa.

Če želite zagnati spletno storitev Apache HTTP, zaženite ukaz systemctl.

$ sudo systemctl start httpd

Če želite potrditi, ali se storitev izvaja, zaženite.

$ sudo systemctl status httpd

Iz izhoda izhaja, da je status »aktiven« v zeleni označen, da spletni strežnik Apache deluje in deluje.

Če želite odpraviti dvome, da spletni strežnik deluje, od Apacheja zahtevajte preskusno stran tako, da poiščete naslov IP ali ime domene strežnika, kot je prikazano.

http://server-ip  

IP strežnika lahko dobite z zagonom ukaza curl.

$ curl ifconfig.me 
OR
$ curl -4 icanhazip.com

Ko brskate po naslovu IP strežnika, se prikaže naslednja spletna stran.

To je zanesljiva potrditev, da spletni strežnik deluje.

Upravljanje spletnega strežnika Apache

Ko je Apache nameščen in deluje, lahko za upravljanje Apacheja uporabljate orodje systemctl.

Če želite na primer ustaviti Apache, zaženite ukaz:

$ sudo systemctl stop httpd

Če želite storitev znova zagnati, izvedite:

$ sudo systemctl start httpd

Če ste spremenili katero koli konfiguracijsko datoteko in jo morate znova zagnati, da uveljavite spremembe, izvedite ukaz:

$ sudo systemctl restart httpd

Ponovni zagon storitve običajno povzroči motnje v storitvi. Boljša alternativa je preprosto ponovno nalaganje brez kakršnih koli prekinitev povezave.

$ sudo systemctl reload httpd

Za samodejni zagon spletnega strežnika Apache ob zagonu ali ponovnem zagonu zaženite spodnji ukaz. To bo zagotovilo, da se Apache samodejno zažene brez vašega posredovanja.

$ sudo systemctl enable httpd

Če se ob zagonu storitve ne zaženete samodejno, zaženite:

$ sudo systemctl disable httpd

Nastavitev navideznih gostiteljev Apache

Spletni strežnik Apache je privzeto konfiguriran tako, da služi ali gosti samo eno spletno mesto. Če želite gostiti samo eno spletno mesto, potem ta korak ni potreben. Toda če nameravate na strežniku gostiti več domen, morate konfigurirati navidezne gostitelje Apache.

Navidezni gostitelj je ločena datoteka, ki vsebuje konfiguracije, ki omogočajo nastavitev ločene domene od privzete. V tem priročniku bomo nastavili navideznega gostitelja za domeno crazytechgeek.info.

Privzeti navidezni gostitelj se nahaja v imeniku /var/www/html . To deluje samo za eno spletno mesto. Če želite ustvariti ločen navidezni gostitelj za našo domeno, bomo v imeniku /var/www ustvarili drugo strukturo imenikov, kot je prikazano.

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

Poleg tega lahko ustvarite tudi imenik za shranjevanje dnevniških datotek.

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

Nato uredite dovoljenja za datoteko s spremenljivko okolja $USER , kot je prikazano.

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

Prav tako prilagodite dovoljenja imenika webroot, kot je prikazano.

$ sudo chmod -R 755 /var/www

Nato ustvarite vzorčno datoteko index.html , kot je prikazano.

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

Pritisnite tipko i na tipkovnici in prilepite nekaj vzorčne vsebine, kot je prikazano, ki bo prikazana v spletnem brskalniku med testiranjem navideznega gostitelja.

<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>

Shranite in zapustite konfiguracijsko datoteko.

Z ustvarjeno vzorčno indeksno datoteko in imenikom spletnega mesta lahko zdaj nadaljujete in ustvarite datoteko navideznega gostitelja. Datoteka navideznega gostitelja bo vsebovala konfiguracijo spletnega mesta vaše domene in Apacheu navodila, kako se bo odzval na zahteve strank.

Datoteka navideznega gostitelja bo vsebovala konfiguracijo spletnega mesta vaše domene in Apacheu navodila, kako se bo odzval na zahteve strank. Toda v nadaljevanju morate ustvariti dva imenika: imenika mesta, ki so na voljo in mesta, ki omogočajo .

Datoteka navideznega gostitelja bo shranjena v imeniku mesta, ki so na voljo , medtem ko bo imenik omogočil spletna mesta vseboval simbolično povezavo do navideznega gostitelja.

Ustvari oba imenika, kot je prikazano.

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

Nato spremenite glavno konfiguracijsko datoteko spletnega strežnika Apache in mu naročite, kje naj najde navideznega gostitelja v imeniku, ki omogoča spletna mesta.

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

Dodajte vrstico, kot je prikazano na samem koncu konfiguracijske datoteke.

IncludeOptional sites-enabled/*.conf

Shrani in izstopi.

Zdaj ustvarite navidezno gostiteljsko datoteko, kot je prikazano:

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

Spodnjo vsebino prilepite in zamenjajte crazytechgeek.info s 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>

Shranite in zapustite datoteko.

Zdaj omogočite navidezno gostiteljsko datoteko tako, da v imeniku omogočena spletna mesta ustvarite simbolno povezavo.

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

Prilagajanje dovoljenj SELinux za navidezne gostitelje

CentOS 8 in RHEL 8 sta dobavljena s SELinuxom, ki je varnostni modul za povečanje varnosti sistema Linux. Ker ste v prejšnjem koraku konfigurirali imenik dnevnika po meri, morate posodobiti nekaj pravilnikov SELinux, da spletnemu strežniku Apache naročite, naj piše v imenik.

Obstajata 2 pristopa pri prilagajanju pravilnikov SELinux Apache: Splošno prilagajanje pravilnikov in pravilnikov v imeniku. Slednje je prednostno, ker je bolj prednostno.

Urejanje dovoljenj SELinux za imenik dnevnika vam daje popoln nadzor nad pravilniki spletnega strežnika Apache. Ta metoda je precej dolga in zahteva ročno konfiguriranje vrste konteksta za dodatne imenike, ki so navedeni v konfiguracijski datoteki navideznega gostitelja.

Preden začnete, najprej potrdite vrsto konteksta, ki jo je imeniku dnevnika dodelil SELinux:

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

Rezultat mora biti podoben tistemu, ki ga imamo spodaj.

Iz izhoda je nastavljeni kontekst httpd_sys_content_t. To pomeni, da spletni strežnik lahko bere samo datoteke v imeniku dnevnika. Ta kontekst morate spremeniti v httpd_log_t, da Apache omogoči ustvarjanje in dodajanje vnosov v dnevnik v imenik.

Zato izvedite ukaz:

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

Če slučajno dobite napako pod\"semanage: ukaza ni mogoče najti".

To pomeni, da paketi, ki zagotavljajo ukaz semanage, niso nameščeni. Če želite odpraviti to napako, morate namestiti te pakete. Najprej pa preverite, kateri paketi omogočajo ukaz za semanage, tako da zaženete:

$ sudo dnf whatprovides /usr/sbin/semanage

Rezultat nam da paket, ki zagotavlja semanage, to je policycoreutils-python-utils.

Zdaj namestite paket, kot je prikazano z uporabo upravitelja paketov DNF.

$ sudo dnf install policycoreutils-python-utils

Zdaj bi moral delovati ukaz za spreminjanje konteksta.

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

Če želite spremembe shraniti in jih narediti trajne, izdajte ukaz restorecon, kot je prikazano:

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

Spremembe lahko potrdite z ponovnim zagonom ukaza:

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

Upoštevajte, da se je vrsta konteksta spremenila v httpd_log_t , kot je razvidno iz izhoda.

Znova zaženite Apache, da bodo spremembe uporabljene.

$ sudo systemctl restart httpd

Zdaj lahko potrdite, ali Apache shranjuje datoteke dnevnika v imenik dnevnika, tako da navede njegovo vsebino, kot je prikazano:

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

Videti bi morali dve dnevniški datoteki, kot je prikazano: dnevnik napak in dnevniške datoteke zahtev.

Testiranje navideznega gostitelja Apache

Nazadnje morate biti prepričani, da spletni strežnik Apache streže vaši virtualni gostiteljski datoteki. Če želite to narediti, odprite brskalnik in pojdite na naslov IP ali ime domene strežnika:

http://domain-name

Odlično! To pomeni, da je šlo vse dobro in da je naš virtualni gostitelj vročen po pričakovanjih.

V tem priročniku smo se naučili, kako namestiti spletni strežnik Apache na CentOS 8 in RHEL 8, pa tudi, kako konfigurirati datoteko navideznega gostitelja, ki bo stregla k vsebini za dodatno domeno. Nastavite lahko več datotek navideznega gostitelja, kot se vam zdi primerno za namestitev dodatnih domen.

Če želite nastaviti celoten sklad za gostovanje, vam priporočam, da na CentOS 8 namestite sklad LAMP.