Jinsi ya Kufunga Apache na Virtual Host kwenye CentOS 8


Seva ya wavuti ya Apache ni chanzo wazi na seva maarufu ya wavuti ya HTTP ambayo inaendelea kufurahia sehemu kubwa ya soko katika tasnia ya ukaribishaji. Husafirishwa na vipengele vingi ikiwa ni pamoja na viboreshaji vya moduli, usaidizi wa itifaki nyingi, usanidi uliorahisishwa, na usaidizi wa lugha nyingi kutaja chache tu.

Katika mwongozo huu, tutakutembeza kupitia usakinishaji wa seva ya wavuti ya Apache kwenye CentOS 8 na RHEL 8 yenye mazingira ya Seva ya Mtandaoni. Wakati wa kuandika mafunzo haya, toleo jipya zaidi la Apache ni Apache 2.2.43.

Inasakinisha Apache Web Server

Ili kuanza, sasisha kwanza orodha yako ya mfumo wa CentOS 8 au RHEL 8 kwa kutumia dnf amri ifuatayo.

$ sudo dnf update

Mara tu sasisho limekamilika, sakinisha Apache webserver kwa kutekeleza amri ifuatayo.

$ sudo dnf install httpd

Mara tu ikiwa imewekwa, unaweza kuthibitisha toleo la Apache kwa kuendesha amri ya rpm.

$ rpm -qi httpd

Amri huchapisha safu ya habari kama vile toleo, tarehe ya kutolewa, muundo na usanifu wa kifurushi.

Ili kuanza huduma ya wavuti ya Apache HTTP, endesha amri ya systemctl.

$ sudo systemctl start httpd

Ili kuthibitisha ikiwa huduma inaendelea, tekeleza.

$ sudo systemctl status httpd

Kutoka kwa pato, hali ya amilifu katika kijani kibichi inaonyesha kuwa seva ya wavuti ya Apache iko na inafanya kazi.

Ili kuondoa mashaka yoyote kwamba seva ya tovuti inafanya kazi, omba ukurasa wa majaribio kutoka kwa Apache kwa kuvinjari anwani ya IP ya seva yako au jina la kikoa kama inavyoonyeshwa.

http://server-ip  

Unaweza kupata IP ya seva yako kwa kuendesha amri ya curl.

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

Unapovinjari anwani ya IP ya seva, unapaswa kupata ukurasa wa wavuti ufuatao kuonyeshwa.

Huu ni uthibitisho wa uhakika kwamba seva ya wavuti inafanya kazi.

Kusimamia Apache Webserver

Ukiwa na Apache iliyosakinishwa na kuendeshwa, unaweza kutumia zana ya ukaguzi ya systemctl kudhibiti Apache.

Kwa mfano, kusimamisha Apache, endesha amri:

$ sudo systemctl stop httpd

Ili kuanza huduma tena, tekeleza:

$ sudo systemctl start httpd

Ikiwa umefanya mabadiliko kwa faili zake zozote za usanidi na unahitaji kuanza tena kutumia mabadiliko, tekeleza amri:

$ sudo systemctl restart httpd

Kuanzisha tena huduma husababisha usumbufu wa huduma. Mbadala bora ni kupakia upya bila usumbufu wowote na muunganisho.

$ sudo systemctl reload httpd

Kuanzisha seva ya wavuti ya Apache kiotomatiki wakati wa kuwasha au kuwasha tena endesha amri hapa chini. Hii itahakikisha Apache inaanza kiotomatiki bila uingiliaji wako.

$ sudo systemctl enable httpd

Ukichagua kutoanzisha huduma kiotomatiki kwenye buti, endesha:

$ sudo systemctl disable httpd

Kuanzisha Apache Virtual Hosts

