Apache HTTP Server (httpd) är en av de mest populära och robusta webbservrarna som finns tillgängliga, känd för sin flexibilitet, prestanda och breda utbud av funktioner. Det används ofta för att vara värd för webbplatser och webbapplikationer. Genom att ställa in Apache på CentOS Stream 9 kan du utnyttja dess kraftfulla funktioner för dina webbhotellbehov. Att dessutom säkra din webbplats med ett gratis SSL-certifikat från Let's Encrypt säkerställer att din webbplats är krypterad och pålitlig.
För att installera Apache HTTP Server på CentOS Stream 9 och ställa in ett Let's Encrypt SSL-certifikat, följ stegen som beskrivs i den här guiden. Detta ger dig en säker och effektiv webbserverkonfiguration.
Säkerställa ett helt uppdaterat CentOS Stream System före Apache-installation
Innan vi fortsätter med Apache-installationen på din CentOS Stream-maskin måste vi verifiera att vårt system är helt uppdaterat. Detta är mer än bara en försiktighetsåtgärd. Att uppdatera ditt system hjälper till att förhindra kompatibilitetsproblem och förbättrar avsevärt dess stabilitet, säkerhet och prestanda.
För att sätta igång detta, kör följande kommando i din terminal:
sudo dnf upgrade --refresh
Detta kommando sätter igång uppdateringsmekanismen, skaffar och installerar ditt systems senaste programuppdateringar och säkerhetskorrigeringar. Det är viktigt att låta uppdateringsprocessen avslutas helt innan du går vidare till Apache-installationen. Detta säkerställer att ditt system är i sitt bästa skick, optimalt konfigurerat och förberett för att köra Apache utan att stöta på några problem eller kompatibilitetsproblem.
Installera Apache HTTPD via DNF Command
Det andra steget är att installera Apache, eller HTTPD, på ditt CentOS Stream-system. Detta är en enkel process, tack vare den kraftfulla DNF-pakethanteraren. DNF, eller Dandified Yum, pakethanteraren förenklar installation, uppdatering och hantering av mjukvarupaket.
Kickstarta installationen av Apache (HTTPD) genom att köra följande kommando i din terminal:
sudo dnf install httpd
Detta kommando initierar installationsmekanismen och hämtar och installerar alla nödvändiga komponenter för att Apache (HTTPD) ska kunna köras på ditt system. Processen bör avslutas på bara några minuter. Efteråt kommer du att ha Apache (HTTPD) fullt installerad och redo att användas.
Aktivera och konfigurera Apache HTTPD för att köras vid systemstart
Efter den framgångsrika installationen av Apache (HTTPD) på ditt CentOS Stream-system är följande nyckelåtgärd att aktivera tjänsten och konfigurera den för att starta automatiskt vid systemstart. Apache (HTTPD) är alltid aktiv och redo att skicka webbförfrågningar när ditt system startar.
Om Apache (HTTPD)-tjänsten inte är aktiv eller inställd på att köras som standard, använd dessa kommandon i din terminal för att starta tjänsten och se till att den körs vid systemstart:
sudo systemctl start httpd
sudo systemctl enable httpd
Det första kommandot, sudo systemctl start httpd, startar Apache-tjänsten (HTTPD), medan det andra kommandot, sudo systemctl enable httpd, ställer in tjänsten att köras automatiskt vid systemstart. Genom att implementera dessa två kommandon garanterar du att Apache (HTTPD) är ständigt tillgänglig och aktiv, redo att tillgodose webbförfrågningar varje gång ditt system slås på.
Som ett alternativ kan du kondensera de två föregående stegen till ett enda kommando:
sudo systemctl enable httpd --now
Alternativet –now i kommandot sudo systemctl enable httpd –now startar samtidigt Apache-tjänsten (HTTPD) och konfigurerar den att starta automatiskt vid systemstart. Detta enda kommando förenar de två separata kommandona från de föregående stegen, vilket gör processen mer strömlinjeformad och effektiv.
Kontrollera Apache HTTPD Service Status
Slutligen bör vi verifiera den framgångsrika implementeringen och funktionen av Apache (HTTPD) genom att använda följande systemctl-kommando:
systemctl status httpd
Detta kommando ger dig status i realtid för Apache-tjänsten (HTTPD), inklusive eventuella fel eller meddelanden som kan ha uppstått. Genom att granska tjänstens status kan du bekräfta att Apache (HTTPD) fungerar sömlöst.
Konfigurera FirewallD-regler
Efter att ha installerat Apache (HTTPD) på CentOS Stream kanske du märker att brandväggen inte innehåller förkonfigurerade regler för standardportarna 80 och 443. Du måste konfigurera dessa brandväggsregler innan du går vidare för att förbättra säkerheten för din webbapplikation.
Ställ in brandväggsreglerna med brandvägg-cmd-verktyget, CentOS Streams standardverktyg för brandväggshantering. Reglerna du behöver konfigurera kommer att variera beroende på vilka portar du tänker använda. Vi listar dock alla kritiska alternativ i följande steg.
Öppna portarna 80 och 443
Vi kommer att köra de två första kommandona för att öppna portarna 80 och 443. Dessa portar hanterar inkommande HTTP- respektive HTTPS-trafik.
För att öppna port 80 eller HTTP, kör följande kommando:
sudo firewall-cmd --permanent --add-port=80/tcp
Öppna sedan port 443, eller HTTPS, med följande kommando:
sudo firewall-cmd --permanent --add-port=443/tcp
Verifiera brandväggsändringar
Efter att ha angett vilka portar som ska öppnas måste vi instruera brandväggen att implementera dessa ändringar. Gör detta genom att ladda om brandväggsreglerna med kommandot nedan:
sudo firewall-cmd --reload
Förstå konsekvenserna
Det är ytterst viktigt att ha en god förståelse för säkerhetskonsekvenserna av att öppna portar på ditt system. Genom att selektivt endast öppna de nödvändiga portarna, stärker du din webbapplikations försvar mot obehörig åtkomst och potentiella säkerhetshot. Detta understryker varför det är viktigt att korrekt konfigurera brandväggsreglerna för din Apache (HTTPD)-installation på CentOS Stream.
Verifierar Apache HTTPD-åtkomst
Efter att ha noggrant konfigurerat Firewalld, se till att du kan komma åt Apaches (HTTPD) målsida via din webbläsare. Starta din favoritwebbläsare och gå till antingen http://localhost eller http://din_server_ip.
För att komma åt via din servers IP:
http://your_server_ip
Alternativt, för att komma åt via localhost:
http://localhost
När du konfigurerar allt exakt, kommer Apaches (HTTPD) standardmålsida att hälsa dig välkomna. Den här sidan visar ett meddelande som bekräftar att servern fungerar som förväntat. Sidan kommer att likna:
Skapa och konfigurera en virtuell värd
Det här avsnittet kommer att fördjupa sig i den praktiska aspekten av att skapa en virtuell värd med Apache (HTTPD), en flexibel webbserver känd för sin förmåga att vara värd för flera domäner på en enda server. Det här verktyget är analogt med attributet "server block" för Nginx. I den efterföljande handledningen kommer vi att illustrera hur man formulerar en virtuell värd för en viss domän, representerad som "exempel-domän.com." Naturligtvis kommer du att ersätta denna exempeldomän med ditt specifika domännamn.
Att skapa virtuella värdar underlättar oberoende hantering av konfigurationer för varje domän. Detta ger kontroll över olika aspekter av din webbservermiljö, inklusive säkerhet, prestanda och anpassade inställningar. Detta kan visa sig vara särskilt fördelaktigt om du siktar på att vara värd för flera webbplatser på en enda server eller bibehålla separata inställningar för olika delar av din webbplats. Med Apache (HTTPD) kan du enkelt skapa virtuella värdar för att uppfylla dessa krav.
Skapa och konfigurera kataloger
Att påbörja installationen av din virtuella värd innebär att du skapar en ny katalog som fungerar som rotmappen för din virtuella värd. Namnet på den här katalogen överensstämmer vanligtvis med ditt domännamn.
Om ditt domännamn till exempel är "example.com", skulle du skapa en ny katalog med kommandot:
sudo mkdir /var/www/example.com
Detta kommando kräver att "example.com" ersätts med ditt domännamn. Således kommer katalogen att innehålla filer och tillgångar som är associerade med dina virtuella värdar, inklusive HTML-filer, bilder, skript och andra resurser.
Att skapa individuella kataloger för varje virtuell värd underlättar en distinkt separation av problem, vilket är viktigt i samband med säkerhet och felsökning.
Den nya katalogen kan kräva lämpligt ägande och behörighet för att tillåta Apache (HTTPD) åtkomst. De efterföljande kommandona ställer in rätt äganderätt och behörigheter:
sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com
Med den nya katalogen förberedd kan vi konfigurera din virtuella värd.
Skapa en index.html-fil
En textredigerare genererar en index.html-fil för din virtuella värd. För vår handledning använder vi nanotextredigeraren, men du kan välja vilken textredigerare du föredrar.
Utför följande kommando för att skapa filen index.html:
sudo nano /var/www/example.com/index.html
Börja skapa innehållet för din index.html-fil i textredigeraren. Den här filen fungerar vanligtvis som den första kontaktpunkten för en användare som besöker din webbplats.
Här är ett enkelt exempel:
<html>
<head>
<title>Example Domain</title>
</head>
<body>
<h1>Welcome to Example Domain</h1>
<p>This is a sample page for the domain example.com.</p>
</body>
</html>
När du har slutfört innehållet i din index.html-fil, spara filen och avsluta textredigeraren. När det gäller nano, görs detta genom att trycka på Ctrl + X, Y och Enter.
Konfigurera virtuella värdkataloger
Att säkerställa korrekt kataloginställningar för Apache-webbservern garanterar en sömlös och organiserad konfiguration. Specifikt används katalogerna "sites-available" och "sites-enabled". Denna konfiguration speglar den som användes i Nginx och främjar organiserade och tillgängliga konfigurationer.
För att skapa dessa kataloger, använd följande kommando:
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
Instruera sedan Apache att leta efter virtuella värdfiler i katalogen "/etc/httpd/sites-available":
sudo nano /etc/httpd/conf/httpd.conf
I den öppnade konfigurationsfilen lägger du till raden "IncludeOptional sites-enabled/*.conf" i slutet. Den här raden instruerar Apache att inkludera alla virtuella värdkonfigurationsfiler i katalogen "sites-enabled".
IncludeOptional sites-enabled/*.conf
Alternativt kanske du vill kommentera "Inkludera Optional conf.d/*.conf", och inaktivera standardmappen där Apache söker efter virtuella värdfiler. Detta hjälper till att förhindra eventuell förvirring.
Exempel:
#IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf
För att spara filen och avsluta, använd tangentbordskombinationen CTRL + O, följt av CTRL + X.
Skapa den virtuella värdkonfigurationsfilen
Därefter kommer vi, med din textredigerare, att skapa en virtuell värdkonfigurationsfil på /etc/httpd/sites-available/example.com.conf.
sudo nano /etc/httpd/sites-available/example.com.conf
Fyll i platshållarinformationen i följande konfigurationsblock med ditt servernamn, serveralias och dokumentrot innan du kopierar det till den virtuella värdkonfigurationsfilen som finns på /etc/httpd/sites-available/example.com.conf.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName example_domain
ServerAlias www.example_domain
DocumentRoot /var/www/example.com/
</VirtualHost>
Justera serverdirektiven för att passa dina specifika krav.
Steg 5: Ändra åtkomstbehörigheter
För att ge publik åtkomst till din server, ändra åtkomstbehörigheterna för Apache-tjänsten i /etc/httpd/conf/httpd.conf-konfigurationsfilen. Standardkonfigurationen nekar åtkomst. Om du försummar det här steget kan du stöta på HTTP 403-fel när folk försöker komma åt din webbplats.
sudo nano /etc/httpd/conf/httpd.conf
Lägg till följande block i din fil och se till att du justerar rotkatalogen så att den matchar din egen.
<Directory /var/www/example.com/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
För att spara dessa ändringar, använd tangentbordskombinationen CTRL+O och avsluta textredigeraren med CTRL+X.
Steg 6: Aktivera den virtuella värden för Apache på CentOS Stream
För att ställa in den virtuella värden måste du aktivera den som det sista steget. Skapa en symbolisk länk från katalogen för webbplatser som är tillgängliga till katalogen med webbplatser med hjälp av kommandot nedan:
sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/
Du måste starta om Apache-tjänsten för att slutföra aktiveringsprocessen.
sudo systemctl restart httpd
Efter att ha startat om Apache-tjänsten, öppna din webbläsare och navigera till "HTTP://example_domain." Om du inte har registrerat en domän kan du komma åt din webbplats med IP-adressen (lokal eller fjärransluten). Om du ställer in allt korrekt kommer målsidan du skapade i filen index.html att hälsa dig välkommen.
Ytterligare kommandon och tips
Säkra kataloger och filer
Ställa in säkra behörigheter
Att använda säkra behörigheter för filer och kataloger i Apache på CentOS är avgörande. Ofta ges överdrivna behörigheter, som full offentlig tillgång. För att förhindra säkerhetsrisker rekommenderas det att du begränsar behörigheterna. För kataloger, använd chmod 755
och för filer, chmod 644
. Nedan finns kommandon för att ställa in dessa behörigheter. Kom ihåg att vissa applikationer kan kräva andra behörigheter, till exempel 777
för phpBB.
- För kataloger:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
- För filer:
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;
Dessa kommandon kommer att ersätta /var/www/example.com/
med lämplig katalogsökväg. Detta steg garanterar inte fullständig säkerhet men minskar riskerna avsevärt genom att förhindra allmänhetens tillgång till viktiga filer.
Säkra Apache med Let's Encrypt SSL
Installera Let's Encrypt SSL-certifikat
Att säkra din Apache-server med ett SSL-certifikat är nödvändigt för säkra klient-server-anslutningar. Let's Encrypt tillhandahåller ett gratis, automatiserat SSL-certifikat. Se först till att CRB-förvaret är aktiverat och att EPEL-förvaret är installerat. Installationsprocessen varierar något mellan CentOS Stream 9 och 8.
För CentOS Stream 9:
- Aktivera CRB:
sudo dnf config-manager --set-enabled crb
- Installera EPEL-förvaret:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Installera sedan mod_ssl
och Snap:
sudo dnf install mod_ssl
Aktivera EPEL på din CentOS Stream-distribution och installera sedan Snap.
sudo dnf install snapd -y
Efter installationen, se till att aktivera Snap och vid systemstart omedelbart.
sudo systemctl enable snapd --now
Nästa steg är att installera snap-kärnan, som tar hand om alla beroenden som behövs för att snap-paket ska köras.
sudo snap install core
Skapa en symbolisk länk för snapd-katalogen.
sudo ln -s /var/lib/snapd/snap /snap
Använd följande terminalkommando för att installera Certbot snap-paketet.
sudo snap install --classic certbot
Slutligen, skapa en annan symbolisk länk för Certbot snap-paketet.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Kör Certbot för Apache
Kör följande kommando i din terminal för att generera ditt SSL-certifikat med Certbot.
sudo certbot --dry-run --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
För de nya på Let's Encrypt kan du söka mer information om förkortningen i kommandot.
- Alternativet "–torrkörning" låter dig köra en testkörning av certifikatgenereringsprocessen utan att ändra systemet. Det här alternativet är värdefullt för testning.
- Alternativet "–apache" är att generera ett certifikat för en Apache-webbserver.
- Alternativet "–agree-tos" låter dig acceptera användarvillkoren från Let's Encrypt, certifikatutfärdaren som tillhandahåller SSL-certifikatet.
- Alternativet "–redirect" omdirigerar automatiskt all HTTP-trafik till HTTPS.
- Alternativet "–hsts" aktiverar HTTP Strict Transport Security (HSTS). Denna säkerhetsfunktion hjälper till att skydda mot protokollnedgraderingsattacker och kapning av kakor genom att säga åt webbläsare att endast komma åt din webbplats via en säker HTTPS-anslutning.
- Alternativet “–staple-ocsp” möjliggör häftning av Online Certificate Status Protocol (OCSP), som verifierar ett SSL-certifikats återkallelsestatus utan att kontakta certifikatutfärdaren.
- Använd alternativet "–email" för att ange den e-postadress du vill koppla till certifikatet.
- Alternativet "-d" anger det domännamn som du ska generera certifikatet för. I det här exemplet är domännamnet "www.example.com."
Alternativt kan du använda följande kommando och följa steg-för-steg-anvisningarna för en mer tillgänglig upplevelse.
sudo certbot certonly --apache
Genom att utföra kommandot med de nämnda parametrarna uppmanar du certbot att skapa ett SSL-certifikat för din domän "www.example.com" samtidigt som du inkluderar de nödvändiga säkerhetsfunktionerna som en forcerad HTTPS 301-omdirigering, Strict-Transport-Security-huvudet och OCSP-häftning. Det är viktigt att notera att du bör ersätta e-postadressen i kommandot med din egen, och även se till att ersätta domännamnet "www.example.com" med ditt önskade domännamn.
Konfigurera SSL på Apache
Efter att ha erhållit SSL-certifikatet, konfigurera din Apache-server för att använda den. Redigera ssl.conf
fil och lägg till följande rader och ersätt "example.com" med din domän:
sudo nano /etc/httpd/conf.d/ssl.conf
Lägg till följande rader i konfigurationsfilen: ersätt "example.com" med ditt domännamn.
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
Spara ändringarna och starta om Apache så att konfigurationen träder i kraft.
sudo systemctl restart httpd
Denna inställning säkerställer krypterad, säker kommunikation mellan webbläsare och din webbplats.
Automatisera certifikatförnyelse
För att hålla SSL-certifikatet uppdaterat, ställ in ett cron-jobb för automatisk förnyelse. Testa förnyelseprocessen med en torrkörning:
sudo certbot renew --dry-run
Kontrollera timers med hjälp av systemctl list-timers kommandot och bekräfta att "snap.certbot.renew.timer" är närvarande.
systemctl list-timers snap.certbot.renew.timer
Använd kommandot "systemctl list-timers -all" för att se aktiva och inaktiva timers på ditt system. Det här kommandot överblickar alla timers, inklusive "snap.certbot.renew.timer." "snap.certbot.renew.timer" säkerställer automatisk kontroll och förnyelse av ditt certifikat innan det löper ut. På så sätt eliminerar du bekymmer angående förnyelseprocessen.
systemctl list-timers --all
Apache HTTPD-hantering
Med Apache framgångsrikt konfigurerad på din server, här är några viktiga punkter att komma ihåg för effektiv hantering.
Apache-serverloggar
Apache-serverloggar lagras i katalogen på /var/log/httpd/. Standardfilnamnen för åtkomst- och felloggarna är access.log respektive error.log. Det är dock möjligt att ändra dessa namn i den virtuella värdkonfigurationsfilen.
Här är ett exempel på hur du ändrar Apache-serverloggarna i den virtuella värdkonfigurationsfilen.
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /var/www/example.com
# Change access log to custom-access.log
CustomLog /var/log/httpd/custom-access.log combined
# Change error log to custom-error.log
ErrorLog /var/log/httpd/custom-error.log
</VirtualHost>
Det här exemplet ändrar åtkomst- och felloggarna till custom-access.log respektive custom-error.log. Du kan ändra namnen på loggfilerna till vad du föredrar och uppdatera motsvarande sökväg i den virtuella värdkonfigurationsfilen.
Apache-kommandon
Här är några av de ofta använda kommandona när du hanterar Apache:
Stoppa Apache webbserver:
sudo systemctl stop httpd
Starta Apache webbserver:
sudo systemctl start httpd
Starta om Apache webbserver:
sudo systemctl restart httpd
Ladda om Apache webbserver:
sudo systemctl reload httpd
Inaktivera Apache vid serverstart:
sudo systemctl disable httpd
Aktivera Apache vid serverstart:
sudo systemctl enable httpd
Hur man uppdaterar Apache HTTPD
För att hålla Apache uppdaterad, kör kommandot du vanligtvis använder för att kontrollera om ditt system är uppdaterat.
sudo dnf update --refresh
Det är viktigt att säkerhetskopiera eller skapa bilder av ditt system innan du utför några uppgraderingar, eftersom buggar ibland kan uppstå. Följande kommando kommer att uppdatera alla systempaket, inklusive Apache, och uppmanar dig att uppgradera.
Hur man tar bort Apache HTTPD
För att avinstallera Apache från ditt system, använd följande kommando.
sudo systemctl disable httpd --now
Använd nu följande kommando för att ta bort Apache helt och hållet.
sudo dnf remove httpd
Överblivna filer kan finnas kvar i /etc/httpd-huvudkatalogen, så låt oss radera den mappen.
sudo rm -R /etc/httpd/
Slutsats
Med Apache HTTP Server och Let's Encrypt framgångsrikt konfigurerade på ditt CentOS Stream-system blir din webbplats både robust och säker. Att regelbundet uppdatera Apache och förnya ditt Let's Encrypt SSL-certifikat hjälper till att upprätthålla optimal säkerhet och prestanda. Njut av tillförlitligheten och säkerheten som Apache HTTP Server och Let's Encrypt ger din webbhotellmiljö.