Terug naar blog

De Apache Web Server installeren op CentOS 7

De Apache Web Server installeren op CentOS 7

Een webserver slaat webpagina's op, verwerkt ze en levert ze aan websitebezoekers. Er zijn heel wat Open Source webserver software-opties, maar de Apache HTTP-server wordt beschouwd als de meest gebruikte webserver ter wereld. Dit komt omdat, naast het feit dat het open-source is, de modulaire architectuur het mogelijk maakt om de functionaliteiten uit te breiden door modules toe te voegen voor verschillende doeleinden. Hierdoor is de webserver extreem robuust. 

Als u Apache wilt installeren op een CentOS 7 systeem, dan is deze handleiding voor u. Daarnaast leert u hoe u virtuele hosts kunt maken, zodat u meerdere websites kunt hosten op één Apache HTTP-server die op CentOS draait. 

Dit is een gedetailleerde handleiding die zich alleen richt op de installatie van Apache. Als u op zoek was naar de beknopte handleiding over de LAMP-stack, dan hebben we deze gids over Hoe u Linux, Apache, MySQL, PHP (LAMP) installeert op CentOS 7 die u kunt bekijken. Laten we nu beginnen!

Vereisten

Aangezien dit een praktische handleiding is, moet u over het volgende beschikken: 

Stap 1: Apache HTTP-server installeren

U kunt Apache vinden in de standaard repositories van CentOS. Daarom is de installatie eenvoudig met behulp van de yum pakketbeheerder. Uit de sectie met vereisten moet u ingelogd zijn met de niet-rootgebruiker. Voer de volgende opdracht uit in uw terminal om de lokale Apache httpd-pakketindex bij te werken:

Zodra de pakketten zijn bijgewerkt, voert u de volgende opdracht in om Apache te installeren:

Bevestig de installatie en wacht tot yum Apache en de vereiste afhankelijkheden heeft geïnstalleerd. 

Als u de stappen hebt gevolgd in de handleiding over Een firewall instellen met FirewallD op CentOS 7 en de firewall voor poort 80 hebt ingeschakeld, dan bent u klaar om te gaan. Firewalld is de firewallbeheerder voor CentOS. Anders kunt u de http-service (poort 80) van firewalld inschakelen door de volgende opdracht in te voeren: 

Als u van plan bent om verkeer via beveiligd HTTPS te serveren, kunt u de https-service (poort 443) van firewalld inschakelen door de volgende opdracht in te voeren:

Ten slutte moet u firewalld herladen om de wijzigingen door te voeren. Hier is de opdracht om te herladen:

Op dit punt hebt u Apache geïnstalleerd en geconfigureerd om verkeer via HTTP of HTTPS te serveren, afhankelijk van of u de bovenstaande opdrachten hebt uitgevoerd. 

Stap 2: Controleren of de Apache-webserver actief is

In CentOS start het Apache-proces niet automatisch na de installatie. Om Apache handmatig te starten, voert u de volgende opdracht in:

Om te controleren of de service succesvol is gestart, controleert u de status door de volgende opdracht in te voeren: 

Als de service actief is, zou u een uitvoer moeten zien die lijkt op de onderstaande schermafbeelding. Let op de actieve status:

httpd status

De uitvoer geeft aan dat de service succesvol is gestart en actief is. Vervolgens moeten we ook testen of Apache een pagina kan serveren aan internetgebruikers. Apache wordt geleverd met een standaardpagina die u kunt gebruiken om te testen of uw server via internet toegankelijk is. 

U moet het openbare IP-adres van uw server vinden als u dat nog niet heeft. Dit IP-adres gebruikt u in de adresbalk van uw browser om de standaard Apache-webpagina op te vragen. U kunt de netwerkadressen van de host weergeven door de volgende opdracht in te voeren: 

In de lijst met adressen die u krijgt, kunt u elk adres in uw browser proberen om te controleren of ze werken. Optioneel kunt u curl om uw IP-adres op te halen van icanhazip.com. Het onderstaande commando toont uw openbare IP-adres zoals gezien vanaf een computer op een andere internetlocatie:

Zodra u het openbare IP-adres van uw server heeft, kopieert en plakt u dit in de adresbalk van uw browser:

