Hoe de Apache webserver te installeren op CentOS 7

introductie

De Apache HTTP server is de meest gebruikte webserver ter wereld. Het biedt vele krachtige functies, waaronder dynamisch laadbare modules, robuuste media-ondersteuning en uitgebreide integratie met andere populaire software.

in deze gids installeert u een Apache webserver met virtuele hosts op uw CentOS 7 server.

vereisten

u hebt het volgende nodig om deze handleiding in te vullen:

  • een niet-root gebruiker met sudo privileges geconfigureerd op uw server, ingesteld door het volgen van de eerste Server setup guide voor CentOS 7.
  • een basis firewall geconfigureerd door de extra aanbevolen stappen voor nieuwe CentOS 7 Servers guide te volgen.

Stap 1-het installeren van Apache

Apache is beschikbaar in de standaard software repositories van CentOS, wat betekent dat u het kunt installeren met de yum pakketbeheerder.

als de niet-root sudo gebruiker geconfigureerd in de vereisten, update de lokale Apache httpd pakketindex om de laatste upstream wijzigingen weer te geven:

  • sudo yum update httpd

zodra de pakketten zijn bijgewerkt, installeer het Apache pakket:

  • sudo yum install httpd

na bevestiging van de installatie, yum zal Apache en alle vereiste afhankelijkheden installeren.

Als u de extra aanbevolen stappen voor nieuwe CentOS 7 Servers guide hebt voltooid die in de vereisten sectie worden genoemd, dan hebt u firewalld op uw server geïnstalleerd en MOET u poort 80 openen om Apache toe te staan aanvragen via HTTP te verzenden. Als u dit nog niet hebt gedaan, kunt u dit doen door firewalld’s http service aan te zetten met het volgende commando:

  • sudo firewall-cmd --permanent --add-service=http

Als u Apache wilt configureren om inhoud via HTTPS aan te bieden, wilt u ook poort 443 openen door https service:

  • sudo firewall-cmd --permanent --add-service=https

de firewall om deze nieuwe regels in werking te zetten:

  • sudo firewall-cmd --reload

nadat de firewall opnieuw is geladen, bent u klaar om de service te starten en de webserver te controleren.

Stap 2-Uw webserver controleren

Apache start niet automatisch op CentOS zodra de installatie is voltooid. U moet het Apache-proces handmatig starten:

  • sudo systemctl start httpd

Controleer of de service wordt uitgevoerd met het volgende commando:

  • sudo systemctl status httpd

u zult een active status zien wanneer de service wordt uitgevoerd:

Output
Redirecting to /bin/systemctl status httpd.service● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1290 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1290 /usr/sbin/httpd -DFOREGROUND ├─1291 /usr/sbin/httpd -DFOREGROUND ├─1292 /usr/sbin/httpd -DFOREGROUND ├─1293 /usr/sbin/httpd -DFOREGROUND ├─1294 /usr/sbin/httpd -DFOREGROUND └─1295 /usr/sbin/httpd -DFOREGROUND...

zoals u kunt zien aan deze uitvoer, lijkt de service succesvol te zijn gestart. Echter, de beste manier om dit te testen is om een pagina aan te vragen bij Apache.

u kunt toegang krijgen tot de standaard Apache landing page om te bevestigen dat de software correct werkt via uw IP-adres. Als u het IP-adres van uw server niet kent, kunt u het op een paar verschillende manieren vanaf de opdrachtregel krijgen.

Typ dit op de opdrachtprompt van uw server:

  • hostname -I

Dit commando toont alle netwerkadressen van de host, zodat u een paar IP-adressen terug krijgt, gescheiden door spaties. U kunt proberen elk in uw webbrowser om te zien of ze werken.

als alternatief kunt u curl gebruiken om uw IP aan te vragen bij icanhazip.com, waardoor u uw openbare IPv4-adres krijgt zoals gezien vanaf een andere locatie op het internet:

  • curl -4 icanhazip.com

Als u het IP-adres van uw server hebt, voer het dan in de adresbalk van uw browser in:

http://your_server_ip

u ziet de standaard CentOS 7 Apache webpagina:

standaard Apache pagina voor CentOS 7

deze pagina geeft aan dat Apache correct werkt. Het bevat ook enkele basisinformatie over belangrijke Apache-bestanden en directory locaties. Nu de service is geïnstalleerd en draait, kunt u nu verschillende systemctl commando ‘ s gebruiken om de service te beheren.

Stap 3 – Het beheren van het Apache proces

nu uw webserver actief is, laten we een aantal basis Beheer commando ‘ s doornemen.

om uw webserver te stoppen, typt u:

  • sudo systemctl stop httpd

om de webserver te starten wanneer deze wordt gestopt, typt u:

  • sudo systemctl start httpd

om de service te stoppen en dan opnieuw te starten, typt u:

  • sudo systemctl restart httpd

Als u alleen configuratie wijzigingen aanbrengt Apache kan vaak herladen zonder Verbindingen te laten vallen. Om dit te doen, gebruik je dit commando:

  • sudo systemctl reload httpd

