[LINUX] Fassen wir Apache zusammen

Werfen wir einen Blick auf Apache, um Linuc2 zu lernen. Um ehrlich zu sein, waren mir die detaillierten Einstellungen nicht wirklich wichtig, da sie durch Installation mit yum verwendet werden können. Wenn Sie httpd.conf bearbeiten und mit Apache Configtest usw. überprüfen, wird ein Fehler angezeigt, der mit Basic AH beginnt, sodass der Zugriff relativ einfach ist.

Installationsnummer

Kompilieren Sie aus der Quelle

Persönlich installiere ich immer nur mit yum, daher lesen Sie bitte den folgenden Artikel. Konfigurieren, kompilieren, installieren

Sie müssen auch APR und APR-util installieren, um aus dem Quellcode zu kompilieren.

Verwenden Sie das Paket

# yum install -y httpd

Einstellungsdatei

Richtlinie Erläuterung
/etc/httpd/conf/httpd.conf Hauptkonfigurationsdatei
/etc/httpd/conf.d Verzeichnis zum Speichern von Zusatzkonfigurationsdateien
ssl.conf SSL/TLS-Einstellungen
php.conf PHP-Moduleinstellungen
perl.conf Perl-Moduleinstellungen

htpd.conf#

Einstellwert für den Director-Namen

<Dateinateiname> ... </ Files> <Verzeichnisverzeichnisname> ... </ Verzeichnis> <LOcation URL>...</Location>

Richtlinie Erläuterung
ServerTokens Versionsinformation
ServerRoot Top-Verzeichnis
ServerName Hostname
ServerAdmin Mail Adresse
StartServers Nummer beim Start
MinSpareServers Mindestanzahl von Kellnerprozessen
MaxSpareServers Maximale Anzahl von Kellnerprozessen
ServerLimits Maximale Anzahl von untergeordneten Prozessen, die festgelegt werden können
Timeout Zeit, zu der die Verbindung vom Client unterbrochen wird
KeepAlive Am Leben bleiben aktiviert/Ungültig
KeepAliveRequests Maximale Anzahl von Anforderungen pro TCP-Verbindung
KeepAliveTimeout Timeout-Zeit für eine TCP-Verbindung
Listen Standby-Port
User Benutzer des untergeordneten Prozesses ausführen
Group Ausführungsgruppe des untergeordneten Prozesses
DocumentRoot Dokumentstammverzeichnis
UserDir Öffentliches Verzeichnis für allgemeine Benutzer
DirectoryIndex Dateiname, der als Verzeichnisindex zurückgegeben werden soll
ErrorLog Protokolldatei, die Fehler aufzeichnet
LogLevel Fehlerprotokoll Protokollstufe
LogFormat Zu protokollierende Elemente und Formate
CustomLog Zugriffsprotokoll
HostnameLookups Führen Sie eine umgekehrte DNS-Suche durch und rufen Sie den Hostnamen von der IP-Adresse der Zugriffsquelle ab
Alias Sie können andere Orte als den Dokumentstammbaum sehen.
ScliptAlias CGI-Skriptverzeichnis
ErrorDocument Geben Sie an, was zu tun ist, wenn ein Fehler auftritt

Externe Konfigurationsdatei

Verwenden Sie das Verzeichnis ** AccessFileName **, um eine externe Datei (.htaccess) zum Überschreiben der Einstellungen in httpd.conf zu verwenden.

httpd.conf


AccessFileName .htaccess

Geben Sie im Verzeichnis ** AllowOverride ** an, um die Verwendung externer Konfigurationsdateien zuzulassen.

Das folgende Beispiel aktiviert die Authentifizierung und Zugriffssteuerung in .htaccess.

httpd.conf


AllowOverride AuthConfig Limit
Unterbefehl Erläuterung
AuthConfig Authentifizierung
Indexes DirectoryIndex
Fileinfo Dateitypsteuerung
Limit Order,Allow,Deny
Options Options
None .Deaktivieren Sie Änderungen in htaccess
All .Aktivieren Sie alle änderbaren Einstellungen in htaccess

apachectl#

Unterbefehl Erläuterung
start Anlaufen
stop Halt
restart Starten Sie neu
graceful Starten Sie, wenn gestoppt, warten Sie auf einen Neustart, wenn die Anforderung neu gestartet wird
reload Lesen Sie die Einstellungsdatei
configtest Überprüfen Sie die Syntax der Konfigurationsdatei

Modul#

Modulliste

Geben Sie zum Laden des Moduls Folgendes an:

httpd.conf


LoadModule perl_module modules/mod_perl.so

Verwenden Sie nach der Installation von Apache ** apxs **, um das Modul einzuschließen. Fügen Sie es anschließend wie in ↑ im LoadModule-Verzeichnis hinzu. Installieren Sie das httpd-devel-Paket, um apxs zu installieren.

# yum install httpd-devel
# apxs -i -c mod_foobar.c

Eingebaute Module sind ** httpd -l ** ** httpd -M **, um eine Liste der integrierten Module und DSO-Module anzuzeigen und die Syntax der Konfigurationsdatei zu überprüfen Benutzen.

