Wéi installéiere ech Apache mat Virtual Host op CentOS 8


Den Apache Webserver ass en Opensource a populäre HTTP Webserver dee weider e massiven Maartundeel an der Hostingindustrie genéisst. Et verschéckt mat villen Features abegraff Modulverbesserungen, Multi-Protokoll Support, vereinfacht Konfiguratioun, a Multi-Sprooch Ënnerstëtzung fir nëmmen e puer ze nennen.

An dësem Guide wäerte mir Iech duerch d'Installatioun vum Apache Webserver op CentOS 8 an RHEL 8 mat engem Virtuelle Host Ëmfeld goen. Zu der Zäit vum Schreiwen vun dësem Tutorial ass déi lescht Versioun vun Apache Apache 2.2.43.

Installéiert Apache Web Server

Fir unzefänken, aktualiséieren éischt Är CentOS 8 oder RHEL 8 System Package Lëscht mat dem folgenden dnf Kommando.

$ sudo dnf update

Wann d'Aktualiséierung fäerdeg ass, installéiert den Apache Webserver andeems Dir de folgende Kommando ausféiert.

$ sudo dnf install httpd

Eemol installéiert, kënnt Dir d'Versioun vun Apache verifizéieren andeems Dir de rpm Kommando ausféiert.

$ rpm -qi httpd

De Kommando dréckt eng ganz Rëtsch vun Informatioun aus wéi d'Versioun, Verëffentlechungsdatum, Bau an Architektur vum Package.

Fir den Apache HTTP Webservice unzefänken, lafen de Systemctl Kommando.

$ sudo systemctl start httpd

Fir ze bestätegen ob de Service leeft, ausféieren.

$ sudo systemctl status httpd

Vun der Ausgab weist den aktiven Status a gréng un datt den Apache Webserver op a leeft.

Fir all Zweifel ze läschen datt de Webserver leeft, frot eng Testsäit vun Apache andeems Dir Är IP Adress oder Domain Numm vun Ärem Server surft wéi gewisen.

http://server-ip  

Dir kënnt Äre Server IP kréien andeems Dir de Curl Kommando ausféiert.

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

Wann Dir d'IP Adress vum Server duerchsicht, sollt Dir déi folgend Websäit ugewisen kréien.

Dëst ass eng sécher Bestätegung datt de Webserver leeft.

Gestioun Apache Webserver

Mat Apache installéiert a lafend, kënnt Dir de systemctl Inspektiounstool benotze fir Apache ze managen.

Zum Beispill, fir Apache ze stoppen, lafen de Kommando:

$ sudo systemctl stop httpd

Fir de Service nach eng Kéier unzefänken, fuert aus:

$ sudo systemctl start httpd

Wann Dir Ännerunge fir eng vu senge Konfiguratiounsdateien gemaach hutt an Dir musst nei starten fir d'Ännerungen z'applizéieren, fuert de Kommando aus:

$ sudo systemctl restart httpd

De Service nei starten verursaacht normalerweis eng Servicestéierung. Eng besser Alternativ ass einfach nei ze lueden ouni Ënnerbriechung mat der Verbindung.

$ sudo systemctl reload httpd

Fir den Apache Webserver automatesch beim Booten oder Neistarten ze starten, fuert de Kommando hei ënnen. Dëst garantéiert datt Apache automatesch ufänkt ouni Är Interventioun.

$ sudo systemctl enable httpd

Wann Dir gewielt hutt de Service net automatesch beim Boot ze starten, lafen:

$ sudo systemctl disable httpd

Apache Virtuell Hosts opsetzen

Par défaut ass den Apache Webserver konfiguréiert fir nëmmen eng Websäit ze déngen oder ze hosten. Wann Dir just eng Websäit wëllt hosten, dann ass dëse Schrëtt net erfuerderlech. Awer am Fall wou Dir plangt verschidde Domainen op Ärem Server ze hosten, da musst Dir Apache virtuelle Hosten konfiguréieren.

E virtuelle Host ass eng separat Datei déi Konfiguratiounen enthält, déi Iech erlaben eng separat Domain aus dem Standard opzestellen. Fir dëse Guide wäerte mir e virtuelle Host fir d'Domain crazytechgeek.info opstellen.

De Standard virtuelle Host ass am /var/www/html Verzeichnis. Dëst funktionnéiert nëmme fir eng eenzeg Säit. Fir e separate virtuelle Host fir eis Domain ze kreéieren, erstelle mir eng aner Verzeichnisstruktur am /var/www Verzeichnis wéi gewisen.

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

Zousätzlech kënnt Dir och e Verzeechnes erstellen fir Logdateien ze späicheren.

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

Als nächst, ännert d'Datei Permissiounen benotzt d'$USER Ëmfeldvariabel wéi gewisen.

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

Passt och d'Permissiounen vum Webroot Verzeechnes un wéi gewisen.

$ sudo chmod -R 755 /var/www

Als nächst erstellt eng Probe index.html Datei wéi gewisen.

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

Hit de Bréif i op der Tastatur a paste e puer Beispiller Inhalt wéi gewisen, deen am Webbrowser ugewise gëtt wann Dir de virtuelle Host testen.

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

Späichert a gitt d'Konfiguratiounsdatei aus.

Mat der Probe Indexdatei a Site Verzeechnes erstallt, kënnt Dir elo weidergoen an déi virtuell Hostdatei erstellen. Déi virtuell Hostdatei enthält Är Domain Site Konfiguratioun an instruéiert Apache wéi et op Ufroe vun de Clienten reagéiert.

