Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:apache_http_server_centos_7

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tachtler:apache_http_server_centos_7 [2014/11/25 14:46] klaustachtler:apache_http_server_centos_7 [2019/01/24 17:52] (aktuell) – [/etc/httpd/conf/httpd.conf] klaus
Zeile 633: Zeile 633:
 # systemctl is-enabled httpd.service # systemctl is-enabled httpd.service
 enabled enabled
 +</code>
 +
 +:!: **HINWEIS** - **Falls der [[http://httpd.apache.org|Apache HTTP Server]] mit der Fehlermeldung**
 +<code apache>
 +... httpd: (99)Cannot assign requested address: AH00072: make_sock: could not bind to address ...
 +</code>
 +**beim automatischen __Systemstart__, __NICHT__ starten sollte, dann kann dies ggf. mit der Anpassung des Service ''httpd.service'' wie nachfolgend dargestellt, behoben werden.**
 +
 +Zuerst sollte die Konfiguration des ''httpd.service'' mit nachfolgendem Befehl kopiert werden, da sonst die Konfigurationen bei einem System-Update überschrieben werden würden:
 +<code>
 +# cp -a /usr/lib/systemd/system/httpd.service /etc/systemd/system/httpd.service
 +</code>
 +
 +Anschließend kann der Inhalt der Konfigurationsdatei 
 +  * ''/etc/systemd/system/httpd.service''
 +wie nachfolgend dargestellt angepasst werden:
 +<code>
 +[Unit]
 +Description=The Apache HTTP Server
 +After=network.target network-online.target remote-fs.target nss-lookup.target
 +Documentation=man:httpd(8)
 +Documentation=man:apachectl(8)
 +
 +[Service]
 +Type=notify
 +EnvironmentFile=/etc/sysconfig/httpd
 +ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
 +ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
 +ExecStop=/bin/kill -WINCH ${MAINPID}
 +# We want systemd to give httpd some time to finish gracefully, but still want
 +# it to kill httpd after TimeoutStopSec if something went wrong during the
 +# graceful stop. Normally, Systemd sends SIGTERM signal right after the
 +# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
 +# httpd time to finish.
 +KillSignal=SIGCONT
 +PrivateTmp=true
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +
 +**__Anpassung__**:
 +
 +  * <code>After=network.target network-online.target remote-fs.target nss-lookup.target</code>
 +
 +Ergänzung der Zeile um **''network-online.target''** an der entsprechende Stelle!
 +
 +Abschließend **müssen** die Änderungen noch __aktiviert__ werden, wozu nachfolgender Befehl genutzt werden kann:
 +<code>
 +# systemctl daemon-reload
 </code> </code>
  
Zeile 922: Zeile 972:
 # #
 #Listen 12.34.56.78:80 #Listen 12.34.56.78:80
-Listen 80+# Tachtler 
 +# default: Listen 80 
 +Listen 192.168.0.90:80 
 +Listen 192.168.1.90:80
  
 # #
Zeile 1098: Zeile 1151:
       LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %b (%{ratio}n)" combined_deflate       LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %b (%{ratio}n)" combined_deflate
       LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %b (%{ratio}n)" combined_proxypass_deflate       LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %b (%{ratio}n)" combined_proxypass_deflate
 +    </IfModule>
  
     #     #
Zeile 1256: Zeile 1310:
  
 **__Erklärungen__**: **__Erklärungen__**:
 +
 +=== Listen ===
 +
 +Setzen der IP-Adressen und des jeweiligen Ports, auf denen der [[http://httpd.apache.org|Apache HTTP Server]] lauschen soll. Eine Mehrfachdefinition ist, wie dargestellt, ebenfalls möglich!
 +
 +<code apache>
 +# Tachtler
 +# default: Listen 80
 +Listen 192.168.0.90:80
 +Listen 192.168.1.90:80
 +</code>
  
 === ServerAdmin === === ServerAdmin ===
Zeile 1277: Zeile 1342:
 === DirectoryIndex === === DirectoryIndex ===
  
-Festlegen der Dateien, welche vom [[http://httpd.apache.org|Apache HTTP Server]] zur anzeige gebracht werden sollen, wenn Anfragen gestellt werden (Einstiegsseiten in Web-Anwendungen):+Festlegen der Dateien, welche vom [[http://httpd.apache.org|Apache HTTP Server]] zur Anzeige gebracht werden sollen, wenn Anfragen gestellt werden (Einstiegsseiten in Web-Anwendungen):
 <code apache > <code apache >
 <IfModule dir_module> <IfModule dir_module>
Zeile 2614: Zeile 2679:
 # LoadModule socache_dbm_module modules/mod_socache_dbm.so # LoadModule socache_dbm_module modules/mod_socache_dbm.so
 LoadModule socache_memcache_module modules/mod_socache_memcache.so LoadModule socache_memcache_module modules/mod_socache_memcache.so
-LoadModule socache_shmcb_module modules/mod_socache_shmcb.so+LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
 LoadModule status_module modules/mod_status.so LoadModule status_module modules/mod_status.so
 # LoadModule substitute_module modules/mod_substitute.so # LoadModule substitute_module modules/mod_substitute.so
Zeile 2797: Zeile 2862:
  
 </code> </code>
 +
 +===== Virtuelle Hosts =====
 +
 +Virtuelle Hosts gibt es in zwei Ausprägungen:
 +  - IP-basierte virtuelle Hosts (jeder virtuelle Host benötigt eine eigene IP-Adresse)
 +  - Namens-basierte virtuelle Hosts (mehrere virtuelle Hosts **teilen** sich die gleiche IP-Adresse)
 +
 +IP-basierte virtuelle Hosts verwenden die IP-Adresse der Verbindung, um den korrekten virtuellen Host zur Bedienung einer Anfrage zu ermitteln. Folglich wird eine eigene IP-Adresse für jeden virtuellen Host benötigt.
 +
 +Bei der Verwendung von namensbasierten virtuellen Hosts verlässt sich der Server darauf, dass der Client den Hostnamen als Bestandteil der HTTP-Header angibt. Durch Anwendung dieser Technik, können sich mehrere verschiedene Hosts die gleiche IP-Adresse teilen.
 +
 +Nachfolgend soll deshalb ein Beispiel für die Erstellung eines **namensbasierten Hosts** konfiguriert werden.
 +
 +<code apache>
 +#
 +# httpd.tachtler.net (Apache HTTP Server-Status/Info)
 +#
 +<VirtualHost *:80>
 +        ServerAdmin webmaster@tachtler.net
 +        ServerName httpd.tachtler.net
 +        ServerAlias www.httpd.tachtler.net
 +        ServerPath /
 +        DocumentRoot "/var/www/html"
 +        <Directory "/var/www/html">
 +                Options -Indexes +FollowSymLinks
 +                # Tachtler (enable for .htaccess file support)
 +                # AllowOverride AuthConfig
 +                AllowOverride None
 +                # Tachtler (enable for unlimited access)
 + Require all granted
 +                # Tachtler (enable for restricted access)
 + # Allow access from localhost, edmz, idmz, home
 + # Require ip 127.0.0.1/8 192.168.1.0/24 192.168.0.0/24 192.168.2.0/25 
 +
 +                # Rewrite the requestet URI, when following query was
 +                # NOT set to --> /server-status
 +                RewriteEngine on
 +                RewriteBase /
 +                RewriteRule ^$ %{REQUEST_URI}server-status [R=301,L]
 +
 +        </Directory>
 +
 +        DirectoryIndex index.htm
 +
 +        ErrorLog logs/httpd_error.log
 +        SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
 +        CustomLog logs/httpd_access.log combined env=!forwarded
 +        CustomLog logs/httpd_access.log combined_proxypass env=forwarded
 +</VirtualHost>
 +</code>
 +
 +**__Erklärungen__**:
 +
 +=== VirtualHost ===
 +
 +Die Direktive ''<VirtualHost *:80>'' bezeichnet den Anfang eines Virtuellen Hosts und die Direktive. ''</VirtualHost>'' bezeichnet das Ende eines virtuellen Hosts.
 +
 +=== ServerAdmin ===
 +
 +Die Direktive ''ServerAdmin webmaster@tachtler.net'' bezeichnet die e-Mail-Adresse die z.B. bei Fehlermeldungsseiten angezeigt werden soll.
 +
 +=== ServerName ===
 +
 +Die Direktive ''ServerName httpd.tachtler.net'' ist die FQDN unter der dieser virtuelle Host primär erreichbar ist.
 +
 +=== ServerAlias ===
 +
 +Die Direktive ''ServerAlias www.httpd.tachtler.net'' bezeichnet einen oder mehrere weiter FQDN unter der der virtuelle Host erreichbar ist.
 +
 +=== ServerPath ===
 +
 +Die Direktive ''ServerPath /'' legt den URL-Pfad eines Hosts zur Verwendung mit namensbasierten virtuellen Hosts fest. 
 +
 +:!: **HINWEIS** - Dient nur zur Kompatibilität zu antiquierten Clients!
 +
 +=== DocumentRoot ===
 +
 +Die Direktive ''DocumentRoot "/var/www/html"'' legt das Stammverzeichnis in der sich die Dateien der Web-Anwendung befinden fest.
 +
 +=== Directory ===
 +
 +Die Direktive ''<Directory "/var/www/html">'' legt den Anfang von Direktiven fest, welche nur auf das genannte Verzeichnis des Dateisystems und Unterverzeichnisse angewendet werden und die Direktive </Directory> legt das Ende von Direktiven fest, welche nur auf das genannte Verzeichnis des Dateisystems und Unterverzeichnisse angewendet werden.
 +
 +=== Options ===
 +
 +Die Direktive ''Options -Indexes +FollowSymLinks'' legt fest welche Optionen für das Verzeichnis und die Unterverzeichnisse gelten sollen, hier ''-Indexes'' - keine Auflistung des Verzeichnisinhaltes und ''+FollowSymLinks'' - Der Server folgt symbolischen Links in diesem Verzeichnis.
 +
 +=== AllowOverride ===
 +
 +Die Direktive ''AllowOverride None'' legt fest, welche der angegebenen Direktiven frühere Konfigurationsanweisungen überschreiben dürfen.
 +
 +=== Require ===
 +
 +Die Direktive ''Require all granted'' überprüft ob ein bestimmter Benutzer autorisiert Zugriff zu nehmen, hier ist der Zugriff ohne Beschränkungen erlaubt.
 +
 +=== Rewrite ===
 +
 +Die Direktiven
 +<code apache>
 +                RewriteEngine on
 +                RewriteBase /
 +                RewriteRule ^$ %{REQUEST_URI}server-status [R=301,L]
 +</code>
 +schreiben die eingegebene URL in der Form um, dass wenn die URL nicht die Zeichenfolge ''server-status'' enthält, diese an die eingegebene URL angehängt wird und dies als ''redirect'' mit HTML-Code ''R=301'' und nach erfolgreicher Ausführung dies nicht weiter fortzusetzen ''L'' durchgeführt wird.
 +
 +=== DirectoryIndex ===
 +
 +Die Direktive ''DirectoryIndex index.htm'' legt die Datei(en) fest, welche als Einstiegsseite(n) bei einem Aufruf interpretiert werden sollen.
 +
 +=== ErrorLog ===
 +
 +Die Direktive ''ErrorLog logs/httpd_error.log'' definiert eine Datei in die Fehlermeldungen protokolliert werden sollen, bezogen auf diesen virtuellen Host.
 +
 +=== SetEnvIf  ===
 +
 +Die Direktive ''SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded'' definiert temporär eine Umgebungsvariable, welche später ausgewertet werden kann und als Inhalt eine mögliche Remote-Ip-Adresse beinhaltet.
 +
 +=== CustomLog ===
 +
 +Die Direktive ''CustomLog logs/httpd_access.log combined env=!forwarded'' bzw. ''CustomLog logs/httpd_access.log combined_proxypass env=forwarded'' definiert eine Datei in die Zugriffe und Meldungen protokolliert werden sollen, auf diesen virtuellen Host bezogen.
 +
 +Wenn die Umgebungsvariable __nicht__ gesetzt ist, ist das Format hier dann ''combined''. Wenn die Umgebungsvariable gesetzt ist, ist das Format hier dann ''combined_proxypass''.
 +
 +:!: **HINWEIS** - Die Log-Formate müssen vorher z.B. in der Konfigurationsdatei ''/etc/httpd/conf/httpd.conf'' jedoch definiert sein!
  
 ===== Abschließender Neustart ===== ===== Abschließender Neustart =====
  
-Bevor **__weitere__** **Konfigurationsschritte** erfolgen, sollte dem **ersten Neustart** nichts im Wege stehen und die **erweiterten Konfigurationseinstellungen** sollten ebenfalls angezogen werden:+Nach Durchführung der vorhergehenden **Konfigurationsschritte**, sollte dem **abschließendem Neustart** nichts im Wege stehen und die **weiteren Konfigurationseinstellungen** ebenfalls angezogen werden:
 <code> <code>
 # systemctl restart httpd.service # systemctl restart httpd.service
Zeile 2833: Zeile 3022:
 | <code>apachectl -t -D DUMP_MODULES</code> | Auflistung aller geladenen Module                        | | <code>apachectl -t -D DUMP_MODULES</code> | Auflistung aller geladenen Module                        |
 | <code>apachectl -M</code>                 | **Wie** ''-t -D DUMP_MODULES''                                 | <code>apachectl -M</code>                 | **Wie** ''-t -D DUMP_MODULES''                                
- 
-===== Virtuelle Hosts ===== 
- 
-Virtuelle Hosts gibt es in zwei Ausprägungen: 
-  - IP-basierte virtuelle Hosts (jeder virtuelle Host benötigt eine eigene IP-Adresse) 
-  - Namens-basierte virtuelle Hosts (mehrere virtuelle Hosts **teilen** sich die gleiche IP-Adresse) 
- 
-IP-basierte virtuelle Hosts verwenden die IP-Adresse der Verbindung, um den korrekten virtuellen Host zur Bedienung einer Anfrage zu ermitteln. Folglich wird eine eigene IP-Adresse für jeden virtuellen Host benötigt. 
- 
-Bei der Verwendung von namensbasierten virtuellen Hosts verläßt sich der Server darauf, dass der Client den Hostnamen als Bestandteil der HTTP-Header angibt. Durch Anwendung dieser Technik können sich mehrere verschiedene Hosts die gleiche IP-Adresse teilen. 
- 
-Nachfolgend soll deshalb ein Beispiel für die Erstellung eines **namensbasierten Hosts** konfigureirt werden. 
- 
- 
- 
-:!: FIXME **Hier geht es weiter...** FIXME :!: 
- 
- 
- 
  
tachtler/apache_http_server_centos_7.1416923214.txt.gz · Zuletzt geändert: 2014/11/25 14:46 von klaus