Kaip įdiegti „Apache“ naudojant „Virtual Host“ „CentOS 8“.


Apache žiniatinklio serveris yra atvirojo kodo ir populiarus HTTP žiniatinklio serveris, kuris ir toliau užima didžiulę rinkos dalį prieglobos pramonėje. Jis pristatomas su daugybe funkcijų, įskaitant modulių patobulinimus, kelių protokolų palaikymą, supaprastintą konfigūraciją ir kelių kalbų palaikymą, kad būtų galima paminėti tik keletą.

Taip pat skaitykite: kaip įdiegti „Nginx“ „CentOS 8“.

Šiame vadove paaiškinsime, kaip įdiegti Apache žiniatinklio serverį CentOS 8 ir RHEL 8 su virtualiosios prieglobos aplinka. Rašant šią mokymo programą, naujausia „Apache“ versija yra Apache 2.2.43.

„Apache“ žiniatinklio serverio diegimas

Norėdami pradėti, pirmiausia atnaujinkite CentOS 8 arba RHEL 8 sistemos paketų sąrašą naudodami šią dnf komandą.

sudo dnf update

Baigę atnaujinti, įdiekite Apache žiniatinklio serverį vykdydami šią komandą.

sudo dnf install httpd

Įdiegę galite patikrinti Apache versiją paleisdami komandą rpm.

rpm -qi httpd

Komanda išspausdina informacijos rinkinį, pvz., versiją, išleidimo datą, paketo kūrimą ir architektūrą.

Norėdami paleisti Apache HTTP žiniatinklio paslaugą, paleiskite komandą systemctl.

sudo systemctl start httpd

Norėdami patvirtinti, ar paslauga veikia, paleiskite.

sudo systemctl status httpd

Išvesties būsena „aktyvi“ žalia spalva rodo, kad „Apache“ žiniatinklio serveris veikia ir veikia.

Norėdami pašalinti visas abejones, kad žiniatinklio serveris veikia, paprašykite „Apache“ bandomojo puslapio naršydami savo serverio IP adresą arba domeno pavadinimą, kaip parodyta.

http://server-ip  

Savo serverio IP galite gauti paleisdami komandą ifconfig. Jei jūsų serveris yra priglobtas debesyje, viešąjį IP galite gauti vykdydami komandą curl.

curl ifconfig.me 
OR
curl -4 icanhazip.com

Kai naršote serverio IP adresą, turėtumėte pamatyti šį tinklalapį.

Tai yra tikras patvirtinimas, kad žiniatinklio serveris veikia.

„Apache“ žiniatinklio serverio valdymas

Įdiegę ir paleidę Apache galite naudoti systemctl tikrinimo įrankį, kad galėtumėte valdyti Apache.

Pavyzdžiui, norėdami sustabdyti „Apache“, paleiskite komandą:

sudo systemctl stop httpd

Norėdami vėl pradėti paslaugą, vykdykite:

sudo systemctl start httpd

Jei atlikote pakeitimus bet kuriame jo konfigūracijos faile ir turite paleisti iš naujo, kad pritaikytumėte pakeitimus, vykdykite komandą:

sudo systemctl restart httpd

Paslaugos paleidimas iš naujo paprastai sukelia paslaugos sutrikimą. Geresnė alternatyva yra tiesiog įkelti iš naujo, nenutrūkstant ryšio.

sudo systemctl reload httpd

Norėdami automatiškai paleisti „Apache“ žiniatinklio serverį paleidus arba paleidus iš naujo, paleiskite toliau pateiktą komandą. Tai užtikrins, kad „Apache“ įsijungs automatiškai be jūsų įsikišimo.

sudo systemctl enable httpd

Jei pasirenkate nepaleisti paslaugos automatiškai įkrovos metu, paleiskite:

sudo systemctl disable httpd

„Apache“ virtualiųjų kompiuterių nustatymas

Pagal numatytuosius nustatymus „Apache“ žiniatinklio serveris sukonfigūruotas aptarnauti arba priglobti tik vieną svetainę. Jei norite talpinti tik vieną svetainę, šio veiksmo nereikia. Bet jei planuojate savo serveryje priglobti kelis domenus, turite sukonfigūruoti „Apache“ virtualiuosius kompiuterius.

Virtualusis kompiuteris yra atskiras failas, kuriame yra konfigūracijų, leidžiančių nustatyti atskirą domeną nuo numatytojo. Šiam vadovui nustatysime virtualų domeno crazytechgeek.info prieglobą.

Numatytoji virtuali priegloba yra /var/www/html kataloge. Tai veikia tik vienoje svetainėje. Norėdami sukurti atskirą virtualų pagrindinį kompiuterį mūsų domenui, kataloge /var/www sukursime kitą katalogo struktūrą, kaip parodyta.

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

Be to, taip pat galite sukurti katalogą žurnalo failams saugoti.

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

Tada redaguokite failo leidimus naudodami aplinkos kintamąjį $USER, kaip parodyta.

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

Taip pat pakoreguokite žiniatinklio šakninio katalogo teises, kaip parodyta.

sudo chmod -R 755 /var/www

Tada sukurkite pavyzdinį index.html failą, kaip parodyta.

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

Klaviatūroje paspauskite raidę i' ir, kaip parodyta, įklijuokite pavyzdinį turinį, kuris bus rodomas žiniatinklio naršyklėje bandant virtualų pagrindinį kompiuterį.

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

Išsaugokite ir išeikite iš konfigūracijos failo.

Sukūrę pavyzdinį indekso failą ir svetainės katalogą, dabar galite tęsti ir sukurti virtualaus pagrindinio kompiuterio failą. Virtualiajame prieglobos faile bus jūsų domeno svetainės konfigūracija ir nurodyta, kaip „Apache“ reaguos į klientų užklausas.

