Počáteční konfigurace potřebná od instalace Apache v systému CentOS až po spuštění.
Datum vydání:8. prosince 2020.
INFOMARTION > Počáteční konfigurace potřebná od instalace Apache v systému CentOS až po spuštění.
Přehled.
Počáteční konfigurační kroky nutné k instalaci a spuštění Apache v systému CentOS. Informace vycházejí z předpokladu, že je používán systém CentOS7.
Verze jsou následující.
Verze systému CentOS | 7.6 (1810) |
---|---|
Verze Apache | 2.4.6 |
Obsah
- nainstalovat
- základní nastavení
- 2-1. Vytvoření výstupní složky souboru protokolu
- 2-2. Nastavení domény
- 2-3. Aktivace modulů SSL a konfiguračních souborů
- 2-4. Změna výstupní cesty protokolu
- 2-5. Vytváření certifikátů SSL
- 2-6. permanentní SSL (Secure Socket Layer)
- 2-7. Potvrzení aktivace (přístup přes https).
- 2-8. Nastavení automatického spuštění
- shrnutí
1. nainstalovat
Tato část popisuje konfiguraci Apache od instalace až po spuštění.
1-1. Instalace aplikace Apache
Instalaci Apache proveďte pomocí příkazu yum. Práci proveďte jako uživatel root.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install httpd
1-2. Kontrola spuštění (přístup přes http)
Krátce zkontrolujte, zda je přístupný. Instalace Apache (httpd) pomocí příkazu yum povolí příkaz apachectl. Použijte ji ke spuštění aplikace Apache.
[root@hostname ~]# apachectl start
[root@hostname ~]# apachectl status
* httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sun 2020-12-06 17:08:12 JST; 1s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 1303 (httpd)
Status: "Processing requests..."
CGroup: /system.slice/httpd.service
|-1303 /usr/sbin/httpd -DFOREGROUND
|-1304 /usr/sbin/httpd -DFOREGROUND
|-1305 /usr/sbin/httpd -DFOREGROUND
|-1306 /usr/sbin/httpd -DFOREGROUND
|-1307 /usr/sbin/httpd -DFOREGROUND
`-1308 /usr/sbin/httpd -DFOREGROUND
Dec 06 17:08:11 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Dec 06 17:08:12 localhost.localdomain httpd[1303]: AH00558: httpd: Could not reliably determ...ge
Dec 06 17:08:12 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
Pokud se po provedení příkazu "apachectl status" vrátí hodnota "Active: active (running)", systém byl úspěšně spuštěn.
Poté přistupte ke službě Apache z prohlížeče. Nastavte oprávnění http, protože firewall (nebo iptables pro CentOS6 a starší) ve výchozím nastavení povoluje přístup k ssh pouze v CentOS7. Rád bych také zavedl kolektivní nastavení oprávnění pro https. Přidejte také možnost "permanent", aby byla konfigurace trvalá.
[root@hostname ~]# firewall-cmd --permanent --add-service=http
[root@hostname ~]# firewall-cmd --permanent --add-service=https
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Je v pořádku, pokud byly do položky 'services' přidány položky 'http' a 'https'. Přístup přes prohlížeč. V mém případě je IP adresa serveru 192.168.50.10, takže mám přístup "http://192.168.50.10". Pokud se zobrazí následující stránka, je to v pořádku
Po úspěšném spuštění systém zastavte.
[root@hostname ~]# apachectl stop
2. základní nastavení
2-1. Vytvoření výstupní složky souboru protokolu
Chcete-li spravovat protokolování pod /var/log/, vytvořte adresář httpd pod /var/log/ jako složku pro protokoly Apache.
Oprávnění (permissions) by mělo být 755. Toto nastavení umožňuje Apache zapisovat, ale ostatní uživatelé mohou pouze číst. Pokud mohou zapisovat i jiní uživatelé, lze s protokoly manipulovat.
'mkdir /var/log/httpd' se nemusí provést, pokud již byl vytvořen adresář se stejným názvem.
[root@hostname ~]# mkdir /var/log/httpd
[root@hostname ~]# chmod 755 /var/log/httpd
Tento postup slouží ke změně nastavení výstupního cíle protokolu Apache.
Tento postup slouží pouze k vytvoření složky pro ukládání protokolů.
2-2. Nastavení domény
Změňte nastavení domény uvedené v souboru httpd.conf. Konfigurace Apache je v podstatě centralizována v souboru httpd.conf, takže pokud chcete konfiguraci změnit, upravte soubor httpd.conf. Domény není třeba nastavovat, pokud je prostředí místní (není veřejně přístupné na internetu).
[root@hostname ~]# vi /etc/httpd/conf/httpd.conf
# Odkomentujte a povolte nastavení ServerName. Název domény se nastavuje podle prostředí.
#ServerName www.example.com:80
ServerName domainname:80
2-3. Aktivace modulů SSL a konfiguračních souborů
Povolte protokol SSL, abyste umožnili přístup přes protokol https. Nastavení SSL souvisí se SEO a http není dobrý nápad především z bezpečnostních důvodů, takže pokud nemusíte používat http, používejte https.
Nainstalujte modul ssl pomocí nástroje yum.
[root@hostname ~]# yum -y install mod_ssl
Instalace pomocí yum automaticky povolí modul ssl, takže jej stačí nainstalovat. Automaticky se také vytvoří konfigurační soubor. (Soubor /etc/httpd/conf.d/ssl.conf se vytvoří automaticky.)
2-4. Změna výstupní cesty protokolu
Změňte výstupní cíl protokolu Apache na výstupní složku souboru protokolu, kterou jste právě vytvořili. Změňte pouze konfigurační soubor ssl, protože v dalším kroku bude nastaven tak, aby byl přístupný pouze přes ssl (https).
[root@hostname ~]# vi /etc/httpd/conf.d/ssl.conf
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
~zkrácení~
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log
~zkrácení~
CustomLog /var/log/httpd/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
Výše uvedená úprava změní cíl výstupu protokolu na "/var/log/httpd".
'%t, %h' atd., jedná se o nastavení formátování protokolu. Níže je uveden seznam formátů, které mohou být často používány pro referenci.
【参考】
・%T:Doba zpracování požadavku (sekundy)
・%h:Název hostitele nebo IP adresa klienta. Pokus o překlad názvů hostitelů pouze v případě, že je možnost HostnameLookups nastavena na hodnotu Zapnuto.
・%r:První řádek žádosti
・%b:Bajty odpovědi (kromě hlaviček HTTP). CLF, tj. pokud není odeslán žádný z bajtů.
・%D:Doba zpracování požadavku (mikrosekundy)
・%>s:Stav HTTP
2-5. Vytváření certifikátů SSL
Postup vytváření certifikátů. Vlastní certifikace je pro soukromé provozy v pořádku. U veřejně dostupných serverů je třeba od vlastní certifikace odrazovat.
Mezi běžnými certifikáty a autocertifikáty není žádný rozdíl v zabezpečení. To může být rozdíl mezi certifikátem, který může třetí strana posoudit jako spolehlivý, a certifikátem, který spolehlivý není. (Při vlastní certifikaci se pruh URL změní na červený.) Pro veřejně dostupné servery (servery, které vidí třetí strany) vystavte běžný certifikát.
Výchozí nastavení certifikátu pro Apache je "/etc/pki/tls/certs/localhost.crt" a "/etc/pki/tls/private/localhost.key".
Nastavení najdete v souborech "SSLCertificateFile" a "SSLCertificateKeyFile" v souboru "/etc/httpd/conf.d/ssl.conf".
【Pro vlastní certifikaci】
Chcete-li vytvořit vlastní certifikát, spusťte následující příkaz. Spusťte jako uživatel root.
Spuštění příkazu 'openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt' vás několikrát vyzve k odpovědi, vše s Enter, žádný problém. Jedná se o informace o tom, kdo certifikát vydává (např. ve které zemi žije a jaká je jeho e-mailová adresa). Pokud vystavujete běžný certifikát, zadejte správné informace a nastavte jej.
[root@hostname ~]# openssl genrsa > /etc/pki/tls/private/localhost.key
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.csr
[root@hostname ~]# openssl x509 -req -signkey /etc/pki/tls/private/localhost.key < /etc/pki/tls/certs/localhost.csr > /etc/pki/tls/certs/localhost.crt
【Pro běžné certifikáty】
Chcete-li vytvořit běžný certifikát, spusťte následující příkaz. Spusťte jako uživatel root.
[root@hostname ~]# openssl genrsa -out /etc/pki/tls/private/localhost.key 2048
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.csr
U běžných certifikátů to k dokončení procesu nestačí. Práce zahrnuje předání vytvořeného souboru 'server.csr' certifikační autoritě k vydání certifikátu serveru a instalaci vydaného certifikátu serveru.
2-6. permanentní SSL (Secure Socket Layer)
Přístup přes http není dobře zabezpečen, proto přidejte nastavení pro přesměrování na https v případě přístupu přes http.
Je možné zakázat přístup přes http, ale z hlediska použitelnosti se doporučuje nastavit přesměrování. Následující úkoly proveďte jako uživatel root.
[root@hostname ~]# vi /etc/httpd/conf/httpd.conf
Na konec přidejte následující text.
<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
Toto nastavení je možné změnit tak, aby přístupy přicházející přes http byly zpracovávány přes https.
Je uvedeno, že toto nastavení nefunguje, pokud přicházíte přes https. (RewriteCond %{HTTPS} off)
Nezapomeňte zmínit, že bez tohoto nastavení budou přesměrovány i přístupy https, což povede k nekonečné smyčce.
2-7. Potvrzení aktivace (přístup přes https).
Po dokončení různých nastavení zkontrolujte, zda lze k webu přistupovat prostřednictvím protokolu https. Nejdříve se rozjeďte.
[root@hostname ~]# apachectl start
Přístup přes prohlížeč. Stejně jako u přístupu http, ale v mém případě je IP adresa serveru 192.168.50.10, takže přistupuji na "http://192.168.50.10".
Adresa URL se změní z "http://192.168.50.10" na "https://192.168.50.10", protože je zahrnuto nastavení přesměrování http.
Nyní, když byl úspěšně spuštěn, zastavte Apache.
[root@hostname ~]# apachectl stop
2-8. Nastavení automatického spuštění
A konečně, ačkoli to není povinné, je obtížné spouštět Apache při každém restartu serveru, takže je zavedena konfigurace, aby se Apache spouštěl automaticky při startu serveru. Registruje se také do příkazu systemctl. Upozorňujeme, že tento postup je určen pro systém CentOS7, takže pokud používáte jiný systém než CentOS7, budete muset použít příkaz Service.
Vytvořte soubor 'apache.service' a popište požadovaná nastavení.
[root@hostname ~]# touch /etc/systemd/system/apache.service
[root@hostname ~]# vi /etc/systemd/system/apache.service
K dispozici jsou následující informace.
[Unit]
#Popis.
Description=Apache
#Kontrola před a po provedení.
#Before=xxx.service
#After=xxx.service
[Service]
#Označení uživatele a skupiny
User=root
Group=root
#Po aktivaci nastavte stav na Aktivováno.
Type=oneshot
RemainAfterExit=yes
#Spuštění, zastavení a opětovné načtení.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart
[Install]
#Ekvivalentní nastavení úrovně Runlevel 3.
WantedBy=multi-user.target
Po dokončení popisu jej zaregistrujte příkazem systemctl.
[root@hostname ~]# systemctl enable apache
[root@hostname ~]# systemctl is-enabled apache
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep apache
apache.service enabled
[root@hostname ~]# systemctl daemon-reload
3. shrnutí
Popsali jsme počáteční konfiguraci vyžadovanou při instalaci Apache.
Apache v podstatě do jisté míry funguje s výchozím nastavením, ale pokud si jej skutečně přizpůsobíte, podívejte se na nastavení cíle výstupu protokolu a nastavení SSL, které byste měli při provozu systému změnit.
Děkujeme, že jste se dívali až do konce.