standaard is Apache geconfigureerd om automatisch te starten wanneer de server opstart. Als dit niet is wat u wilt, schakelt u dit gedrag uit door te typen:

  • sudo systemctl disable httpd

om de service opnieuw te laten opstarten tijdens het opstarten, typt u:

  • sudo systemctl enable httpd

Apache zal nu automatisch starten wanneer de server opnieuw opstart.

De Standaard configuratie voor Apache zal uw server toestaan om een enkele website te hosten. Als u van plan bent om meerdere domeinen op uw server te hosten, moet u virtuele hosts configureren op uw Apache webserver.

Stap 4-virtuele Hosts instellen (aanbevolen)

wanneer u de Apache-webserver gebruikt, kunt u virtuele hosts gebruiken (vergelijkbaar met serverblokken in Nginx) om configuratiedetails te kapselen en meer dan één domein van een enkele server te hosten. In deze stap zal u een domein instellen genaamd example.com, maar u dient dit te vervangen door uw eigen domeinnaam. Zie onze inleiding tot DigitalOcean DNS voor meer informatie over het instellen van een domeinnaam met DigitalOcean.

Apache op CentOS 7 heeft standaard een serverblok ingeschakeld dat is geconfigureerd om documenten van de /var/www/html map te dienen. Hoewel dit goed werkt voor een enkele site, het kan Log worden als u het hosten van meerdere sites. In plaats van /var/www/html aan te passen, zult u een mapstructuur aanmaken binnen /var/www voor de example.com site, waarbij /var/www/html de standaardmap blijft die gebruikt moet worden als een clientverzoek niet overeenkomt met andere sites.

Maak de html directory example.com als volgt, met behulp van de -p vlag voor het maken van alle noodzakelijke bovenliggende mappen:

  • sudo mkdir -p /var/www/example.com/html

het Maken van een extra map op te slaan, log bestanden voor de site:

  • sudo mkdir -p /var/www/example.com/log

Vervolgens toewijzen eigendom van de html directory met de $USER omgevings variabele:

  • sudo chown -R $USER:$USER /var/www/example.com/html

Zorg ervoor dat uw web root is de standaard machtigingen instellen:

  • sudo chmod -R 755 /var/www

Next, create a sample index.html page using vi or your favorite editor:

  • sudo vi /var/www/example.com/html/index.html

Press i to switch to INSERT mode and add the following sample HTML to the file:

/var/www/example.com/html/index.html
<html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body></html>

Save and close the file by pressing ESC, typing :wq, and pressing ENTER.

met uw sitemap en voorbeeldindexbestand op zijn plaats, bent u bijna klaar om de virtuele hostbestanden aan te maken. Virtuele hostbestanden specificeer de configuratie van uw afzonderlijke sites en vertel de Apache webserver hoe te reageren op verschillende domeinverzoeken.

voordat u uw virtuele hosts maakt, moet u een sites-available map aanmaken om ze op te slaan. U zult ook de sites-enabled map aanmaken die Apache vertelt dat een virtuele host klaar is om aan bezoekers te dienen. Desites-enabled map bevat symbolische links naar virtuele hosts die we willen publiceren. Maak beide mappen aan met het volgende commando:

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

vervolgens zal Apache gevraagd worden naar virtuele hosts te zoeken in de sites-enabled map. Om dit te bereiken, Bewerk Apache ’s hoofdconfiguratiebestand en voeg een regel toe die een optionele map verklaart voor extra configuratiebestanden:

  • sudo vi /etc/httpd/conf/httpd.conf

voeg deze regel toe aan het einde van het bestand:

IncludeOptional sites-enabled/*.conf

sla het bestand op en sluit het als u klaar bent met het toevoegen van die regel. Nu dat u uw virtuele host directory ‘ s op zijn plaats, zult u uw virtuele host bestand te creëren.

begin met het aanmaken van een nieuw bestand in desites-available Map:

  • sudo vi /etc/httpd/sites-available/example.com.conf

voeg het volgende configuratieblok toe en verander het example.com domein naar uw domeinnaam:

/etc/httpd/sites-available/example.com.conf
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/html ErrorLog /var/www/example.com/log/error.log CustomLog /var/www/example.com/log/requests.log combined</VirtualHost>

Dit zal Apache vertellen waar de root direct te vinden is die de openbaar toegankelijke webdocumenten bevat. Het vertelt Apache ook waar de fout op te slaan en verzoek logs voor deze specifieke site.

sla het bestand op en sluit het als u klaar bent.

nu u de virtuele hostbestanden hebt aangemaakt, zult u ze inschakelen zodat Apache Weet ze aan bezoekers te dienen. Maak hiervoor een symbolische link aan voor elke virtuele host in desites-enabled map:

  • sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

uw virtuele host is nu geconfigureerd en klaar om inhoud te presenteren. Voordat we de Apache service herstarten, laten we er zeker van zijn dat SELinux de juiste tactiek heeft voor je virtuele hosts.

Stap 5-SELinux rechten aanpassen voor virtuele Hosts (aanbevolen)

SELinux is geconfigureerd om te werken met de standaard Apache configuratie. Omdat je een aangepaste log directory hebt ingesteld in het virtual hosts configuratie bestand, zal je een fout ontvangen als je probeert de Apache service te starten. Om dit op te lossen, moet je de SELinux tactiek updaten om Apache toe te staan om naar de benodigde bestanden te schrijven. SELinux brengt verhoogde beveiliging naar je CentOS 7 omgeving, daarom wordt het niet aanbevolen om de kernel module volledig uit te schakelen.

er zijn verschillende manieren om beleid in te stellen gebaseerd op de behoeften van je omgeving, omdat SELinux je toestaat om je beveiligingsniveau aan te passen. Deze stap zal betrekking hebben op twee methoden voor het aanpassen van Apache beleid: universeel en op een specifieke directory. Het aanpassen van beleid op mappen is veiliger en is daarom de aanbevolen aanpak.

Apache beleid universeel aanpassen

Het instellen van de Apache beleid universeel zal SELinux vertellen om alle Apache processen identiek te behandelen met behulp van de httpd_unified boolean. Hoewel deze aanpak handiger is, geeft het je niet hetzelfde niveau van controle als een aanpak die zich richt op een bestand of directory beleid.

voer het volgende commando uit om een universele Apache tactiek in te stellen:

  • sudo setsebool -P httpd_unified 1

het setsebool Commando verandert SELinux Booleaanse waarden. De-P vlag zal de opstarttijd waarde bijwerken, waardoor deze verandering blijft bestaan bij het opnieuw opstarten. httpd_unified is de boolean die SELinux zal vertellen om alle Apache processen als hetzelfde type te behandelen, dus je hebt het aangezet met een waarde van 1.

het aanpassen van Apache beleid op een map

Het individueel instellen van SELinux permissies voor de /var/www/example.com/log map geeft je meer controle over je Apache beleid, maar kan ook meer onderhoud vereisen. Aangezien met deze optie niet universeel beleid wordt ingesteld, moet u handmatig het contexttype instellen voor alle nieuwe logboekmappen die zijn opgegeven in uw virtuele hostconfiguraties.

controleer eerst het context type dat SELinux de /var/www/example.com/log map gaf:

  • sudo ls -dZ /var/www/example.com/log/

Dit commando toont en drukt de SELinux context van de map af. U ziet uitvoer vergelijkbaar met de volgende:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/

de huidige context is httpd_sys_content_t, wat SELinux vertelt dat het Apache proces alleen bestanden kan lezen die in deze map zijn aangemaakt. In deze tutorial verander je het contexttype van de /var/www/example.com/log map naar httpd_log_t. Dit type zal Apache toestaan om logbestanden voor webtoepassingen te genereren en toe te voegen:

  • sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

volgende, gebruik hetrestorecon commando om deze wijzigingen toe te passen en ze te laten voortduren bij het opnieuw opstarten:

  • sudo restorecon -R -v /var/www/example.com/log

de vlag -R voert dit commando recursief uit, wat betekent dat het bestaande bestanden zal bijwerken om de nieuwe context te gebruiken. De-v vlag zal de contextwijzigingen van het commando afdrukken. U zult de volgende uitvoer zien die de wijzigingen bevestigt:

Output
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

u kunt de contexten nogmaals weergeven om de wijzigingen te zien:

  • sudo ls -dZ /var/www/example.com/log/

De uitvoer weerspiegelt het bijgewerkte contexttype:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

nu de /var/www/example.com/log Map Het httpd_log_t type gebruikt, bent u klaar om uw virtuele host configuratie te testen.

Stap 6-het testen van de virtuele Host (aanbevolen)

zodra de SELinux context is bijgewerkt met een van beide methoden, zal Apache in staat zijn om naar de /var/www/example.com/log map te schrijven. U kunt nu met succes de Apache-service herstarten:

  • sudo systemctl restart httpd

Toon de inhoud van de /var/www/example.com/log map om te zien of Apache de logbestanden heeft aangemaakt:

  • ls -lZ /var/www/example.com/log

u zult zien dat Apache in staat was om de error.log en requests.log bestanden gespecificeerd in de virtuele host configuratie:

Output
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

nu dat u uw virtuele host hebt ingesteld en SELinux permissies bijgewerkt, Apache zal nu dienen uw domeinnaam. U kunt dit testen door te navigeren naar http://example.com, waar u iets als dit zou moeten zien:

succes! Het example.com virtuele host werkt!

Dit bevestigt dat uw virtuele host met succes is geconfigureerd en inhoud biedt. Herhaal Stap 4 en 5 om nieuwe virtuele hosts te maken met SELinux rechten voor extra domeinen.

conclusie

In deze handleiding installeerde en beheerde u de Apache webserver. Nu je je webserver hebt geïnstalleerd, heb je veel opties voor het type content dat je kunt aanbieden en de technologieën die je kunt gebruiken om een rijkere ervaring te creëren.

als je een meer complete applicatie stack wilt bouwen, kun je in dit artikel kijken hoe je een LAMP stack kunt configureren op CentOS 7.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *