Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
centos:web_c7:apache_1 [29.08.2014 13:20. ] – [erste Webseite] django | centos:web_c7:apache_1 [22.07.2019 14:59. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1073: | Zeile 1073: | ||
</ | </ | ||
- | FIXME | ||
Zeile 1125: | Zeile 1124: | ||
</ | </ | ||
- | Ebenso kann der Status des Webservers mit Hilfe des Befehls **systemctl** abfragen | + | Ebenso kann man den Status des Webservers mit Hilfe des Befehls **systemctl** abfragen. |
# systemctl status httpd.service | # systemctl status httpd.service | ||
< | < | ||
Zeile 1371: | Zeile 1370: | ||
- | + | ===== Anwendungen/ | |
- | ===== erste Webseite | + | ==== erste Webseite ==== |
Da wir uns natürlich nicht mit der Standardfehlerseite unseres Apache-Webservers begnügen wollen legen wir uns unsere erste eigene minimalistische HTML-Seite an; hierzu benutzen wir den Editor unserer Wahl, z.B. **vim**. Das HTML-Dokument legen wir im **DocumentRoot** // | Da wir uns natürlich nicht mit der Standardfehlerseite unseres Apache-Webservers begnügen wollen legen wir uns unsere erste eigene minimalistische HTML-Seite an; hierzu benutzen wir den Editor unserer Wahl, z.B. **vim**. Das HTML-Dokument legen wir im **DocumentRoot** // | ||
# vim / | # vim / | ||
Zeile 1381: | Zeile 1380: | ||
</ | </ | ||
- | Nun können wir unsere erste eigene Webseite ansurfen, wie gewohnt mit dem Browser der Wahl: | + | Nun können wir unsere erste eigene Webseite ansurfen, wie gewohnt mit dem Browser der Wahl. Beim Zugriffstest mit Hilfe von **telnet** gilt auch hier wiederum: "Die Eingaben am testenden Client sind in der Farbe <html><font style=" |
- | | + | $ firefox |
- | | + | |
- | * < | + | $ elinks |
< | < | ||
- | <font style=" | + | <font style=" |
- | < | + | |
<font style=" | <font style=" | ||
Connected to 10.0.0.97. | Connected to 10.0.0.97. | ||
- | Escape character is ' | + | Escape character is ' |
- | Die Verbindung zu unserem Webserver steht und dieser erwarten nun von uns unsere weitere Eingabe. | + | |
- | + | ||
- | < | + | |
<font style=" | <font style=" | ||
HOST: | HOST: | ||
Connection: close | Connection: close | ||
- | </ | + | </ |
- | Hiermit haben wir dem webserver mitgeteilt, dass wir das root-/ | + | Date: Fri, 29 Aug 2014 13:24:20 GMT |
- | + | ||
- | < | + | |
- | <font style=" | + | |
- | Date: Fri, 29 Aug 2014 12:20:43 GMT | + | |
Server: Apache/ | Server: Apache/ | ||
- | Last-Modified: | + | Last-Modified: |
- | ETag: "1310-4fc0a3f32a9c0" | + | ETag: "104-501c472c8a108" |
Accept-Ranges: | Accept-Ranges: | ||
- | Content-Length: | + | Content-Length: |
Connection: close | Connection: close | ||
Content-Type: | Content-Type: | ||
</ | </ | ||
+ | < | ||
+ | Dies ist unserer erste < | ||
- | Da wir angegeben keine HTML-Seite angegeben, sonder das Verzeichnis **%%/%%** versucht hatten abzurufen, quittiert und unser Webserver | + | Weiter Informationen zum Apache-Webserver |
- | Anschließend wird uns die CentOS spefifische Fehlerseite ausgegeben. | + | </html> |
- | <code>< | + | </code> |
- | <meta http-equiv="content-type" | + | <html>< |
- | < | + | <font style="color: rgb(255, 0, 0)">Connection closed |
- | <meta http-equiv=" | + | </ |
- | <!-- Bootstrap --> | + | Im Accesslog unseres Webservers sehen wir dann auch die erfolgreichen Zugriffe auf unsere erste **index.html**. |
- | <link href=" | + | <code syslog> |
- | <link rel=" | + | |
- | <style type="text/css"><!-- | + | 10.0.0.20 - - [29/ |
+ | 10.0.0.20 - - [29/ | ||
+ | 10.0.0.20 - - [29/ | ||
+ | 10.0.0.20 - - [29/ | ||
- | body { | + | ... |
- | | + | </ |
- | font-weight: | + | |
- | color: #ccc; | + | |
- | background: rgba(10, 24, 55, 1); | + | |
- | font-size: 16px; | + | |
- | } | + | |
- | h2, h3, h4 { | + | ==== erster (named based) vHOST ==== |
- | font-weight: 200; | + | Unser Web-Sever soll später für unterschiedliche (Sub-)Domains Seiten ausliefern. Wir werden hierzu **[[http:// |
- | } | + | |
- | h2 { | + | Im folgendem Konfigurationsbeispiel wollen wir für die beiden Hostnamen **cam.mail-server.guru** und **test.mail-server.guru** einen Webserver konfigurieren, |
- | font-size: 28px; | + | |
- | } | + | |
- | .jumbotron { | + | Zunächst legen wir uns auf unserem Server zwei Verzeichnisse für die beiden vHosts an. |
- | | + | |
- | color: | + | |
- | background: rgb(212, | + | |
- | background: radial-gradient(ellipse at center top, rgba(255, | + | |
- | } | + | |
- | .jumbotron h1 { | + | # mkdir / |
- | font-size: 128px; | + | |
- | font-weight: | + | |
- | color: white; | + | |
- | text-shadow: | + | |
- | 0px 4px 10px rgba(0, | + | |
- | 0px 5px 2px rgba(0, | + | |
- | 0px 6px 30px rgba(0, | + | |
- | } | + | |
- | .jumbotron p { | + | In den neuen Unterverzeichnissen stellen wir dann jeweils eine eigene **index-html**-Datei ein. |
- | font-size: 28px; | + | # vim / |
- | font-weight: 100; | + | <file html / |
- | } | + | < |
+ | Dies ist die < | ||
+ | < | ||
+ | Weitere Informationen zum Apache-Webserver finden wir im <a href=" | ||
+ | </ | ||
+ | </ | ||
- | .main { | + | # vim / |
- | background: white; | + | <file html / |
- | color: #234; | + | < |
- | border-top: 1px solid rgba(0, | + | Dies ist die < |
- | | + | </ |
- | | + | </ |
- | } | + | |
- | .footer { | + | Wir haben also folgende Verzeichnis-Struktur. |
- | border-top: 1px solid rgba(255, | + | < |
- | padding-top: | + | ├── cgi-bin |
- | } | + | ├── html |
+ | ├── vhost1 | ||
+ | │ └── index.html | ||
+ | └── vhost2 | ||
+ | └── index.html | ||
+ | </ | ||
- | --></style> | + | Was wir nun brauchen, ist die entsprechende Konfiguration(sdatei) für dieses Beispiel. Durch die Directive **IncludeOptional** in der Konfigurationsdatei |
- | </head> | + | # vim /etc/httpd/conf/httpd.conf |
- | < | + | |
- | <div class=" | + | < |
- | <div class=" | + | |
- | < | + | |
- | <p class=" | + | |
- | </div> | + | |
- | </div> | + | |
- | <div class=" | + | |
- | <div class=" | + | |
- | < | + | |
- | <div class=" | + | |
- | < | + | |
- | <p class=" | + | |
- | <p>If you would like to let the administrators of this website know that you've seen this page instead of the page you expected, you should send them e-mail. In general, mail sent to the name " | + | |
- | < | + | |
- | </div> | + | |
- | <div class=" | + | |
- | < | + | |
- | < | + | |
- | <p>To prevent this page from ever being used, follow the instructions in the file <tt>/ | + | |
- | < | + | # Supplemental configuration |
- | < | + | # |
- | < | + | # Load config files in the "/etc/httpd/conf.d" |
- | </div> | + | IncludeOptional conf.d/*.conf |
- | </ | + | </file> |
- | </ | + | |
- | </ | + | Ob wir nun eine Datei mit allen vHost-Definitionen anlegen, oder ob diese in einzelne Dateien aufgesplittet werden, ist letztendlich egal. Die Trennung in einzelne Konfigurationsdateien hat den Vorteil, dass man so leichter den Überblick bei vielen vHosts behält und man so leicht einzelne vHosts schnell deaktivieren kann, in dem man die Konfigurationsdatei umbenennt, oder in ein anderes Verzeichnis verschiebt. Der Namensteil **80** symmbolisiert dabei auch den HTTP-Port 80. |
- | </ | + | |
- | <div class=" | + | Wir legen uns also für unseren ersten Host eine Date an. |
- | <div class=" | + | # vim / |
- | <div class=" | + | <code apache |
- | <div class=" | + | # Django : 2014-08-29 |
- | < | + | # vHost test.sec-mail.guru |
- | <p class=" | + | # |
- | it just provides the software that makes the website run.</ | + | |
- | + | <VirtualHost *:80> | |
- | <p>If you have issues with the content of this site, contact the owner of the domain, not the CentOS project. | + | |
- | | + | |
- | the content or the lack of it.</p> | + | |
- | < | + | DocumentRoot |
- | <p><a href=" | + | |
- | </ | + | |
- | | + | |
- | < | + | |
- | <p>The CentOS Linux distribution is a stable, predictable, | + | Require all granted |
- | the sources of Red Hat Enterprise Linux (RHEL).<p> | + | |
- | + | ||
- | < | + | |
- | please visit the <a href="http://www.centos.org/">CentOS website</a>.</p> | + | ErrorLog logs/test.mail-server.guru_error.log |
- | </div> | + | |
- | | + | </VirtualHost> |
- | </div> | + | |
- | | + | |
- | </div> | + | |
- | </body></ | + | |
</ | </ | ||
- | Da wir bei unserem Request **Connection: | ||
- | < | + | Und auch für unseren zweiten vHOST legen wir die nötige Konfigurationsdatei an. |
- | <font style=" | + | # vim / |
- | </pre></html> | + | <code apache |
+ | # Django : 2014-08-29 | ||
+ | # vHost webcam.sec-mail.guru | ||
+ | # | ||
+ | < | ||
+ | ServerAdmin webmaster@nausch.org | ||
+ | ServerName webcam.sec-mail.guru | ||
+ | ServerAlias cam.sec-mail.guru | ||
+ | ServerPath / | ||
+ | DocumentRoot "/ | ||
+ | < | ||
+ | Options FollowSymLinks | ||
+ | AllowOverride none | ||
+ | Require all granted | ||
+ | </ | ||
- | * < | + | DirectoryIndex index.html |
- | Connected to localhost. | + | ErrorLog logs/webcam.mail-server.guru_error.log |
- | Escape character is ' | + | CustomLog logs/webcam.mail-server.guru_access.log combined |
- | GET /index.html HTTP/1.1 | + | </VirtualHost> |
- | host: | + | </ |
- | HTTP/1.1 200 OK | + | Nun ist es an der Zeit, unseren Webserver von der Konfigurationsanpassung in Kenntnis zu setzen. Bevor wir dies aber tun, überprüfen wir noch, ob die Konfigurationsdateien unseres web-Servers noch irgendwelche syntaktischen Fehler haben. Hierzu benutzen wir folgenden Aufruf. |
- | Date: Fri, 09 Sep 2011 20:31:19 GMT | + | # apachectl |
- | Server: Apache/2.2.15 (CentOS) | + | |
- | Last-Modified: | + | |
- | ETag: " | + | |
- | Accept-Ranges: | + | |
- | Content-Length: | + | |
- | Connection: close | + | |
- | Content-Type: | + | |
- | < | + | |
- | Unserer erste < | + | |
- | Weiter Informationen zum Apache-Webserver finden | + | Da kein Syntax-Fehler gefunden wurde, führen wir einen Reload unseres |
- | </ | + | # systemctl reload httpd.service |
+ | |||
+ | Da jeder vHOST die Zugriffe bzw. die Fehler in separate Logdateien schreibt, haben wir es bei der Fehlersuche oder Auswertung der einzelnen Kunden-vHOSTS einfacher, als bei großen Dateien, in die jeder einzelne vHOST schreiben würde. | ||
+ | <code>/var/log/ | ||
+ | ├── access_log | ||
+ | ├── test.mail-server.guru_access.log | ||
+ | ├── test.mail-server.guru_error.log | ||
+ | ├── webcam.mail-server.guru_access.log | ||
+ | ├── webcam.mail-server.guru_error.log | ||
+ | └── error_log | ||
</ | </ | ||
- | Im Accesslog unseres Webservers sehen wir dann auch z.B. den erfolgreichen Zugriff auf unsere | + | |
- | <code syslog>127.0.0.1 - - [09/Sep/2011:22:32:41 +0200] " | + | In dem Konfigurationsbeispiel ist der zweite vHOST sowohl über dem Namen **webcam.sec-mail.guru** als auch **cam.sec-mail.guru** erreichbar. realisiert wurde dies mit dem Parameter **// |
+ | |||
+ | Eine ausführliche Beschreibung und Dokumentationder einzelnen Konfigurations-Directiven und -Optionen findet man in der **[[http:// | ||
+ | |||
+ | ==== named based default vHOST ==== | ||
+ | Setzen | ||
+ | |||
+ | <WRAP center round important> | ||
+ | **Wichtig** \\ | ||
+ | Da wir alle unsere | ||
+ | </ | ||
+ | |||
+ | |||
+ | Für diesen speziellen Fall können wir auch eine eigene spezielle vHOST-Konfiguration definieren, nämlich den **_default_**-vHOST. Nähere Hinweise hierzu findet man in der Beschreibung zu**[[http:// | ||
+ | |||
+ | Wir legen uns also hierzu einen speziellen vHOST an. | ||
+ | # vim / | ||
+ | |||
+ | <file apache / | ||
+ | # Django : 2014-08-29 | ||
+ | # default vHost sec-mail.guru | ||
+ | # | ||
+ | |||
+ | < | ||
+ | ServerAdmin webmaster@nausch.org | ||
+ | ServerName sec-mail.guru | ||
+ | ServerAlias www.sec-mail.guru | ||
+ | ServerPath / | ||
+ | DocumentRoot "/ | ||
+ | |||
+ | < | ||
+ | Options FollowSymLinks | ||
+ | AllowOverride none | ||
+ | Require all granted | ||
+ | </ | ||
+ | |||
+ | DirectoryIndex index.html | ||
+ | ErrorLog logs/ | ||
+ | CustomLog logs/ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Auch hier testen wir, o sich nicht irgendwo ein Schreibfehler eingeschlichen hat. | ||
+ | # apachectl -t | ||
+ | |||
+ | | ||
+ | |||
+ | Anschließend führen wir einen reload unseres Servers durch, damit dieser die Konfigurationsdateien neu einliest. | ||
+ | # systemctl reload httpd.service | ||
+ | |||
+ | ===== Authentifizierung für geschützte Bereiche ===== | ||
+ | Nicht immer wollen wir Inhalte die unser WEB-Server zur Verfügung stellt, allen Besuchern zugänglich machen. Bestimmte vertrauliche Daten, sollen oft nur einem gewissen Teilnehmerkreis angeboten werden. Diese Besucher müssen sich dann mit Hilfe eines Namens und eines zugehörigen Passwortes zu erkennen geben. | ||
+ | |||
+ | In den folgenden beiden Konfigurationsbeispielen wollen wir nun an Hand zweier Beispiele diese Funktion einrichten. | ||
+ | ==== Basic Authentifikation ==== | ||
+ | Die einfachste Variante zum Anmeldevorgang ist die Variante **[[https://wiki.apache.org/ | ||
+ | |||
+ | Mit Hilfe des Befehls **htpasswd** aus dem RPM **// | ||
+ | |||
+ | Haben wir noch keine Passwort-Datei angelegt, generieren wir dies mit folgendem Aufruf. Ob man nun einen Usernamen oder eine eMail-Adresse zur Authentifizierung verwenden ist egal. | ||
+ | # htpasswd -c / | ||
+ | |||
+ | New password: | ||
+ | | ||
+ | |||
+ | Das Passwort, welches wir 2x eingegeben hatten, wird standardmäßig als [[http:// | ||
+ | # cat / | ||
+ | |||
+ | | ||
+ | |||
+ | Wollen wir einen weiteren Nutzerhinzufügen rufen wir den Befehl **htpasswd** __ohne__ den Parameter **-c** auf. | ||
+ | # htpasswd -/ | ||
+ | |||
+ | New password: | ||
+ | | ||
+ | |||
+ | Es befinden sich nun zwei Anmeldenamen und deren zugehörigen verschlüsselten Passwörtern in der // | ||
+ | # cat / | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | Haben wir alle Benutzer angelegt, geht es nun weiter mit der Konfiguration unseres vHOSTs. | ||
+ | |||
+ | Beim betreffenden Beispiel, einem vHOST der die WEB-Anwendung **[[centos: | ||
+ | # vim /etc/httpd/conf.d/ | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | # Django : 2014-09-08 Konfigurationsbeispiel zur Basic Authenifikation mit Hilfe | ||
+ | # einer htpasswd-Datei | ||
+ | < | ||
+ | Options +FollowSymLinks +Multiviews +Indexes | ||
+ | AllowOverride None | ||
+ | AuthType basic | ||
+ | AuthName | ||
+ | AuthUserFile /etc/httpd/.htpasswd | ||
+ | Require valid-user django django@sec-mail.guru | ||
+ | </ | ||
+ | |||
+ | ... | ||
</ | </ | ||
+ | Damit unsere Änderungen aktiv werden bedarf es noch eines Reloads unseres httpdaemon. | ||
+ | # systemctl reload httpd.service | ||
+ | <WRAP center round important> | ||
+ | **WICHTIG: | ||
+ | Damit die Anmeldedaten nicht von Dritten mitgelesen und abgefischt werden können, nutzen wir natürlich einen SSL-geschützten vHOST! | ||
+ | </ | ||
+ | ==== LDAPs Authentifikation ==== | ||
+ | {{page> | ||
+ | ===== Logging ===== | ||
+ | ==== Ausnahme eines Hosts/ | ||
+ | Soll eine IP-Adresse bzw. ein Host vom Logging ausgeschlossen werden, verwenden wir folgendes Konfigurationsbeispiel, | ||
+ | # vim 1st_vhost.conf | ||
+ | < | ||
+ | SetEnvIf | ||
+ | ErrorLog | ||
+ | CustomLog logs/ | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Greif der Host mit der IP-Adresse **10.0.0.27** auf den VHost zu, wird darüber im access-Log keine Einträge vermerkt. | ||
- | ===== erster vHOST ===== | ||
====== Links ====== | ====== Links ====== | ||
* **[[centos: | * **[[centos: | ||
* **[[wiki: | * **[[wiki: | ||
* **[[http:// | * **[[http:// | ||
- | |||
- | ~~DISCUSSION~~ | ||