Virtualiajame prieglobos faile bus jūsų domeno svetainės konfigūracija ir nurodyta, kaip „Apache“ reaguos į klientų užklausas. Tačiau tęsdami turite sukurti 2 katalogus: katalogus galimos svetainės ir svetainės įgalintos.

Virtualios prieglobos failas bus saugomas kataloge svetainės prieinamos, o svetainės įgalintos kataloge bus simbolinė nuoroda į virtualų pagrindinį kompiuterį.

Sukurkite abu katalogus, kaip parodyta.

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

Tada pakeiskite pagrindinį „Apache“ žiniatinklio serverio konfigūracijos failą ir nurodykite „Apache“, kur rasti virtualų pagrindinį kompiuterį kataloge, kuriame įgalintos svetainės.

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

Pridėkite eilutę, kaip parodyta pačioje konfigūracijos failo pabaigoje.

IncludeOptional sites-enabled/*.conf

Išsaugoti ir išeiti.

Dabar sukurkite virtualaus pagrindinio kompiuterio failą, kaip parodyta:

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

Įklijuokite toliau esantį turinį ir pakeiskite crazytechgeek.info savo domeno pavadinimu.

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

Išsaugokite ir išeikite iš failo.

Dabar įgalinkite virtualaus pagrindinio kompiuterio failą sukurdami simbolinę nuorodą kataloge svetainės įgalintos.

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

SELinux leidimų reguliavimas virtualiosioms priegloboms

CentOS 8 ir RHEL 8 pristatomi su SELinux, kuris yra saugos modulis, skirtas Linux sistemos saugumui sustiprinti. Kadangi ankstesniame veiksme sukonfigūravote priskirtą log katalogą, turite atnaujinti kai kurias SELinux strategijas, kad nurodytumėte Apache žiniatinklio serveriui rašyti į katalogą.

Yra 2 SELinux Apache politikos koregavimo būdai: universalus koregavimo politikos ir katalogo politikos reguliavimas. Pastarasis yra pageidaujamas, nes jis yra labiau pageidaujamas.

SELinux strategijų koregavimas kataloge

Redaguodami žurnalo katalogo SELinux leidimus, galėsite visiškai valdyti Apache žiniatinklio serverio politiką. Šis metodas yra gana ilgas ir reikalauja rankiniu būdu konfigūruoti konteksto tipą papildomiems katalogams, nurodytiems virtualiojo pagrindinio kompiuterio konfigūracijos faile.

Prieš pradėdami, pirmiausia patvirtinkite konteksto tipą, kurį žurnalo katalogui priskyrė SELinux:

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

Rezultatas turėtų būti panašus į tai, ką turime žemiau.

Išvesties kontekstas yra httpd_sys_content_t. Tai rodo, kad žiniatinklio serveris gali skaityti tik žurnalo kataloge esančius failus. Turite pakeisti šį kontekstą į httpd_log_t, kad „Apache“ galėtų generuoti ir įtraukti į katalogą žurnalo įrašus.

Todėl vykdykite komandą:

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

Jei atsitiktinai gausite klaidą žemiau „semanage: komanda nerasta“.

Tai reiškia, kad paketai, kuriuose numatyta komanda semanage, nėra įdiegti. Norėdami ištaisyti šią klaidą, turite įdiegti tuos paketus. Bet pirmiausia patikrinkite, kuriuose paketuose numatyta komanda semanage, paleisdami:

sudo dnf whatprovides /usr/sbin/semanage

Išvestis suteikia mums paketą, kuriame numatytas semanage, kuris yra policycoreutils-python-utils.

Dabar įdiekite paketą, kaip parodyta, naudodami DNF paketų tvarkyklę.

sudo dnf install policycoreutils-python-utils

Konteksto keitimo komanda dabar turėtų veikti.

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

Norėdami išsaugoti pakeitimus ir padaryti juos nuolatinius, išleiskite komandą restorecon, kaip parodyta:

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

Pakeitimus galite patvirtinti dar kartą vykdydami komandą:

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

Būtinai atkreipkite dėmesį, kad konteksto tipas pasikeitė į httpd_log_t, kaip matyti išvestyje.

Iš naujo paleiskite „Apache“, kad pakeitimai būtų pritaikyti.

sudo systemctl restart httpd

Dabar galite patvirtinti, ar „Apache“ išsaugo žurnalo failus žurnalo kataloge, nurodydami jo turinį, kaip parodyta:

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

Turėtumėte matyti du žurnalo failus, kaip parodyta: klaidų žurnalo ir užklausų žurnalo failus.

„Apache Virtual Host“ testavimas

Galiausiai turite būti tikri, kad „Apache“ žiniatinklio serveris aptarnauja jūsų virtualaus pagrindinio kompiuterio failą. Norėdami tai padaryti, atidarykite naršyklę ir eikite į savo serverio IP adresą arba domeno pavadinimą:

http://domain-name

Puikus! Tai rodo, kad viskas klostėsi gerai ir mūsų virtualioji priegloba aptarnaujama taip, kaip tikėtasi.

Išvada

Šiame vadove sužinojome, kaip įdiegti Apache žiniatinklio serverį CentOS 8 ir RHEL 8, taip pat kaip sukonfigūruoti virtualiosios prieglobos failą, kad teikti turinį papildomam domenui. Nedvejodami sukonfigūruokite kelis virtualaus pagrindinio kompiuterio failus, jei manote, kad tai tinka papildomiems domenams.

Jei norite sukonfigūruoti visą prieglobos krūvą, aš rekomendavau įdiegti LAMP krūvą „CentOS 8“.