Kwa chaguo-msingi, seva ya wavuti ya Apache imesanidiwa kutumika au kupangisha tovuti moja pekee. Ikiwa unataka kukaribisha tovuti moja tu, basi hatua hii haihitajiki. Lakini katika tukio unapanga kukaribisha vikoa vingi kwenye seva yako, basi unahitaji kusanidi majeshi ya Apache.

Mpangishi pepe ni faili tofauti ambayo ina usanidi unaokuruhusu kusanidi kikoa tofauti na kikoa chaguo-msingi. Kwa mwongozo huu, tutaanzisha seva pangishi pepe ya kikoa crazytechgeek.info.

Kipangishi chaguo-msingi cha mtandaoni kinapatikana kwenye saraka ya /var/www/html. Hii inafanya kazi kwa tovuti moja tu. Ili kuunda seva pangishi pepe tofauti kwa ajili ya kikoa chetu, tutaunda muundo mwingine wa saraka ndani ya saraka ya /var/www kama inavyoonyeshwa.

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

Zaidi ya hayo, unaweza pia kuunda saraka ya kuhifadhi faili za logi.

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

Kisha, hariri ruhusa za faili tumia $USER utofauti wa mazingira kama inavyoonyeshwa.

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

Pia, rekebisha ruhusa za saraka ya webroot kama inavyoonyeshwa.

$ sudo chmod -R 755 /var/www

Kisha, unda sampuli index.html faili kama inavyoonyeshwa.

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

Gonga herufi i kwenye kibodi na ubandike sampuli ya maudhui kama inavyoonyeshwa ambayo yataonyeshwa kwenye kivinjari cha wavuti unapojaribu seva pangishi pepe.

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

Hifadhi na uondoke kwenye faili ya usanidi.

Kwa sampuli ya faili ya faharasa na saraka ya tovuti imeundwa, sasa unaweza kuendelea na kuunda faili pepe ya mwenyeji. Faili ya seva pangishi itakuwa na usanidi wa tovuti ya kikoa chako na kuelekeza Apache jinsi itakavyojibu maombi ya wateja.

Faili ya seva pangishi itakuwa na usanidi wa tovuti ya kikoa chako na kuelekeza Apache jinsi itakavyojibu maombi ya wateja. Lakini kuendelea, unahitaji kuunda saraka 2: saraka za tovuti zinazopatikana na zinazowezeshwa na tovuti.

Faili ya seva pangishi itahifadhiwa katika saraka ya tovuti zinazopatikana huku iliyowezeshwa na tovuti saraka itakuwa na kiungo cha ishara kwa seva pangishi pepe.

Unda saraka zote mbili kama inavyoonyeshwa.

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

Kisha, rekebisha faili kuu ya usanidi ya seva ya wavuti ya Apache na uelekeze Apache mahali pa kupata seva pangishi pepe ndani ya saraka inayowezeshwa na tovuti.

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

Ongeza mstari kama inavyoonyeshwa mwishoni mwa faili ya usanidi.

IncludeOptional sites-enabled/*.conf

Hifadhi na uondoke.

Sasa unda faili ya mwenyeji halisi kama inavyoonyeshwa:

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

Bandika maudhui hapa chini na ubadilishe crazytechgeek.info kwa jina la kikoa chako.

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

Hifadhi na uondoke faili.

Sasa washa faili ya seva pangishi kwa kuunda kiungo cha ishara katika saraka ya tovuti zilizowezeshwa.

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

Kurekebisha Ruhusa za SELinux kwa Wapangishi Mtandaoni

CentOS 8 na RHEL 8 meli na SELinux ambayo ni moduli ya usalama ya kuimarisha usalama wa mfumo wa Linux. Kwa kuwa ulisanidi saraka ya kumbukumbu maalum katika hatua ya awali, unahitaji kusasisha baadhi ya sera za SELinux ili kuagiza Apache webserver kuandika kwenye saraka.

Kuna mbinu 2 za kurekebisha sera za Apache za SELinux: Kurekebisha sera za urekebishaji kote ulimwenguni na sera kwenye saraka. Ya mwisho inapendekezwa kwa sababu inapendekezwa zaidi.

Kuhariri ruhusa za SELinux kwa saraka ya kumbukumbu hukupa udhibiti kamili juu ya sera za seva ya wavuti ya Apache. Njia hii ni ndefu sana na inakuhitaji usanidi mwenyewe aina ya muktadha kwa saraka za ziada zilizobainishwa katika faili ya usanidi wa seva pangishi.

Kabla ya kuanza, thibitisha kwanza aina ya muktadha iliyopewa saraka ya logi na SELinux:

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

Matokeo yanapaswa kuwa sawa na yale tuliyo nayo hapa chini.

Kutoka kwa pato, muktadha uliowekwa ni httpd_sys_content_t. Hii inaonyesha kuwa seva ya wavuti inaweza tu kusoma faili kwenye saraka ya kumbukumbu. Unahitaji kubadilisha muktadha huu kuwa httpd_log_t ili kuwezesha Apache kutoa na kuongeza maingizo ya kumbukumbu kwenye saraka.

Kwa hivyo, tekeleza amri:

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

Ikitokea kupata hitilafu hapa chini \semanage: amri haipatikani.

Inamaanisha kuwa vifurushi vinavyotoa amri ya semanage hazijasakinishwa. Ili kurekebisha hitilafu hii, unahitaji kusakinisha vifurushi hivyo. Lakini kwanza, angalia ni vifurushi vipi vinavyotoa amri ya semanage kwa kukimbia:

$ sudo dnf whatprovides /usr/sbin/semanage

Matokeo hutupa kifurushi ambacho hutoa kwa semanage, ambayo ni policycoreutils-python-utils.

Sasa sasisha kifurushi kama inavyoonyeshwa kwa kutumia kidhibiti cha kifurushi cha DNF.

$ sudo dnf install policycoreutils-python-utils

Amri ya kubadilisha muktadha inapaswa kufanya kazi sasa.

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

Ili kuhifadhi mabadiliko na kuyafanya yaendelee, toa amri ya kurejesha kama inavyoonyeshwa:

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

Unaweza kuthibitisha mabadiliko kwa mara nyingine tena kutekeleza amri:

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

Hakikisha kukumbuka kuwa aina ya muktadha imebadilika hadi httpd_log_t kama inavyoonekana kwenye towe.

Anzisha tena Apache ili mabadiliko yatumike.

$ sudo systemctl restart httpd

Sasa unaweza kuthibitisha ikiwa Apache inahifadhi faili za kumbukumbu kwenye saraka ya kumbukumbu kwa kuorodhesha yaliyomo kama inavyoonyeshwa:

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

Unapaswa kuwa na uwezo wa kuona faili mbili za kumbukumbu kama inavyoonyeshwa: logi ya makosa na faili za kumbukumbu za ombi.

Kujaribu Apache Virtual Host

Hatimaye, unahitaji kuwa na uhakika kwamba Apache webserver inatumikia faili yako ya mwenyeji wa kawaida. Ili kufanya hivyo, fungua kivinjari chako na uende kwa anwani ya IP ya seva yako au jina la kikoa:

http://domain-name

Kamili! Hii inaonyesha kuwa yote yalikwenda vizuri na mwenyeji wetu pepe anahudumiwa kama ilivyotarajiwa.

Katika mwongozo huu, tumejifunza jinsi ya kusakinisha Apache webserver kwenye CentOS 8 na RHEL 8 na pia jinsi ya kusanidi faili pepe ya mwenyeji ili kutumikia maudhui kwa kikoa cha ziada. Jisikie huru kusanidi faili nyingi za seva pangishi kama unavyoona zinafaa ili kushughulikia vikoa vya ziada.

Ikiwa unataka kusanidi safu kamili ya upangishaji, nilipendekeza usakinishe safu ya LAMP kwenye CentOS 8.