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:
OutputRedirecting 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:
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:
<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:
<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:
Outputdrwxr-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:
Outputrestorecon 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:
Outputdrwxr-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:
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.