introduktion
Apache HTTP-servern är den mest använda webbservern i världen. Det ger många kraftfulla funktioner inklusive dynamiskt laddningsbara moduler, robust mediastöd och omfattande integration med annan populär programvara.
i den här guiden installerar du en Apache-webbserver med virtuella värdar på din CentOS 7-server.
förutsättningar
Du behöver följande för att slutföra den här guiden:
- en icke-root-användare med sudo-privilegier konfigurerad på din server, konfigureras genom att följa den ursprungliga serverns Installationsguide för CentOS 7.
- en grundläggande brandvägg konfigurerad genom att följa de ytterligare rekommenderade stegen för nya CentOS 7 Servers guide.
Steg 1-installera Apache
Apache är tillgängligt i CentOS standardprogramvaruförråd, vilket innebär att du kan installera det med yum
pakethanteraren.
som icke-root sudo-användare konfigurerad i förutsättningarna, uppdatera den lokala Apachehttpd
paketindex för att återspegla de senaste uppströmsändringarna:
- sudo yum update httpd
när paketen har uppdaterats installerar du Apache-paketet:
- sudo yum install httpd
Efter att ha bekräftat installationen installeraryum
Apache och alla nödvändiga beroenden.
Om du har slutfört de ytterligare rekommenderade stegen för den nya CentOS 7-serverguiden som nämns i avsnittet förutsättningar har du installerat firewalld
på din server och du måste öppna port för att tillåta Apache att betjäna förfrågningar via HTTP. Om du inte redan har gjort det kan du göra det genom att aktivera firewalld
’s http
service med följande kommando:
- sudo firewall-cmd --permanent --add-service=http
om du planerar att konfigurera Apache för att servera innehåll via HTTPS, vill du också öppna port 443
genom att aktivera https
service:
- sudo firewall-cmd --permanent --add-service=https
nästa, ladda brandväggen för att sätta dessa nya regler i kraft:
- sudo firewall-cmd --reload
när brandväggen laddas om är du redo att starta tjänsten och kontrollera webbservern.
steg 2-Kontrollera din webbserver
Apache startar inte automatiskt på CentOS när installationen är klar. Du måste starta Apache-processen manuellt:
- sudo systemctl start httpd
kontrollera att tjänsten körs med följande kommando:
- sudo systemctl status httpd
Du kommer att se ett active
status när tjänsten körs:
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 från den här utmatningen verkar tjänsten ha startat framgångsrikt. Det bästa sättet att testa detta är dock att begära en sida från Apache.
Du kan komma åt standard Apache-målsidan för att bekräfta att programvaran körs korrekt via din IP-adress. Om du inte känner till din servers IP-adress kan du få det några olika sätt från kommandoraden.
Skriv detta på serverns kommandotolk:
- hostname -I
det här kommandot visar alla värdens nätverksadresser, så du får tillbaka några IP-adresser åtskilda av mellanslag. Du kan prova var och en i din webbläsare för att se om de fungerar.
Alternativt kan du använda curl
för att begära din IP från icanhazip.com
, vilket ger dig din offentliga IPv4-adress sett från en annan plats på internet:
- curl -4 icanhazip.com
När du har din servers IP-adress anger du den i webbläsarens adressfält:
http://your_server_ip
Du ser standard CentOS 7 Apache webbsida:
denna sida indikerar att Apache fungerar korrekt. Den innehåller också grundläggande information om viktiga Apache-filer och katalogplatser. Nu när tjänsten är installerad och körs kan du nu använda olika systemctl
kommandon för att hantera tjänsten.
steg 3-Hantera Apache processen
Nu när du har din webbserver igång, låt oss gå över några grundläggande hanteringskommandon.
för att stoppa din webbserver skriver du:
- sudo systemctl stop httpd
för att starta webbservern när den är stoppad skriver du:
- sudo systemctl start httpd
för att stoppa och sedan starta tjänsten igen skriver du:
- sudo systemctl restart httpd
om du helt enkelt gör konfigurationsändringar kan Apache ofta ladda om utan att tappa anslutningar. För att göra detta, använd det här kommandot:
- sudo systemctl reload httpd
som standard är Apache konfigurerad att starta automatiskt när servern startar. Om detta inte är vad du vill, inaktivera detta beteende genom att skriva:
- sudo systemctl disable httpd
för att återaktivera tjänsten att starta vid start, skriv:
- sudo systemctl enable httpd
Apache startar nu automatiskt när servern startar igen.
standardkonfigurationen för Apache tillåter din server att vara värd för en enda webbplats. Om du planerar att vara värd för flera domäner på din server måste du konfigurera virtuella värdar på din Apache webbserver.
steg 4-Ställa in virtuella värdar (rekommenderas)
När du använder Apache webbservern kan du använda virtuella värdar (liknande serverblock i Nginx) för att kapsla in konfigurationsinformation och vara värd för mer än en domän från en enda server. I det här steget skapar du en domän som heter example.com
, men du bör ersätta detta med ditt eget domännamn. Mer information om hur du konfigurerar ett domännamn med DigitalOcean finns i vår introduktion till DigitalOcean DNS.
Apache på CentOS 7 har ett serverblock aktiverat som standard som är konfigurerat för att servera dokument från katalogen/var/www/html
. Även om detta fungerar bra för en enda webbplats kan det bli obehagligt om du är värd för flera webbplatser. I stället för att ändra /var/www/html
skapar du en katalogstruktur inom /var/www
för example.com
och lämnar /var/www/html
på plats som standardkatalog som ska visas om en klientförfrågan inte matchar några andra webbplatser.
skapa html
katalog för example.com
enligt följande använder du flaggan -p
för att skapa nödvändiga överordnade kataloger:
- sudo mkdir -p /var/www/example.com/html
skapa en extra katalog för att lagra loggfiler för webbplatsen:
- sudo mkdir -p /var/www/example.com/log
därefter tilldela äganderätten till html
katalog med $USER
miljövariabel:
- sudo chown -R $USER:$USER /var/www/example.com/html
se till att din webbrot har standardinställningen behörigheter set:
- 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 webbplatskatalog och exempelindexfil på plats är du nästan redo att skapa de virtuella värdfilerna. Virtuella värdfiler anger konfigurationen för dina separata webbplatser och berättar för Apache webbservern hur man svarar på olika domänförfrågningar.
innan du skapar dina virtuella värdar måste du skapa en sites-available
katalog för att lagra dem. Du kommer också att skapa sites-enabled
katalog som berättar Apache att en virtuell värd är redo att tjäna till besökare. Katalogensites-enabled
innehåller symboliska länkar till virtuella värdar som vi vill publicera. Skapa båda katalogerna med följande kommando:
- sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
därefter kommer du att berätta för Apache att leta efter virtuella värdar i katalogensites-enabled
. För att uppnå detta, redigera Apaches huvudkonfigurationsfil och Lägg till en rad som förklarar en valfri katalog för ytterligare konfigurationsfiler:
- sudo vi /etc/httpd/conf/httpd.conf
Lägg till den här raden i slutet av filen:
IncludeOptional sites-enabled/*.conf
spara och stäng filen när du är klar med att lägga till den raden. Nu när du har dina virtuella värdkataloger på plats skapar du din virtuella värdfil.
börja med att skapa en ny fil i sites-available
katalog:
- sudo vi /etc/httpd/sites-available/example.com.conf
Lägg till i följande konfigurationsblock och ändra example.com
domän till ditt domännamn:
<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>
detta kommer att berätta för Apache var du hittar roten direkt som innehåller de offentligt tillgängliga webbdokumenten. Det berättar också Apache var att lagra fel och begära loggar för just denna webbplats.
spara och stäng filen när du är klar.
Nu när du har skapat de virtuella värdfilerna, kommer du att aktivera dem så att Apache vet att tjäna dem till besökare. För att göra detta, skapa en symbolisk länk för varje virtuell värd i katalogensites-enabled
:
- sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
din virtuella värd är nu konfigurerad och redo att servera innehåll. Innan du startar om Apache-tjänsten, låt oss se till att SELinux har rätt Policy för dina virtuella värdar.
Steg 5 — Justera SELinux behörigheter för virtuella värdar (rekommenderas)
SELinux är konfigurerad för att fungera med standard Apache-konfigurationen. Eftersom du konfigurerar en anpassad loggkatalog i konfigurationsfilen för virtuella värdar får du ett felmeddelande om du försöker starta Apache-tjänsten. För att lösa detta måste du uppdatera SELinux-policyerna så att Apache kan skriva till nödvändiga filer. SELinux ger ökad säkerhet till din CentOS 7-miljö, därför rekommenderas det inte att helt inaktivera kärnmodulen.
det finns olika sätt att ställa in policyer baserat på din Miljös behov, eftersom SELinux låter dig anpassa din säkerhetsnivå. Detta steg kommer att täcka två metoder för att justera Apache-policyer: universellt och i en specifik katalog. Att justera policyer för kataloger är säkrare och är därför det rekommenderade tillvägagångssättet.
justera Apache-policyer universellt
ställa in Apache-policyn universellt kommer att berätta för SELinux att behandla alla Apache-processer identiskt med hjälp avhttpd_unified
boolean. Även om detta tillvägagångssätt är bekvämare kommer det inte att ge dig samma kontrollnivå som ett tillvägagångssätt som fokuserar på en fil-eller katalogpolicy.
kör följande kommando för att ställa in en universell Apache-policy:
- sudo setsebool -P httpd_unified 1
setsebool
kommandot ändrar SELinux booleska värden. Flaggan-P
uppdaterar starttidsvärdet, vilket gör att denna ändring kvarstår över omstarter. httpd_unified
är den booleska som kommer att berätta för SELinux att behandla alla Apache-processer som samma typ, så du aktiverade den med ett värde på 1
.
justering av Apache-policyer i en katalog
individuellt inställning av SELinux-behörigheter för/var/www/example.com/log
katalog ger dig mer kontroll över dina Apache-policyer, men kan också kräva mer underhåll. Eftersom det här alternativet inte är universellt inställningsprinciper måste du manuellt ställa in kontexttypen för alla nya loggkataloger som anges i dina virtuella värdkonfigurationer.
kontrollera först kontexttypen som SELinux gav/var/www/example.com/log
katalog:
- sudo ls -dZ /var/www/example.com/log/
detta kommando listar och skriver ut SELinux-sammanhanget i katalogen. Du kommer att se utdata som liknar följande:
Outputdrwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/
det aktuella sammanhanget är httpd_sys_content_t
, som berättar för SELinux att Apache-processen bara kan läsa filer som skapats i den här katalogen. I den här handledningen ändrar du kontexttypen för /var/www/example.com/log
– katalogen till httpd_log_t
. Denna typ gör det möjligt för Apache att generera och lägga till loggfiler för webbapplikationer:
- sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"
använd sedan kommandot restorecon
för att tillämpa dessa ändringar och få dem att fortsätta över omstarter:
- sudo restorecon -R -v /var/www/example.com/log
-R
flaggan kör detta kommando rekursivt, vilket betyder att det kommer att uppdatera alla befintliga filer för att använda det nya sammanhanget. Flaggan-v
kommer att skriva ut sammanhanget ändrar kommandot som gjorts. Du kommer att se följande utdata som bekräftar ändringarna:
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 lista kontexterna en gång till för att se ändringarna:
- sudo ls -dZ /var/www/example.com/log/
utgången återspeglar den uppdaterade kontexttypen:
Outputdrwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log
nu när/var/www/example.com/log
katalogen använderhttpd_log_t
typ, är du redo att testa din virtuella värdkonfiguration.
steg 6-Testa den virtuella värden (rekommenderas)
När SELinux-sammanhanget har uppdaterats med någon av metoderna kan Apache skriva till katalogen/var/www/example.com/log
. Du kan nu starta om Apache-tjänsten:
- sudo systemctl restart httpd
lista innehållet i katalogen/var/www/example.com/log
för att se om Apache skapade loggfilerna:
- ls -lZ /var/www/example.com/log
du ser att Apache kunde skapaerror.log
ochrequests.log
filer som anges i den virtuella värdkonfigurationen:
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
du har din virtuella värd inställd och SELinux behörigheter uppdateras, Apache kommer nu att tjäna ditt domännamn. Du kan testa detta genom att navigera tillhttp://example.com
, där du ska se något så här:
detta bekräftar att din virtuella värd har konfigurerats och serverat innehåll. Upprepa steg 4 och 5 för att skapa nya virtuella värdar med SELinux-behörigheter för ytterligare domäner.
slutsats
i den här handledningen installerade och hanterade du Apache webbservern. Nu när du har din webbserver installerad har du många alternativ för vilken typ av innehåll du kan servera och den teknik du kan använda för att skapa en rikare upplevelse.
Om du vill bygga ut en mer komplett applikationsstack kan du titta på den här artikeln om hur du konfigurerar en LAMPSTACK på CentOS 7.