# httpd -l
# httpd -M

Skriptsprache

Werfen wir einen Blick auf PHP, das häufig als WEB-Anwendung verwendet wird.

# yum install -y php

Die Datei / etc / httpd / conf.d / php.conf wird hinzugefügt.

Erstellen Sie eine Datei wie die folgende und starten Sie Apache neu, um sie anzuzeigen.

/var/www/html/phpinfo.php


<?php
  phpinfo();
?>

Authentifizierung des Clientzugriffs

BASIC-Zertifizierung

Fügen Sie zur Verwendung der BASIC-Authentifizierung Benutzerauthentifizierungseinstellungen zu httpd.conf hinzu und bereiten Sie eine dedizierte Kennwortdatei vor.

Richtlinie Erläuterung
AuthType Basic
AuthName Nachricht, die zum Zeitpunkt der Authentifizierung im Dialogfeld ausgegeben werden soll
AuthUserfile Name der Passwortdatei
AuthGroupfile Gruppieren Sie den zu authentifizierenden Dateinamen
require Zugängliche Benutzer,valid-userWenn angegeben, wird Benutzern Zugriff gewährt, die einen Eintrag in der Kennwortdatei haben.

httpd.conf


<Directory "/var/www/html/private-area">
AuthType Basic
AuthName "Please enter your ID and password"
AuthUserfile /etc/httpd/conf/.htpasswd
require valid-user
</Directory>

Verwenden Sie ** htpasswd **, um den Benutzer und das Kennwort festzulegen, die für die Authentifizierung verwendet werden.

# htpasswd -c /etc/httpd/conf/htpasswd linuc1
New password: 
Re-type new password: 
Adding password for user linuc

# cat /etc/httpd/conf/.htpasswd
linuc:$apr1$szHx1lmc$PVMPwHwo/7T0bnlbRhAFP0

Geben Sie die Gruppenkennwortdatei in AuthGroupfile an, um die BASIC-Authentifizierung gruppenweise zu konfigurieren.

Das Format der Passwortdatei ist wie folgt. Gruppenname: Benutzername 1 Benutzername 2 ...

Für jeden angegebenen Benutzer ist ein Kennwort mit htpasswd festgelegt.

Geben Sie bei Bedarf den Gruppennamen im folgenden Format an. Gruppengruppenname benötigen

Digest-Zertifizierung

Richtlinie Erläuterung
AuthType Digest
AuthName Authentifizierungsbereich
AuthUserfile Name der Passwortdatei
AuthDigestGroupfile Gruppieren Sie den zu authentifizierenden Dateinamen
require Zugängliche Benutzer,valid-userWenn angegeben, wird Benutzern Zugriff gewährt, die einen Eintrag in der Kennwortdatei haben.

httpd.conf


<Directory "/var/www/html/secret-area">
AuthType Digest
AuthName "secret-area"
AuthUserfile /etc/httpd/conf/.htdigestfile
require valid-user
</Directory>

Verwenden Sie ** htdigest **, um Benutzer zu erstellen und Kennwörter für die Digest-Authentifizierung zu ändern.

# htdigest -c /etc/httpd/conf/.htdigest secret-area linuc2
Adding password for linuc2 in realm secret-area.
New password: 
Re-type new password: 

# cat /etc/httpd/conf/.htdigest
linuc2:secret-area:2b2b3ade579cc9e0121b4f1df227db6b

Hostbasierte Zugriffskontrolle

Wenn Sie den Zugriff anhand der IP-Adresse, des Hostnamens, des Domänennamens usw. steuern möchten, verwenden Sie die Anweisung ** require **. Diese Funktion wird von ** authz_host_module ** bereitgestellt.

Geben Sie beispielsweise Folgendes an, um den Zugriff von 172.31.0.0/16 zu verweigern und den Zugriff von anderen Hosts zuzulassen:

require all granted
require not ip 172.31.0.0/16

Virtuelle Hostfunktion

Sie können mehrere Websites auf einem Host verwalten.

Namensbasierter virtueller Host

Richten Sie eine IP-Adresse und mehrere Domänen auf einem Host ein. Beschreiben Sie es in der Direktive ** VirtualHost **. Mit den richtigen DNS-Einstellungen kann jede Website unabhängig betrieben werden.

<VirtualHost *:80>
  ServerName web.example.com
  DocumentRoot /var/www/virtual/web

<VirtualHost *:80>
  ServerName www.example.net
  DocumentRoot /var/www/virtual/example
</VirtualHost>

IP-basierter virtueller Host

Richten Sie mehrere IP-Adressen und mehrere Domänen auf einem Host ein. Beschreiben Sie es in der Direktive ** VirtualHost **. Jede IP-Adresse muss in der Anweisung ** Listen ** angegeben werden.

Listen 192.168.1.10:80
Listen 192.168.1.11:80

<VirtualHost 192.168.1.10:80>
  ServerName web.example.com
  DocumentRoot /var/www/virtual/web

