Så här installerar du Apache webbservern på CentOS 7

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:

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...

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:

standard Apache sida för CentOS 7

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:

/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.

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:

/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>

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:

Output
drwxr-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:

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

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:

Output
drwxr-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:

framgång! Den example.com virtuell värd fungerar!

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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *