Initial konfiguration krävs från installation av Apache på CentOS till uppstart.


Datum för offentliggörande:8 december 2020.



INFOMARTION > Initial konfiguration krävs från installation av Apache på CentOS till uppstart.

Översikt.

Detta är den första konfigurationen som krävs för att installera och starta Apache på CentOS. Informationen bygger på antagandet att CentOS7 används.

Versionerna är följande.

CentOS-version7.6 (1810)
Apache-version2.4.6

Innehållsförteckning

  1. installera
  2. grundinställning
  3. sammanfattning

1. installera

I det här avsnittet beskrivs konfigurationen av Apache från installation till uppstart.

1-1. Installera Apache

Installera Apache med hjälp av kommandot yum. Utför arbetet som rotanvändare.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install httpd

1-2. Uppstartskontroll (http-åtkomst)

Kontrollera kortfattat om den är tillgänglig. Genom att installera Apache (httpd) med kommandot yum aktiveras kommandot apachectl. Använd detta för att starta 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.

Om "Active: active (running)" returneras som ett resultat av kommandot "apachectl status" har systemet startats framgångsrikt.

Öppna sedan Apache från din webbläsare. Ställ in http-behörigheter eftersom brandväggen (eller iptables för CentOS6 och tidigare) endast tillåter ssh-åtkomst som standard på CentOS7. Jag skulle också vilja införa en kollektiv behörighetsinställning för https. Lägg också till alternativet "permanent" för att göra konfigurationen permanent.

[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:

Det är OK om "http" och "https" har lagts till i "services". Tillgänglig via webbläsaren. I mitt fall är serverns IP-adress 192.168.50.10, så jag går in på "http://192.168.50.10". Det är OK om följande sida visas

När systemet har startats framgångsrikt stoppar du det.

[root@hostname ~]# apachectl stop

2. grundinställning

2-1. Skapa en utdatamapp för loggfilen

Om du vill hantera loggning under /var/log/ skapar du en httpd-katalog under /var/log/ som en mapp för Apache-loggar.

Behörigheterna (permissions) ska vara 755. Med den här inställningen kan Apache skriva, men andra användare kan bara läsa. Om andra användare kan skriva kan loggarna manipuleras.

"mkdir /var/log/httpd" behöver inte utföras om en katalog med samma namn redan har skapats.

[root@hostname ~]# mkdir /var/log/httpd
[root@hostname ~]# chmod 755 /var/log/httpd

Använd den sistnämnda proceduren för att ändra inställningarna för destinationen för Apache-loggutdata.

Den här proceduren är endast en procedur för att skapa en mapp för de loggar som ska lagras.

2-2. Domäninställning

Ändra domäninställningarna i httpd.conf. Apache-konfigurationen är i princip centraliserad i httpd.conf, så om du vill ändra konfigurationen ändrar du httpd.conf. Domäner behöver inte inrättas om miljön är lokal (inte öppen för allmänheten på Internet).

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

# Ta bort kommentaren och aktivera inställningen ServerName. Domännamnet ställs in i enlighet med miljön.

httpd.conf【Före förändring】


#ServerName www.example.com:80

httpd.conf【efter ändringen】


ServerName domainname:80

2-3. Aktivering av SSL-moduler och konfigurationsfiler

Aktivera SSL för att tillåta åtkomst via https. SSL-inställningar är relaterade till SEO, och http är inte en bra idé av säkerhetsskäl i första hand, så om du inte måste använda http, använd https.

Installera ssl-modulen med yum.

[root@hostname ~]# yum -y install mod_ssl

Installation med yum aktiverar automatiskt ssl-modulen, så du behöver bara installera den. En konfigurationsfil skapas också automatiskt. (/etc/httpd/conf.d/ssl.conf skapas automatiskt.)

2-4. Ändra sökväg för loggutgång

Ändra destinationen för Apaches loggutdata till den mapp för loggfilutdata som du just har skapat. Ändra endast ssl-konfigurationsfilen, eftersom den kommer att konfigureras i ett senare steg för att endast nås via ssl (https).

[root@hostname ~]# vi /etc/httpd/conf.d/ssl.conf


ssl.conf【Före förändring】


ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

~förkortning~

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


ssl.conf【efter ändringen】


ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log

~förkortning~

CustomLog /var/log/httpd/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

Ovanstående ändring ändrar destinationen för loggutmatningen till "/var/log/httpd".


"%t, %h" etc., är detta inställningen för loggformatering. Nedan följer en förteckning över format som ofta kan användas som referens.

【参考】

・%T:Tidsåtgång för att behandla begäran (sekunder)

・%h:Klientens värdnamn eller IP-adress. Försöker bara lösa värdnamn om HostnameLookups är inställt på On.

・%r:Första raden i begäran

・%b:Bytes i svaret (exklusive HTTP-huvuden). CLF-format, dvs. - om ingen av bytesna skickas

・%D:Tidsåtgång för att behandla begäran (mikrosekunder)

・%>s:HTTP-status

2-5. Skapande av SSL-certifikat

Förfarande för att skapa certifikat. Självcertifiering är bra för privata verksamheter. För allmänt tillgängliga servrar bör självcertifiering avrådas.

Det finns ingen skillnad i säkerhet mellan vanliga certifikat och självcertifikat. Detta kan vara skillnaden mellan ett certifikat som kan bedömas som tillförlitligt av en tredje part och ett som inte kan det. (Vid självcertifiering blir URL-fältet rött.) För allmänt tillgängliga servrar (servrar som kan ses av tredje part) ska du utfärda ett normalt certifikat.

Standardinställningarna för certifikat för Apache är "/etc/pki/tls/certs/localhost.crt" och "/etc/pki/tls/private/localhost.key".

Inställningarna finns i "SSLCertificateFile" och "SSLCertificateKeyFile" i "/etc/httpd/conf.d/ssl.conf".


【För självcertifiering】

För att skapa ett självcertifikat utför du följande kommando. Kör som root-användare.

Om du kör "openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt" kommer du att få ett svar flera gånger, alla med Enter, inga problem. Detta är information om vem som utfärdar certifikatet (t.ex. vilket land de bor i och vilken e-postadress de har). Om du utfärdar ett vanligt certifikat anger du rätt information och konfigurerar det.

[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

【För normala certifikat】

Om du vill skapa ett normalt certifikat utför du följande kommando. Kör som root-användare.

[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

För vanliga certifikat är detta inte tillräckligt för att slutföra processen. Arbetet innebär att den skapade "server.csr" överlämnas till certifikatutfärdaren för att få ett servercertifikat utfärdat och att det utfärdade servercertifikatet installeras.

2-6. permanent SSL (Secure Socket Layer)

Det är ingen bra säkerhet om åtkomsten sker via http, så lägg till en inställning för att omdirigera till https om åtkomsten sker via http.

Det är möjligt att förbjuda åtkomst via http, men av användarvänlighetsskäl rekommenderas en omdirigering. Utför följande uppgifter som root-användare.

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

Lägg till följande i slutet.

httpd.conf


<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Det är möjligt att ändra den här inställningen så att åtkomster som kommer in via http hanteras via https.

Det anges att den här inställningen inte fungerar om du kommer via https. (RewriteCond %{HTTPS} off)

Glöm inte att nämna att utan den här inställningen kommer även https-åtkomster att omdirigeras, vilket leder till en oändlig slinga.

2-7. Bekräftelse av aktivering (https-åtkomst).

När du har gjort de olika inställningarna kan du kontrollera att webbplatsen kan nås via https. Börja med att starta upp först.

[root@hostname ~]# apachectl start

Tillgänglig via webbläsaren. Samma som för http-åtkomst, men i mitt fall är serverns IP-adress 192.168.50.10, så jag får tillgång till "http://192.168.50.10".

URL:n ändras från "http://192.168.50.10" till "https://192.168.50.10" eftersom inställningen för http-omdirigering ingår.

När Apache har startats stoppar du Apache.

[root@hostname ~]# apachectl stop

2-8. Inställning för automatisk start

Slutligen, även om det inte är obligatoriskt, är det svårt att starta Apache varje gång servern startas om, så en konfiguration läggs in så att Apache startas automatiskt när servern startas. Den registrerar också kommandot systemctl. Observera att den här proceduren gäller för CentOS7, så om du använder något annat än CentOS7 måste du använda kommandot Service för att hantera detta.

Skapa en "apache.service"-fil och beskriv de nödvändiga inställningarna.

[root@hostname ~]# touch /etc/systemd/system/apache.service
[root@hostname ~]# vi /etc/systemd/system/apache.service

Följande information tillhandahålls.

[Unit]
#Beskrivning.
Description=Apache
#Kontroll före och efter utförandet.
#Before=xxx.service
#After=xxx.service

[Service]
#Användar- och gruppbeteckning
User=root
Group=root
#När den är aktiverad, sätts statusen till Aktiverad.
Type=oneshot
RemainAfterExit=yes
#Starta, stoppa och ladda om.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart

[Install]
#Motsvarande inställningar för Runlevel 3.
WantedBy=multi-user.target

När du har beskrivit den färdigt registrerar du den med kommandot 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. sammanfattning

Vi har beskrivit den första konfigurationen som krävs när Apache installeras.

Apache fungerar i princip till viss del med standardinställningarna, men om du vill anpassa den, se inställningarna för destinationen för loggutdata och SSL-inställningarna, som du bör ändra när du använder systemet.

Tack för att du tittade på till slutet.




■INFORMATION

Klicka här för att komma till den översta sidan med information.


■PROFILE

Klicka här för en profil.


■Kontaktuppgifter.

För frågor om artikeln, vänligen kontakta oss här.