<VirtualHost 192.168.1.11:80>
  ServerName www.example.net
  DocumentRoot /var/www/virtual/example
</VirtualHost>

Überwachung und Wartung

** mod_status **: Informationen zur Serveraktivität

LoadModule status_module modules/mod_status.so

<Location /server-status>
  SetHandler server-status
</Location>

** mod_info **: Informationen zu den Servereinstellungen

LoadModule info_module modules/mod_info.so

<Location /server-info>
  SetHandler server-info
</Location>

SSL/TLS##

SSL wird mit ** mod_ssl ** unterstützt.

Sie müssen das Standortzertifikat von der Zertifizierungsstelle erhalten.

① Erstellen Sie einen öffentlichen Schlüssel und einen Verschlüsselungsschlüssel. (2) Senden Sie den erstellten öffentlichen Schlüssel zusammen mit Dokumenten, die die Identität des Benutzerunternehmens bestätigen, an die Zertifizierungsstelle (CA). ③ CA stellt ein Zertifikat aus und gibt es zurück. (Mit diesem Zertifikat identifiziert sich der Webserver gegenüber dem Webbrowser.) ④ Installieren Sie das gesendete Zertifikat auf dem Webserver.

Serverzertifikate werden für IP-Adressen oder Domänennamen ausgestellt. Hier nehmen wir ein selbstsigniertes Zertifikat auf (eine Methode zum Signieren eines Zertifikats durch die Zertifizierungsstelle, die sich selbst als eigene Zertifizierungsstelle verwendet). In CentOS wird in dem Verzeichnis, in dem SSL installiert ist, ein Skript namens CA.sh vorbereitet. Kopieren Sie es also und erstellen Sie es interaktiv.

# cd /etc/pki/tls/misc
# ./CA -newca

Privater Schlüssel: / etc / pki / CA / private / cakey.pem Öffentlicher Schlüssel: / etc / pki / CA / cacert.pem Wird so erstellt.

Erstellen Sie den privaten Serverschlüssel ** server.key **, der zum Erstellen eines SSL-fähigen HTTP-Servers erforderlich ist.

# openssl genrsa -out server.key 2048

Erstellen Sie eine CSR (Certificate Issuance Request) ** server.csr **, für die die Zertifizierungsstelle ein Zertifikat ausstellen muss.

# openssl -req -new -key server.key -out server.csr

Das Zertifikat signiert die Anforderungsdatei für die Zertifikatsausstellung und erstellt ein Serverzertifikat ** server.crt **.

# openssl ca -out server.crt -infiles server.csr

Verschieben Sie den privaten Serverschlüssel und das Serverzertifikat in das entsprechende Verzeichnis und schreiben Sie die erforderlichen Einstellungen in httpd.conf.

SSL/TLS-bezogene Richtlinien Erläuterung
SSLEngine Wirksamkeit/Ungültig
SSLProtocol Ausführung
SSLCipherSuite Kryptographischer Algorithmus
SSLCertificateFile Serverzertifikatdatei
SSLCertificateKeyFile Private Schlüsseldatei des Servers
SSLCertificateChainFile Zwischenzertifizierungsstellendatei
SSLCACertificateFile CA-Zertifikatausstellungsdatei für die Clientzertifikatsausstellung
SSLCACertificatePAth CA-Zertifikatausstellungsverzeichnis für die Clientzertifikatsausstellung
SSLVerifyClient Stufe der Clientauthentifizierung
LoadModule ssl_module modules/mod_ssl.so
Listen 443 https

<VirtualHost _default_:443>
  ServerName www.example.net:443
  DocumentRoot "/var/www/html"
  ErrorLog logs/ssl_errorlog
  TransferLog logs/ssl_access_log
  LogLevel warn
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLCipherSuite HIGH:3DES:!aNULL:!MD5:!SEED:!IDEA:!DH
  SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
  SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
</VirtualHost>

Logdatei#

Zugriff auf die Protokolldatei

/var/log/httpd/access_log

Geben Sie das Format mit der Direktive ** LogFormat ** und an Verknüpfen Sie den Namen der Protokolldatei mit dem Format der Direktive ** CustomLog **.

httpd.conf


LogFormat

CustomLog logs/access_log combined

Fehlerprotokolldatei

/var/log/httpd/error_log

Sie können die aufzuzeichnende Protokollebene mit der Direktive LogLevel angeben.

httpd.conf


LogLevel

Recommended Posts

Fassen wir Apache zusammen
Lassen Sie uns kurz LPIC Level 1 (102) zusammenfassen.
Lassen Sie uns kurz LPIC Level 1 (101 Ausgaben) zusammenfassen.
Fassen Sie Doc2Vec zusammen
Fassen wir den Python-Codierungsstandard PEP8 (1) zusammen.
Fassen wir den Python-Codierungsstandard PEP8 (2) zusammen.
Lassen Sie uns zusammenfassen, was Sie tun möchten.
Lassen Sie uns Django und Apache (httpd) auf dem Mac integrieren! !!