Uw browser zou de standaard CentOS 7 Apache-webpagina moeten laden:

web server home page

Als u de standaard Apache-webpagina kon laden, betekent dit dat uw server correct werkt. Als u naar beneden scrollt, ziet u wat basisinformatie over Apache-bestanden en directorylocaties. Nu de service is geïnstalleerd en correct werkt, zou u de verschillende systemctl commando's moeten kunnen gebruiken om de service te beheren. 

Stap 3: De Apache-service beheren

In dit gedeelte laten we u enkele basiscommando's voor Apache-beheer zien. Dit is het commando dat de webserver stopt:

Dit is het commando om de webserver te starten:

Vervolgens is dit het commando om de webserver opnieuw te starten (stoppen en starten):

Hierna laten we u het commando zien om de Apache-service opnieuw te laden. Dit commando is nodig wanneer u alleen configuratiewijzigingen aanbrengt. Door opnieuw te laden, neemt het Apache-proces de configuratiewijzigingen over zonder verbindingen te verbreken, wat wel het geval zou zijn geweest als u opnieuw had opgestart:

Volgens de standaardconfiguraties start Apache automatisch wanneer de server opstart. Als u dit gedrag wilt wijzigen, is dit het commando om te voorkomen dat de service bij het opstarten start:

Om de service weer in te schakelen om bij het opstarten te starten, voert u het volgende commando in: 

Stap 4: Apache Virtual Hosts instellen

Standaard is Apache geconfigureerd om een enkele website te hosten en te bedienen. In de meeste gevallen wilt u dat uw webserver meerdere websites bedient en host. U kunt bijvoorbeeld subdomeinen hebben of u wilt een blogpagina opzetten voor de hoofdwebsite van uw bedrijf/organisatie. Dit is waar Apache virtual hosts een rol spelen. Met Apache virtual hosts kunt u uw webserver configureren om meerdere websites te bedienen. Apache virtual hosts zijn het equivalent van server blocks in de Nginx-server

In deze handleiding laten we u zien hoe u een virtual host maakt met example.com als ons domein. Natuurlijk zal het domein example.com niet werken op internet, dus u moet dit vervangen door uw eigenlijke domein – de stappen zijn hetzelfde. 

Wanneer u Apache op CentOS installeert, installeert het één virtual host die is geconfigureerd om inhoud te serveren vanuit de map /var/www/html. Dit ontwerp werkt goed als u een enkele site host. We willen echter meerdere sites kunnen hosten. We laten de standaardmap /var/www/html ongemoeid en maken in plaats daarvan een andere map voor het domein example.com binnen de locatie /var/www. De reden om de standaardmap te laten staan, is dat deze wordt gebruikt wanneer verzoeken van clients niet overeenkomen met andere sites die u met virtual hosts hebt geconfigureerd. Bovendien, als u uw gemaakte virtual hosts wilt uitschakelen, blijft de standaardmap het verkeer afhandelen. 

Maak eerst een map aan binnen /var/www voor uw domeinnaam. U bent vrij om een naam naar keuze te kiezen. Het is echter aanbevolen om een naam te kiezen die lijkt op uw domein, zodat u deze gemakkelijk kunt onthouden wanneer u het virtual host conf-bestand maakt. Voer het volgende commando in om de voorbeeldmap te maken:

Voer het volgende commando in om een extra map te maken waarin de logbestanden voor de site worden opgeslagen:

Nu uw websitemappen op hun plaats staan, wijst u het eigendom van de map toe met de omgevingsvariabele $USER met behulp van het volgende commando:

Voer de volgende opdracht uit om ervoor te zorgen dat uw web-root de standaardmachtigingen heeft:

Maak nu een eenvoudige index.html pagina met behulp van nano in de map example door de volgende opdracht in te voeren:

Voeg in de nano-editor het volgende HTML-codefragment toe:

Sla het bestand op zodra u klaar bent door te drukken op Ctrl O en druk op ENTER. U kunt de editor nu sluiten door te drukken op Ctrl X

Tot nu toe hebben we uw sitemappen en een basiswebpagina om de virtuele host te testen. Vervolgens willen we de configuratiebestanden voor de virtuele host maken. Virtuele hostbestanden specificeren de configuraties van de verschillende sites die u op een enkele Apache-server wilt hosten. Ze sturen de ingestelde domeinnaamverzoeken door naar de specifieke map.

Virtuele hostbestanden worden opgeslagen in de map /etc/httpd/sites-available. Er wordt een symbolische koppeling gemaakt van de geactiveerde virtuele hostbestanden van de map /etc/httpd/sites-available naar de map /etc/httpd/sites-enabled map. Deze twee mappen worden in CentOS niet standaard aangemaakt, dus u moet ze zelf aanmaken. Voer de volgende opdracht uit om de mappen aan te maken:

Nu de mappen er zijn, instrueert u Apache om te zoeken naar virtuele hosts in de map sites-enabled. Dit doet u door het hoofdconfiguratiebestand voor Apache aan te passen. Voer de volgende opdracht uit om het bestand te openen in de nano-editor:

We willen een regel toevoegen die Apache instrueert om te zoeken naar aanvullende configuratiebestanden in een optionele map. Scrol naar de onderkant van het bestand en voeg de volgende regel toe aan het einde:

Sla het bestand op door te drukken op Ctrl O en druk op ENTER. U kunt de editor nu sluiten door te drukken op Ctrl X. De volgende stap is het maken van het virtuele hostbestand in de map sites-available. Voer de volgende opdracht uit om het nieuwe bestand te maken en te openen met de nano-editor:

Voeg in het geopende bestand het volgende configuratieblok toe. Vergeet niet om onze example.com te vervangen door uw daadwerkelijke domeinnaam, en als u een andere mapnaam hebt gebruikt in de /var/www/example, pas dat dan ook dienovereenkomstig aan:

Zoals u kunt zien, hebben we de domeinnaam en de document-root opgegeven waar de bestanden die voor dit domein moeten worden aangeboden, te vinden zijn. We hebben ook de locatie van het foutenlogboek opgegeven – dit helpt u bij het oplossen van problemen met de server.

Zodra we ons virtuele hostbestand in de map sites-available hebben, is de volgende stap het inschakelen van het bestand door een symbolische koppeling te maken naar de map sites-enabled directory. Voer de volgende opdracht uit om de symbolische koppeling te maken:

Als u de stappen tot nu toe hebt gevolgd, zou uw virtuele host nu klaar moeten zijn om uw website-inhoud te serveren. Er is echter nog één controle die u moet configureren voordat de virtuele hosts beginnen te werken. Dat behandelen we hierna. 

Stap 5: SELinux-machtigingen aanpassen om virtuele hosts toe te staan

Linux-distributies waaronder Fedora, RHEL en CentOS worden standaard geleverd met SELinux. SELinux (Security Enhanced Linux) is een beveiligingsarchitectuur voor Linux-systemen die beperkt en definieert hoe een server verzoeken moet verwerken, en hoe gebruikers moeten omgaan met sockets, netwerkpoorten en essentiële mappen. 

Standaard werkt SELinux met de standaard Apache-configuratie. Met de aangepaste virtuele host die u hebt gemaakt, inclusief een aangepaste logmap, wordt er echter een servicefout gegenereerd wanneer u probeert de Apache-service opnieuw te starten. De oplossing is om het SELinux-beleid aan te passen zodat de Apache-service naar de benodigde bestanden kan schrijven. 

SELinux maakt van CentOS een zeer veilige server. Daarom raden we af om het volledig uit te schakelen. Aangezien u met SELinux uw beveiligingsniveau op verschillende manieren kunt aanpassen, wordt aanbevolen om beleidsregels alleen bij te werken of in te stellen op basis van de behoeften van uw omgeving.

U hebt twee opties om het Apache-beleid bij te werken: ofwel Universeel of per Specifieke map. Het bijwerken van beleid dat specifiek is voor een map is veiliger. Daarom is dit de aanbevolen optie. 

  • Apache-beleid universeel bijwerken

U kunt het Apache-beleid universeel wijzigen, wat SELinux opdracht geeft om alle Apache-processen identiek te behandelen door gebruik te maken van de httpd_unified Boolean. Houd er rekening mee dat het universeel wijzigen van het Apache-beleid u niet hetzelfde controleniveau geeft als wanneer u elke map op een specifieke manier configureert. Het is echter handiger als het gaat om onderhoud. Voer de volgende opdracht uit om het Apache-beleid universeel bij te werken: 

