Apache HTTP Server (httpd) je jeden z nejpopulárnějších a nejrobustnějších dostupných webových serverů, známý pro svou flexibilitu, výkon a širokou škálu funkcí. Je široce používán pro hostování webových stránek a webových aplikací. Nastavení Apache na CentOS Stream 9 vám umožní využít jeho výkonné schopnosti pro vaše potřeby webhostingu. Zabezpečení vašeho webu pomocí bezplatného certifikátu SSL od Let's Encrypt navíc zajistí, že váš web bude šifrovaný a důvěryhodný.
Chcete-li nainstalovat Apache HTTP Server na CentOS Stream 9 a nastavit certifikát Let's Encrypt SSL, postupujte podle kroků uvedených v této příručce. To vám poskytne bezpečnou a efektivní konfiguraci webového serveru.
Zajištění plně aktualizovaného systému CentOS Stream před instalací Apache
Než přistoupíme k instalaci Apache na vašem počítači CentOS Stream, musíme ověřit, zda je náš systém plně aktuální. Jde o víc než jen o preventivní opatření. Aktualizace systému pomáhá předcházet problémům s kompatibilitou a výrazně zvyšuje jeho stabilitu, zabezpečení a výkon.
Chcete-li to uvést do pohybu, proveďte ve svém terminálu následující příkaz:
sudo dnf upgrade --refresh
Tento příkaz spustí aktualizační mechanismus, pořídí a nainstaluje nejnovější aktualizace softwaru a opravy zabezpečení vašeho systému. Před pokračováním v instalaci Apache je důležité umožnit úplné dokončení procesu aktualizace. Tím je zajištěno, že váš systém je ve svém prvotřídním stavu, optimálně nakonfigurován a připraven ke spuštění Apache, aniž by došlo k nějakým zádrhelům nebo problémům s kompatibilitou.
Nainstalujte Apache HTTPD pomocí příkazu DNF
Druhým krokem je instalace Apache nebo HTTPD do vašeho systému CentOS Stream. Toto je přímočarý proces, s laskavým svolením výkonného správce balíčků DNF. Správce balíčků DNF neboli Dandified Yum zjednodušuje instalaci, aktualizaci a správu softwarových balíčků.
Nastartujte instalaci Apache (HTTPD) spuštěním následujícího příkazu ve vašem terminálu:
sudo dnf install httpd
Tento příkaz zahájí instalační mechanismus a načte a nainstaluje všechny potřebné součásti, které umožní spuštění Apache (HTTPD) na vašem systému. Proces by měl skončit během několika minut. Poté budete mít Apache (HTTPD) plně nainstalován a připraven k použití.
Aktivace a konfigurace Apache HTTPD pro spuštění při spouštění systému
Po úspěšné instalaci Apache (HTTPD) na váš systém CentOS Stream je následující klíčovou akcí aktivovat službu a nakonfigurovat její automatické spouštění při spuštění systému. Apache (HTTPD) je vždy aktivní a připravený obsluhovat webové požadavky, když se váš systém zapne.
Pokud služba Apache (HTTPD) není aktivní nebo je nastavena tak, aby se spouštěla ve výchozím nastavení, pomocí těchto příkazů ve svém terminálu službu spusťte a zajistěte, aby běžela při spouštění systému:
sudo systemctl start httpd
sudo systemctl enable httpd
První příkaz, sudo systemctl start httpd, spustí službu Apache (HTTPD), zatímco druhý příkaz, sudo systemctl enable httpd, nastaví službu tak, aby se spouštěla automaticky při startu systému. Implementací těchto dvou příkazů zaručíte, že Apache (HTTPD) bude neustále přístupný a aktivní, připravený vyhovět webovým požadavkům pokaždé, když se váš systém zapne.
Alternativně můžete dva předchozí kroky zhustit do jediného příkazu:
sudo systemctl enable httpd --now
Možnost –now v příkazu sudo systemctl enable httpd –now současně spustí službu Apache (HTTPD) a nakonfiguruje ji tak, aby se spouštěla automaticky při spouštění systému. Tento jediný příkaz sjednocuje dva samostatné příkazy z předchozích kroků, díky čemuž je proces efektivnější a efektivnější.
Zkontrolujte stav služby Apache HTTPD
Nakonec bychom měli ověřit úspěšnou implementaci a fungování Apache (HTTPD) pomocí následujícího příkazu systemctl:
systemctl status httpd
Tento příkaz vám poskytuje informace o stavu služby Apache (HTTPD) v reálném čase, včetně případných chyb nebo zpráv, které se mohly objevit. Kontrolou stavu služby můžete potvrdit, že Apache (HTTPD) běží hladce.
Konfigurace pravidel FirewallD
Po instalaci Apache (HTTPD) na CentOS Stream si můžete všimnout, že brána firewall nezahrnuje předem nakonfigurovaná pravidla pro standardní porty 80 a 443. Tato pravidla brány firewall musíte nakonfigurovat, než budete pokračovat, abyste zlepšili zabezpečení své webové aplikace.
Nastavte pravidla brány firewall pomocí nástroje firewall-cmd, výchozího nástroje pro správu brány firewall CentOS Stream. Pravidla, která musíte nakonfigurovat, se budou lišit v závislosti na portech, které hodláte použít. V následujících krocích však uvádíme všechny kritické možnosti.
Otevření portů 80 a 443
Spustíme první dva příkazy pro otevření portů 80 a 443. Tyto porty zpracovávají příchozí HTTP a HTTPS provoz.
Chcete-li otevřít port 80 nebo HTTP, spusťte následující příkaz:
sudo firewall-cmd --permanent --add-port=80/tcp
Dále otevřete port 443 nebo HTTPS s následujícím příkazem:
sudo firewall-cmd --permanent --add-port=443/tcp
Ověřte změny brány firewall
Po zadání portů, které se mají otevřít, musíme dát firewallu pokyn k implementaci těchto změn. To provedete opětovným načtením pravidel brány firewall pomocí příkazu níže:
sudo firewall-cmd --reload
Pochopení důsledků
Je prvořadé dobře porozumět bezpečnostním důsledkům, které doprovázejí otevírání portů ve vašem systému. Selektivním otevíráním pouze nezbytných portů posilujete obranu své webové aplikace před neoprávněným přístupem a potenciálními bezpečnostními hrozbami. To zdůrazňuje, proč je důležité správně nakonfigurovat pravidla brány firewall pro vaši instalaci Apache (HTTPD) na CentOS Stream.
Ověření přístupu Apache HTTPD
Po pečlivé konfiguraci brány Firewalld se ujistěte, že máte přístup na vstupní stránku Apache (HTTPD) prostřednictvím webového prohlížeče. Spusťte svůj oblíbený webový prohlížeč a přejděte na http://localhost nebo http://your_server_ip.
Pro přístup přes IP vašeho serveru:
http://your_server_ip
Případně pro přístup přes localhost:
http://localhost
Když vše přesně nakonfigurujete, přivítá vás výchozí vstupní stránka Apache (HTTPD). Na této stránce se zobrazí zpráva potvrzující, že server funguje podle očekávání. Stránka se bude podobat:
Vytvořte a nakonfigurujte virtuálního hostitele
Tato část se ponoří do praktického aspektu vytvoření virtuálního hostitele pomocí Apache (HTTPD), flexibilního webového serveru známého svou schopností hostovat více domén na jednom serveru. Tento nástroj je analogický atributu „bloky serveru“ Nginx. V následujícím tutoriálu si ukážeme, jak formulovat virtuálního hostitele pro danou doménu, reprezentovanou jako „example-domain.com“. Tuto ukázkovou doménu přirozeně nahradíte svým konkrétním názvem domény.
Vytváření virtuálních hostitelů usnadňuje nezávislou správu konfigurací pro každou doménu. To poskytuje kontrolu nad různými aspekty prostředí vašeho webového serveru, včetně zabezpečení, výkonu a vlastních nastavení. To se může ukázat jako zvláště výhodné, pokud chcete hostovat více webových stránek na jednom serveru nebo udržovat samostatná nastavení pro různé části vašeho webu. S Apache (HTTPD) můžete bez námahy navrhnout virtuální hostitele, kteří tyto požadavky splňují.
Vytváření a konfigurace adresářů
Zahájení nastavení virtuálního hostitele zahrnuje vytvoření nového adresáře, který slouží jako kořenová složka pro vašeho virtuálního hostitele. Název tohoto adresáře se obvykle shoduje s názvem vaší domény.
Pokud je například název vaší domény „example.com“, vygenerovali byste nový adresář pomocí příkazu:
sudo mkdir /var/www/example.com
Tento příkaz vyžaduje nahrazení „example.com“ názvem vaší domény. Adresář tedy bude obsahovat soubory a aktiva spojená s vašimi virtuálními hostiteli, včetně souborů HTML, obrázků, skriptů a dalších zdrojů.
Nastavení jednotlivých adresářů pro každého virtuálního hostitele usnadňuje zřetelné oddělení problémů, což je důležité v kontextu zabezpečení a odstraňování problémů.
Nový adresář může vyžadovat příslušné vlastnictví a oprávnění, aby umožnil přístup Apache (HTTPD). Následující příkazy nastavují správné vlastnictví a oprávnění:
sudo chown -R apache:apache /var/www/example.com
sudo chmod -R 755 /var/www/example.com
S připraveným novým adresářem můžeme nastavit vašeho virtuálního hostitele.
Vytvoření souboru index.html
Textový editor vygeneruje soubor index.html pro vašeho virtuálního hostitele. V našem tutoriálu použijeme textový editor nano, i když si můžete vybrat libovolný textový editor, který preferujete.
Chcete-li vytvořit soubor index.html, spusťte následující příkaz:
sudo nano /var/www/example.com/index.html
V textovém editoru začněte vytvářet obsah souboru index.html. Tento soubor obvykle slouží jako první kontaktní bod pro uživatele, kteří navštíví váš web.
Zde je jednoduchý příklad:
<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>
Po dokončení obsahu souboru index.html soubor uložte a ukončete textový editor. V případě nano se to provede stisknutím Ctrl + X, Y a Enter.
Konfigurace virtuálních hostitelských adresářů
Zajištění správného nastavení adresáře pro webový server Apache zaručuje bezproblémovou a organizovanou konfiguraci. Konkrétně se používají adresáře „sites-available“ a „sites-enabled“. Tato konfigurace odráží konfiguraci přijatou v Nginx a podporuje organizované a přístupné konfigurace.
Chcete-li vytvořit tyto adresáře, použijte následující příkaz:
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
Následně dejte Apache pokyn, aby hledal soubory virtuálního hostitele v adresáři „/etc/httpd/sites-available“:
sudo nano /etc/httpd/conf/httpd.conf
V otevřeném konfiguračním souboru připojte na konec řádek „IncludeOptional sites-enabled/*.conf“. Tento řádek dává Apache pokyn, aby zahrnul všechny konfigurační soubory virtuálního hostitele do adresáře „sites-enabled“.
IncludeOptional sites-enabled/*.conf
Volitelně můžete chtít přidat komentář „IncludeOptional conf.d/*.conf“, čímž deaktivujete výchozí složku, ve které Apache hledá soubory virtuálního hostitele. To pomáhá předcházet případným nejasnostem.
Příklad:
#IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf
Chcete-li soubor uložit a ukončit, použijte kombinaci kláves CTRL + O a poté CTRL + X.
Vytvořte konfigurační soubor virtuálního hostitele
Dále pomocí vašeho textového editoru vytvoříme konfigurační soubor virtuálního hostitele na adrese /etc/httpd/sites-available/example.com.conf.
sudo nano /etc/httpd/sites-available/example.com.conf
Před zkopírováním do konfiguračního souboru virtuálního hostitele umístěného na adrese /etc/httpd/sites-available/example.com.conf vyplňte zástupné informace v následujícím konfiguračním bloku pomocí názvu ServerName, ServerAlias a Document Root.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName example_domain
ServerAlias www.example_domain
DocumentRoot /var/www/example.com/
</VirtualHost>
Upravte direktivy serveru tak, aby vyhovovaly vašim specifickým požadavkům.
Krok 5: Úprava přístupových oprávnění
Chcete-li udělit veřejný přístup k vašemu serveru, upravte přístupová oprávnění pro službu Apache v konfiguračním souboru /etc/httpd/conf/httpd.conf. Výchozí konfigurace zakazuje přístup. Pokud tento krok zanedbáte, můžete při pokusu o přístup na váš web narazit na chyby HTTP 403.
sudo nano /etc/httpd/conf/httpd.conf
Přidejte do svého souboru následující blok a ujistěte se, že upravíte kořenový adresář tak, aby odpovídal vašemu vlastnímu.
<Directory /var/www/example.com/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Chcete-li tyto změny uložit, použijte kombinaci kláves CTRL+O a ukončete textový editor pomocí CTRL+X.
Krok 6: Povolte virtuálního hostitele pro Apache na CentOS Stream
Chcete-li nastavit virtuální hostitele, musíte jej aktivovat jako poslední krok. Vytvořte symbolický odkaz z adresáře sites-available do adresáře sites-enabled pomocí příkazu uvedeného níže:
sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/
Chcete-li dokončit proces aktivace, musíte restartovat službu Apache.
sudo systemctl restart httpd
Po restartování služby Apache otevřete webový prohlížeč a přejděte na „HTTP://example_domain“. Pokud jste si nezaregistrovali doménu, můžete na svůj web přistupovat pomocí IP adresy (místní nebo vzdálené). Pokud vše nastavíte správně, přivítá vás vstupní stránka, kterou jste vytvořili v souboru index.html.
Další příkazy a tipy
Zabezpečené adresáře a soubory
Nastavení bezpečných oprávnění
Použití bezpečných oprávnění pro soubory a adresáře v Apache na CentOS je zásadní. Často jsou udělena nadměrná oprávnění, jako je úplný veřejný přístup. Chcete-li předejít bezpečnostním rizikům, doporučujeme omezit oprávnění. Pro adresáře použijte chmod 755
a pro soubory, chmod 644
. Níže jsou uvedeny příkazy pro nastavení těchto oprávnění. Pamatujte, že některé aplikace mohou vyžadovat jiná oprávnění, např 777
pro phpBB.
- Pro adresáře:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
- Pro soubory:
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;
Tyto příkazy nahradí /var/www/example.com/
s příslušnou cestou k adresáři. Tento krok nezaručuje úplné zabezpečení, ale výrazně snižuje rizika tím, že brání veřejnému přístupu k důležitým souborům.
Zabezpečte Apache pomocí Let's Encrypt SSL
Instalace certifikátu Let's Encrypt SSL
Zabezpečení serveru Apache certifikátem SSL je nezbytné pro bezpečné připojení klient-server. Let's Encrypt poskytuje bezplatný automatický certifikát SSL. Nejprve se ujistěte, že je povoleno úložiště CRB a zda je nainstalováno úložiště EPEL. Proces instalace se mezi CentOS Stream 9 a 8 mírně liší.
Pro CentOS Stream 9:
- Povolit CRB:
sudo dnf config-manager --set-enabled crb
- Nainstalujte úložiště EPEL:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
Dále nainstalujte mod_ssl
a Snap:
sudo dnf install mod_ssl
Aktivujte EPEL na vaší distribuci CentOS Stream a poté nainstalujte Snap.
sudo dnf install snapd -y
Po instalaci nezapomeňte okamžitě povolit Snap a spuštění systému.
sudo systemctl enable snapd --now
Dalším krokem je instalace snap core, které se postará o všechny závislosti potřebné pro běh snap balíčků.
sudo snap install core
Vytvořte symbolický odkaz na adresář snapd.
sudo ln -s /var/lib/snapd/snap /snap
K instalaci balíčku Certbot snap použijte následující příkaz terminálu.
sudo snap install --classic certbot
Nakonec vytvořte další symbolický odkaz na balíček Certbot snap.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Spusťte Certbot pro Apache
Spusťte ve svém terminálu následující příkaz a vygenerujte certifikát SSL pomocí Certbotu.
sudo certbot --dry-run --apache --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
Pro nové uživatele Let's Encrypt můžete vyhledat další informace o zkratce v příkazu.
- Možnost „–dry-run“ vám umožňuje provést zkušební běh procesu generování certifikátu beze změny systému. Tato možnost je cenná pro testování.
- Možnost „–apache“ slouží k vygenerování certifikátu pro webový server Apache.
- Možnost „–agree-tos“ vám umožňuje přijmout podmínky služby Let's Encrypt, certifikační autority, která poskytuje certifikát SSL.
- Možnost „–redirect“ automaticky přesměruje veškerý provoz HTTP na HTTPS.
- Možnost „–hsts“ povoluje HTTP Strict Transport Security (HSTS). Tato funkce zabezpečení pomáhá chránit před útoky na nižší verzi protokolu a únosy souborů cookie tím, že prohlížečům sděluje, aby k vašemu webu přistupovaly pouze přes zabezpečené připojení HTTPS.
- Možnost „–staple-ocsp“ umožňuje sešívání OCSP (Online Certificate Status Protocol), které ověřuje stav odvolání certifikátu SSL bez kontaktování certifikační autority.
- Pomocí možnosti „–email“ zadejte e-mailovou adresu, kterou chcete přidružit k certifikátu.
- Volba „-d“ specifikuje název domény, pro kterou certifikát vygenerujete. V tomto příkladu je název domény „www.example.com“.
Případně můžete použít následující příkaz a postupovat podle pokynů krok za krokem, abyste získali přístupnější prostředí.
sudo certbot certonly --apache
Provedením příkazu se zmíněnými parametry nasměrujete certbota k vytvoření certifikátu SSL pro vaši doménu „www.example.com“ a zároveň zahrnuje nezbytné bezpečnostní funkce, jako je vynucené přesměrování HTTPS 301, hlavička Strict-Transport-Security a OCSP sešívání. Je důležité si uvědomit, že byste měli nahradit e-mailovou adresu v příkazu svou vlastní a také se ujistěte, že jste nahradili název domény „www.example.com“ požadovaným názvem domény.
Konfigurace SSL na Apache
Po získání certifikátu SSL nakonfigurujte server Apache tak, aby jej používal. Upravit ssl.conf
soubor a přidejte následující řádky a nahraďte „example.com“ svou doménou:
sudo nano /etc/httpd/conf.d/ssl.conf
Do konfiguračního souboru přidejte následující řádky: nahraďte „example.com“ názvem vaší domény.
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
Uložte změny a restartujte Apache, aby se konfigurace projevila.
sudo systemctl restart httpd
Toto nastavení zajišťuje šifrovanou a bezpečnou komunikaci mezi prohlížeči a vaším webem.
Automatizace obnovy certifikátu
Chcete-li udržovat certifikát SSL aktuální, nastavte úlohu cron pro automatické obnovení. Vyzkoušejte proces obnovy nasucho:
sudo certbot renew --dry-run
Zkontrolujte časovače pomocí příkazu systemctl list-timer a potvrďte, že je přítomen „snap.certbot.renew.timer“.
systemctl list-timers snap.certbot.renew.timer
Chcete-li zobrazit aktivní a neaktivní časovače ve vašem systému, použijte příkaz „systemctl list-times –all“. Tento příkaz zobrazí přehled všech časovačů, včetně „snap.certbot.renew.timer“. „snap.certbot.renew.timer“ zajišťuje automatickou kontrolu a obnovu vašeho certifikátu před vypršením platnosti. Eliminujete tak obavy týkající se procesu obnovy.
systemctl list-timers --all
Správa HTTPD Apache
Po úspěšném nastavení Apache na vašem serveru je zde několik základních bodů, které je třeba pamatovat pro efektivní správu.
Protokoly serveru Apache
Protokoly serveru Apache jsou uloženy v adresáři /var/log/httpd/. Výchozí názvy souborů pro protokoly přístupu a chyb jsou access.log a error.log. Změna těchto názvů v konfiguračním souboru virtuálního hostitele je však možná.
Zde je příklad změny protokolů serveru Apache v konfiguračním souboru virtuálního hostitele.
<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>
Tento příklad změní protokoly přístupu a chyb na custom-access.log a custom-error.log. Názvy souborů protokolu můžete změnit na libovolná a aktualizovat odpovídající cestu v konfiguračním souboru virtuálního hostitele.
Příkazy Apache
Zde jsou některé z často používaných příkazů při správě Apache:
Zastavit webový server Apache:
sudo systemctl stop httpd
Spusťte webový server Apache:
sudo systemctl start httpd
Restartujte webový server Apache:
sudo systemctl restart httpd
Znovu načíst webový server Apache:
sudo systemctl reload httpd
Zakázat Apache při spouštění serveru:
sudo systemctl disable httpd
Povolit Apache při spouštění serveru:
sudo systemctl enable httpd
Jak aktualizovat Apache HTTPD
Chcete-li udržovat Apache aktualizovaný, spusťte příkaz, který obvykle používáte ke kontrole, zda je váš systém aktuální.
sudo dnf update --refresh
Před provedením jakékoli aktualizace je důležité vytvořit zálohy nebo bitové kopie systému, protože se někdy mohou vyskytnout chyby. Následující příkaz obnoví všechny systémové balíčky, včetně Apache, a vyzve vás k upgradu.
Jak odstranit Apache HTTPD
Chcete-li odinstalovat Apache ze systému, použijte následující příkaz.
sudo systemctl disable httpd --now
Nyní použijte následující příkaz k úplnému odstranění Apache.
sudo dnf remove httpd
Zbylé soubory mohou zůstat v hlavním adresáři /etc/httpd, takže tuto složku vymažte.
sudo rm -R /etc/httpd/
Závěr
Díky úspěšnému nastavení Apache HTTP Server a Let's Encrypt ve vašem systému CentOS Stream bude váš web robustní a bezpečný. Pravidelná aktualizace Apache a obnovování certifikátu Let's Encrypt SSL pomůže udržet optimální zabezpečení a výkon. Užijte si spolehlivost a zabezpečení, které Apache HTTP Server a Let's Encrypt přinášejí do vašeho webhostingového prostředí.