introduktion
Apache HTTP-serveren er den mest anvendte internetserver i verden. Det giver mange kraftfulde funktioner, herunder dynamisk belastbare moduler, robust mediestøtte og omfattende integration med andre populære programmer.
i denne vejledning installerer du en Apache-server med virtuelle værter på din CentOS 7-server.
forudsætninger
Du skal bruge følgende for at fuldføre denne vejledning:
- en ikke-root-bruger med sudo-rettigheder konfigureret på din server, konfigureret ved at følge den oprindelige serveropsætningsvejledning til CentOS 7.
- en grundlæggende brandvæg konfigureret ved at følge de yderligere anbefalede trin til den nye CentOS 7-Serverguide.
Trin 1 — installation af Apache
Apache er tilgængelig i CentOS ‘ standardprogramregistre, hvilket betyder, at du kan installere det medyum
pakkehåndtering.
som den ikke-root sudo-bruger konfigureret i forudsætningerne, skal du opdatere den lokale Apache httpd
pakkeindeks for at afspejle de seneste opstrømsændringer:
- sudo yum update httpd
når pakkerne er opdateret, skal du installere Apache-pakken:
- sudo yum install httpd
efter bekræftelse af installationen, yum
vil installere Apache og alle nødvendige afhængigheder.
Hvis du har gennemført de yderligere anbefalede trin til den nye CentOS 7-Serverguide, der er nævnt i afsnittet forudsætninger, har du installeretfirewalld
på din server, og du skal åbne port80
for at tillade Apache at betjene anmodninger via HTTP. Hvis du ikke allerede har gjort det, kan du gøre dette ved at aktiverefirewalld
‘shttp
service med følgende kommando:
- sudo firewall-cmd --permanent --add-service=http
Hvis du planlægger at konfigurere Apache til at servere indhold via HTTPS, vil du også åbne port 443
ved at aktivere https
service:
- sudo firewall-cmd --permanent --add-service=https
genindlæs derefter brandvæggen for at sætte disse nye regler i kraft:
- sudo firewall-cmd --reload
efter genindlæsningen er du klar til at starte tjenesten og kontrollere internetserveren.
Trin 2-Kontrol af din internetserver
Apache starter ikke automatisk på CentOS, når installationen er afsluttet. Du skal starte Apache-processen manuelt:
- sudo systemctl start httpd
Kontroller, at tjenesten kører med følgende kommando:
- sudo systemctl status httpd
du vil se en active
status, når tjenesten kører:
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...
som du kan se fra denne udgang, ser tjenesten ud til at være startet med succes. Den bedste måde at teste dette på er dog at anmode om en side fra Apache.
Du kan få adgang til Apache-standardlandingssiden for at bekræfte, at programmet kører korrekt via din IP-adresse. Hvis du ikke kender din server IP-adresse, kan du få det et par forskellige måder fra kommandolinjen.
Skriv dette på din server kommandoprompt:
- hostname -I
denne kommando viser alle værtens netværksadresser, så du får tilbage et par IP-adresser adskilt af mellemrum. Du kan prøve hver i din internetsøgemaskine for at se, om de fungerer.
Alternativt kan du bruge curl
til at anmode om din IP fra icanhazip.com
, som giver dig din offentlige IPv4-adresse set fra et andet sted på internettet:
- curl -4 icanhazip.com
Når du har din server IP-adresse, skal du indtaste den i din server adresselinje:
http://your_server_ip
Du vil se Standard CentOS 7 Apache hjemmeside:
denne side angiver, at Apache fungerer korrekt. Det indeholder også nogle grundlæggende oplysninger om vigtige Apache-filer og katalogplaceringer. Nu hvor tjenesten er installeret og kører, kan du nu bruge forskellige systemctl
kommandoer til at administrere tjenesten.
Trin 3-styring af Apache-processen
nu hvor du har din internetserver i gang, lad os gennemgå nogle grundlæggende styringskommandoer.
for at stoppe din internetserver skal du skrive:
- sudo systemctl stop httpd
for at starte internetserveren, når den stoppes, skal du skrive:
- sudo systemctl start httpd
for at stoppe og derefter starte tjenesten igen skal du skrive:
- sudo systemctl restart httpd
Hvis du foretager simpelthen konfigurationsændringer, Apache kan ofte genindlæses uden at tabe forbindelser. For at gøre dette skal du bruge denne kommando:
- sudo systemctl reload httpd
Som standard er Apache konfigureret til at starte automatisk, når serveren starter. Hvis dette ikke er, hvad du vil, skal du deaktivere denne opførsel ved at skrive:
- sudo systemctl disable httpd
for at genaktivere tjenesten til at starte ved opstart, skal du skrive:
- sudo systemctl enable httpd
Apache starter nu automatisk, når serveren starter igen.
standardkonfigurationen for Apache giver din server mulighed for at være vært for en enkelt hjemmeside. Hvis du planlægger at hoste flere domæner på din server, skal du konfigurere virtuelle værter på din Apache-server.
Trin 4-Opsætning af virtuelle værter (anbefales)
når du bruger Apache-serveren, kan du bruge virtuelle værter (svarende til serverblokke) til at indkapsle konfigurationsoplysninger og være vært for mere end et domæne fra en enkelt server. I dette trin opretter du et domæne kaldet example.com
, men du skal erstatte dette med dit eget domænenavn. For at lære mere om opsætning af et domænenavn med DigitalOcean, se vores Introduktion til DigitalOcean DNS.
Apache på CentOS 7 har en serverblok aktiveret som standard, der er konfigureret til at betjene dokumenter fra/var/www/html
mappe. Selvom dette fungerer godt for et enkelt sted, kan det blive uhåndterligt, hvis du er vært for flere sider. I stedet for at ændre /var/www/html
opretter du en mappestruktur inden for /var/www
for example.com
og efterlader /var/www/html
på plads som standardmappe, der skal serveres, hvis en klientanmodning ikke matcher andre sider.
Opret html
directory for example.com
som følger, ved hjælp af -p
flag for at oprette eventuelle nødvendige overordnede mapper:
- sudo mkdir -p /var/www/example.com/html
Opret en ekstra mappe til at gemme logfiler filer til siden:
- sudo mkdir -p /var/www/example.com/log
næste, Tildel ejerskab af html
mappen med $USER
miljøvariabel:
- sudo chown -R $USER:$USER /var/www/example.com/html
sørg for, at din netrod har standardtilladelserne til din hjemmeside sæt:
- 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
.
med din site directory og prøve indeksfil på plads, er du næsten klar til at oprette de virtuelle vært filer. Virtuelle værtsfiler angiver konfigurationen af dine separate sider og fortæller Apache-serveren, hvordan man reagerer på forskellige domæneanmodninger.
før du opretter dine virtuelle værter, skal du oprette en sites-available
mappe til at gemme dem i. Du opretter også mappen sites-enabled
, der fortæller Apache, at en virtuel vært er klar til at tjene til besøgende. sites-enabled
mappen vil indeholde symbolske links til virtuelle værter, som vi vil offentliggøre. Opret begge mapper med følgende kommando:
- sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
Dernæst vil du bede Apache om at kigge efter virtuelle værter i sites-enabled
mappe. For at opnå dette skal du redigere Apaches hovedkonfigurationsfil og tilføje en linje, der erklærer et valgfrit bibliotek for yderligere konfigurationsfiler:
- sudo vi /etc/httpd/conf/httpd.conf
Tilføj denne linje til slutningen af filen:
IncludeOptional sites-enabled/*.conf
Gem og luk filen, når du er færdig med at tilføje den linje. Nu hvor du har dine virtuelle værtsmapper på plads, opretter du din virtuelle værtsfil.
Start med at oprette en ny fil isites-available
directory:
- sudo vi /etc/httpd/sites-available/example.com.conf
Tilføj i følgende konfigurationsblok, og skiftexample.com
domæne til dit domænenavn:
<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>
dette vil fortælle Apache, hvor man finder roden direkte, der indeholder de offentligt tilgængelige internetdokumenter. Det fortæller også Apache hvor man kan gemme fejl og anmode logfiler for netop dette site.
Gem og luk filen, når du er færdig.
nu hvor du har oprettet de virtuelle værtsfiler, aktiverer du dem, så Apache ved at tjene dem til besøgende. For at gøre dette skal du oprette et symbolsk link for hver virtuel vært i sites-enabled
:
- sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
din virtuelle vært er nu konfigureret og klar til at servere indhold. Før vi genstarter Apache-tjenesten, skal vi sørge for, at vi har de korrekte politikker på plads for dine virtuelle værter.
Trin 5-Justering af tilladelser til virtuelle værter (anbefales)
er konfigureret til at fungere med standard Apache-konfigurationen. Da du opretter en brugerdefineret logbog i konfigurationsfilen virtual hosts, vil du modtage en fejl, hvis du forsøger at starte Apache-tjenesten. For at løse dette skal du opdatere vores politikker, så Apache kan skrive til de nødvendige filer. Selinuk bringer øget sikkerhed til dit CentOS 7-miljø, derfor anbefales det ikke at deaktivere kernemodulet helt.
der er forskellige måder at angive politikker baseret på dit miljøs behov, da du kan tilpasse dit sikkerhedsniveau. Dette trin dækker to metoder til justering af Apache-politikker: universelt og på en bestemt mappe. Justering af politikker på mapper er mere sikker og er derfor den anbefalede tilgang.
justering af Apache-politikker universelt
indstilling af Apache-politikken universelt vil fortælle os, at vi skal behandle alle Apache-processer identisk ved hjælp afhttpd_unified
boolsk. Selvom denne tilgang er mere praktisk, giver den dig ikke det samme niveau af kontrol som en tilgang, der fokuserer på en fil-eller katalogpolitik.
Kør følgende kommando for at indstille en universel Apache-politik:
- sudo setsebool -P httpd_unified 1
setsebool
kommandoen ændrer selinuks boolske værdier. -P
flag opdaterer opstartstidsværdien, hvilket gør denne ændring vedvarende på tværs af genstarter. httpd_unified
er den boolske, der vil fortælle Selinuks at behandle alle Apache-processer som den samme type, så du aktiverede den med en værdi på1
.
justering af Apache-politikker i en mappe
individuelt indstilling af tilladelser til/var/www/example.com/log
– mappen giver dig mere kontrol over dine Apache-politikker, men kan også kræve mere vedligeholdelse. Da denne indstilling ikke angiver politikker universelt, skal du manuelt indstille konteksttypen for nye logmapper, der er angivet i dine virtuelle værtskonfigurationer.
Kontroller først den konteksttype, som Selinuk gav/var/www/example.com/log
directory:
- sudo ls -dZ /var/www/example.com/log/
denne kommando viser og udskriver katalogets Selinukskontekst. Du vil se output svarende til følgende:
Outputdrwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/
den aktuelle kontekst erhttpd_sys_content_t
, som fortæller os, at Apache-processen kun kan læse filer oprettet i denne mappe. I denne vejledning ændrer du konteksttypen for /var/www/example.com/log
– mappen til httpd_log_t
. Denne type giver Apache mulighed for at generere og tilføje logfiler til internetapplikationer:
- sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"
brug derefter kommandoenrestorecon
til at anvende disse ændringer og få dem til at fortsætte på tværs af genstarter:
- sudo restorecon -R -v /var/www/example.com/log
-R
flag kører denne kommando rekursivt, hvilket betyder, at den opdaterer alle eksisterende filer for at bruge den nye kontekst. -v
flaget udskriver kontekstændringerne, som kommandoen er foretaget. Du vil se følgende output, der bekræfter ændringerne:
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
Du kan liste konteksterne igen for at se ændringerne:
- sudo ls -dZ /var/www/example.com/log/
udgangen afspejler den opdaterede konteksttype:
Outputdrwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log
nu hvor/var/www/example.com/log
mappen brugerhttpd_log_t
typen, er du klar til at teste din virtuelle værtskonfiguration.
Trin 6-Test af den virtuelle vært (anbefales)
når den valgte kontekst er blevet opdateret med begge metoder, vil Apache være i stand til at skrive til /var/www/example.com/log
mappe. Du kan nu genstarte Apache-tjenesten:
- sudo systemctl restart httpd
liste indholdet af/var/www/example.com/log
mappe for at se, om Apache oprettede logfilerne:
- ls -lZ /var/www/example.com/log
du vil se, at Apache var i stand til at oprette error.log
og requests.log
filer angivet i den virtuelle værtskonfiguration:
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 hvis du har oprettet din virtuelle vært og opdateret dine tilladelser, vil Apache nu vise dit domænenavn. Du kan teste dette ved at navigere til http://example.com
, hvor du skal se noget som dette:
dette bekræfter, at din virtuelle vært er konfigureret og serverer indhold. Gentag trin 4 og 5 for at oprette nye virtuelle værter med flere domæner.
konklusion
i denne vejledning installerede og administrerede du Apache-serveren. Nu hvor du har installeret din internetserver, har du mange muligheder for den type indhold, du kan servere, og de teknologier, du kan bruge til at skabe en rigere oplevelse.
Hvis du gerne vil opbygge en mere komplet applikationsstak, kan du se på denne artikel om, hvordan du konfigurerer en LAMPESTAK på CentOS 7.