Laten we definiëren wat de waarden in deze opdracht doen:

  • setsebool – werkt de boolean-waarden van SELinux bij. 
  • -P tag  – werkt de waarde tijdens het opstarten bij, zodat deze wijziging behouden blijft na een herstart. 
  • httpd_unified  – de boolean-waarde die SELinux opdracht geeft om alle Apache-processen als hetzelfde type te behandelen. Het gebruik van de waarde 1 schakelt dit in. 
  • Apache-beleid aanpassen voor een map

Als u meer controle over mappen wilt, is het aanpassen van het Apache-beleid per map de juiste manier. Dit brengt echter extra onderhoud met zich mee. Dit komt omdat het beleid niet globaal is. Daarom moet u handmatig het contexttype instellen voor alle nieuwe logmappen die u opgeeft in uw virtual host conf-bestanden. 

Controleer voordat u het beleid bijwerkt eerst het contexttype dat SELinux heeft toegewezen aan de map /var/www/example/log met behulp van de volgende opdracht:

De opdracht zal iets als het volgende uitvoeren, wat in feite de SELinux-context van de map is:

httpd_sys_content_t is de huidige context, die SELinux vertelt dat het Apache-proces alleen bestanden mag lezen die in deze map zijn gemaakt. Omdat we vanuit onze virtuele hostconfiguraties willen dat Apache naar logbestanden schrijft in de map /var/www/example/log , zullen we dit beleid wijzigen om Apache toe te staan logbestanden voor webapplicaties te genereren en eraan toe te voegen. De context die dit toestaat is httpd_log_t. Hier is de opdracht om de context bij te werken:

Om de wijzigingen van de bovenstaande opdracht toe te passen en ze na het opstarten te behouden, voert u de volgende opdracht uit:

Laten we definiëren wat de opdracht doet:

  • restorecon – past de wijzigingen toe en zorgt ervoor dat deze behouden blijven na een herstart.
  • -R flag – voert de opdracht recursief uit, waarbij alle bestaande bestanden worden bijgewerkt om de nieuwe context te gebruiken.
  • -v flag – drukt de contextwijzigingen af nadat de opdracht is uitgevoerd. De uitvoer ziet er ongeveer zo uit:
Om de contextwijzigingen te bekijken, kunt u de volgende opdracht opnieuw uitvoeren:
U zou het bijgewerkte contexttype in de uitvoer moeten zien:
Nu de SELinux-mappenbeleidsregels zijn bijgewerkt om Apache toe te staan naar de logmap te schrijven, kunnen we de virtual host testen. 

Stap 6: De virtual host-configuratie testen

Voordat we de virtual host kunnen testen, moet u de Apache-services opnieuw starten. Hier is de opdracht daarvoor:

Toon vervolgens de inhoud van de logmap met de volgende opdracht:

Er zou zoiets als dit moeten worden weergegeven, wat aantoont dat Apache de logbestanden heeft aangemaakt: 

list log files web server

Als u de stappen tot nu toe heeft gevolgd, zou Apache nu de voorbeeld-HTML-pagina moeten kunnen serveren wanneer u uw domeinnaam bezoekt zoals gedefinieerd in uw virtual host-bestand. Indien gewenst kunt u stappen 4 en 5 herhalen om extra domeinen in te stellen en hun SELinux-machtigingen dienovereenkomstig bij te werken.

Conclusie

In deze handleiding hebben we Apache geïnstalleerd, geleerd hoe we het SELinux-beleid kunnen bijwerken om Apache toe te staan naar aangepaste logbestanden te schrijven, en ten slotte onze configuratie getest om te bevestigen dat deze correct werkt. Met deze achtergrond zou u hierop moeten kunnen voortbouwen en betere applicaties met rijkere ervaringen kunnen aanbieden. 

Als u een complete webstack wilt verkennen, bekijk dan onze handleiding over het installeren van de LAMP-stack op CentOS 7

Veel computerplezier!

author

Akshay Nagpal

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.