Déi virtuell Hostdatei enthält Är Domain Site Konfiguratioun an instruéiert Apache wéi et op Ufroe vun de Clienten reagéiert. Awer virugoen, musst Dir 2 Verzeichnisser erstellen: Sites-available an Site-enabled Verzeichnisser.

Déi virtuell Hostdatei gëtt am Sites-available Verzeichnis gespäichert, während de Site-enabled de Verzeechnes de symbolesche Link zum virtuelle Host enthält.

Erstellt béid Verzeichnisser wéi gewisen.

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

Als nächst, ännert d'Haaptkonfiguratiounsdatei vum Apache Webserver an instruéiert Apache wou de virtuelle Host am Site-aktivéierten Verzeechnes ze lokaliséieren.

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

Fügt d'Linn un wéi um Enn vun der Konfiguratiounsdatei gewisen.

IncludeOptional sites-enabled/*.conf

Retten an Sortie.

Erstellt elo eng virtuell Hostdatei wéi gewisen:

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

Paste den Inhalt hei drënner an ersetzt crazytechgeek.info mat Ärem eegenen Domain Numm.

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

Späichert a gitt d'Datei aus.

Aktivéiert elo déi virtuell Hostdatei andeems Dir e symbolesche Link am Site-enabled Verzeichnis erstellt.

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

SELinux Permissiounen fir virtuell Hosten upassen

CentOS 8 an RHEL 8 schécke mat SELinux wat e Sécherheetsmodul ass fir d'Sécherheet vum Linux System ze verstäerken. Well Dir e personaliséierte Log Verzeechnes am virege Schrëtt konfiguréiert hutt, musst Dir e puer SELinux Politiken aktualiséieren fir den Apache Webserver ze instruéieren an de Verzeechnes ze schreiwen.

Et ginn 2 Approche fir d'SELinux Apache Politiken unzepassen: Upassung vun der Upassung vun der Politik universell & d'Politik an engem Verzeichnis. Déi lescht gëtt bevorzugt well et méi bevorzugt ass.

Änneren SELinux Permissiounen fir de Log Verzeechnes gëtt Iech absolut Kontroll iwwer d'Politik vum Apache Webserver. Dës Method ass zimmlech laang a verlaangt datt Dir den Kontexttyp manuell konfiguréiert fir zousätzlech Verzeichnisser, déi an der virtueller Hostkonfiguratiounsdatei spezifizéiert sinn.

Ier Dir ufänkt, bestätegt als éischt de Kontexttyp, deen dem Logbuch vun SELinux zougewisen ass:

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

D'Ausgab soll ähnlech sinn wéi dat wat mir hei ënnen hunn.

Vun der Ausgab ass de gesate Kontext httpd_sys_content_t. Dëst weist datt de Webserver nëmmen Dateien am Logbuch liesen kann. Dir musst dëse Kontext op httpd_log_t änneren fir Apache z'erméiglechen fir Logbicher an de Verzeichnis ze generéieren an ze addéieren.

Dofir, fuert de Kommando aus:

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

Wann Dir zoufälleg de Feeler ënnert \semanage: Kommando net fonnt kritt.

Et implizéiert datt d'Packagen déi de Semanage Kommando ubidden net installéiert sinn. Fir dëse Feeler ze fixéieren, musst Dir dës Packagen installéieren. Awer als éischt, préift wéi eng Packagen de Semanage Kommando ubidden andeems Dir laaft:

$ sudo dnf whatprovides /usr/sbin/semanage

D'Ausgab gëtt eis de Package deen Semanage ubitt, dat ass policycoreutils-python-utils.

Installéiert elo de Package wéi mat dem DNF Package Manager benotzt.

$ sudo dnf install policycoreutils-python-utils

De Kommando fir de Kontext z'änneren soll elo funktionnéieren.

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

Fir d'Ännerungen ze späicheren an se persistent ze maachen, gitt de Restorecon Kommando aus wéi gewisen:

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

Dir kënnt d'Ännerunge bestätegen andeems Dir de Kommando nach eng Kéier ausféiert:

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

Gitt sécher ze notéieren datt de Kontexttyp op httpd_log_t geännert huet wéi an der Ausgab gesi ginn.

Restart Apache fir d'Ännerungen ze applizéieren.

$ sudo systemctl restart httpd

Dir kënnt elo bestätegen ob Apache Logdateien am Logbuch späichert andeems Dir säin Inhalt opzielt wéi gewisen:

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

Dir sollt fäeg sinn zwee Logdateien ze gesinn wéi gewisen: Feeler Log an Ufro Log Dateien.

Testen Apache Virtual Host

Schlussendlech musst Dir sécher sinn datt den Apache Webserver Är virtuell Hostdatei servéiert. Fir dëst ze maachen, öffnen Äre Browser a gitt op Är Server IP Adress oder Domain Numm:

http://domain-name

Perfekt! Dëst weist datt alles gutt gaang ass an eise virtuelle Host gëtt wéi erwaart zerwéiert.

An dësem Guide hu mir geléiert wéi Dir den Apache Webserver op CentOS 8 an RHEL 8 installéiere wëllt an och wéi Dir eng virtuell Hostdatei konfiguréiert fir Inhalt fir en extra Domain ze déngen. Fillt Iech gratis verschidde virtuelle Hostdateien ze konfiguréieren wéi Dir fit hält fir zousätzlech Domainen z'empfänken.

Wann Dir e komplette Hosting Stack opriichte wëllt, ech recommandéieren Iech e LAMP Stack op CentOS 8 z'installéieren.