Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:web_c7:apache_1 [29.08.2014 12:46. ] – [telnet] djangocentos:web_c7:apache_1 [22.07.2019 14:59. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1073: Zeile 1073:
 </file> </file>
  
-FIXME 
  
  
Zeile 1125: Zeile 1124:
 </code> </code>
  
-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
 <code>httpd.service - The Apache HTTP Server <code>httpd.service - The Apache HTTP Server
Zeile 1206: Zeile 1205:
 Zum Testen des Server braucht man im Gunde nicht einmal einen Browser. Da das HTML-Protokoll im Klartext abläuft kann man dies auch jederzeit mit einem einfachen **telnet** testen. Wir bauen hierzu einfach mit Hilfe von telnet eine Verbindung auf Port 80 zu unserem webserver auf und geben dann die benötigten Befehle einfach per Hand ein. Zum Testen des Server braucht man im Gunde nicht einmal einen Browser. Da das HTML-Protokoll im Klartext abläuft kann man dies auch jederzeit mit einem einfachen **telnet** testen. Wir bauen hierzu einfach mit Hilfe von telnet eine Verbindung auf Port 80 zu unserem webserver auf und geben dann die benötigten Befehle einfach per Hand ein.
  
-Nach dem Verbinden mit dem Server geben wir an welches Dokument wir holen wollen und welche Protokollversion verwendet werden soll. Zu guter Letzt geben wir noch an, von welchem Host wir die Daten holen wollen und schließen unsere Eingaben __**mit** einer Leerzeile__ ab. +Nach dem Verbinden mit dem Server geben wir an welches Dokument wir holen wollen und welche [[http://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Protokollversionen|Protokollversion]] verwendet werden soll. Zu guter Letzt geben wir noch an, von welchem Host wir die Daten holen wollen und schließen unsere Eingaben __**mit** einer Leerzeile__ ab. 
  
 Bei Test vsind die Eingaben am testenden Client in der Farbe <html><font style="color: rgb(0, 0, 255)"><b>blau </b></font></html>, die Rückmeldungen unseres Web-Servers in der Farbe <html><font style="color: rgb(0, 0, 0)"><b>schwarz</b></font></html> gekennzeichnet. Die Ausgaben des Befehls **telnet** sind in der Farbe <html><font style="color: rgb(255, 0, 0)"><b>rot</b></font></html> eingefärbt. Bei Test vsind die Eingaben am testenden Client in der Farbe <html><font style="color: rgb(0, 0, 255)"><b>blau </b></font></html>, die Rückmeldungen unseres Web-Servers in der Farbe <html><font style="color: rgb(0, 0, 0)"><b>schwarz</b></font></html> gekennzeichnet. Die Ausgaben des Befehls **telnet** sind in der Farbe <html><font style="color: rgb(255, 0, 0)"><b>rot</b></font></html> eingefärbt.
  
-Wir bauen also eine Verbindung zu unserem Postfix-Server zum **HTTP**-Port **80** auf und setzen dann den Befehl **EHLO** ab, damit uns der SMTP-server seine Authentifizierungsoptionen anzeigt.+Wir bauen also eine Verbindung zu unserem Postfix-Server zum **HTTP**-Port **80** auf.
  
 <html><pre class="code"> <html><pre class="code">
-<font style="color: rgb(0, 0, 0)">$ </font><font style="color: rgb(0, 0, 255)">telnet www7.nausch.org 80</font>+<font style="color: rgb(0, 0, 0)">$ </font><font style="color: rgb(0, 0, 255)">telnet www7.nausch.org 80</font></pre></html> 
 +<html><pre class="code">
 <font style="color: rgb(255, 0, 0)">Trying 10.0.0.97... <font style="color: rgb(255, 0, 0)">Trying 10.0.0.97...
 Connected to 10.0.0.97. Connected to 10.0.0.97.
-Escape character is '^]'.</font>+Escape character is '^]'.</font></pre></html> 
 +Die Verbindung zu unserem Webserver steht und dieser erwarten nun von uns unsere weitere Eingabe. 
 + 
 +<html><pre class="code">
 <font style="color: rgb(0, 0, 255)">GET / HTTP/1.1 <font style="color: rgb(0, 0, 255)">GET / HTTP/1.1
 HOST:www7.nausch.org HOST:www7.nausch.org
 Connection: close Connection: close
- </font>+ 
 +</font></pre></html> 
 +Hiermit haben wir dem webserver mitgeteilt, dass wir das root-/Hauptverzeichnis **%%/%%** abrufen, dabei die Protokollversion **HTTP/1.1** verwenden und das ganze für die URL bzw. vom Host **www7.nausch.org** beziehen wollen. 
 + 
 +<html><pre class="code">
 <font style="color: rgb(0, 0, 0)">HTTP/1.1 403 Forbidden <font style="color: rgb(0, 0, 0)">HTTP/1.1 403 Forbidden
 Date: Fri, 29 Aug 2014 12:20:43 GMT Date: Fri, 29 Aug 2014 12:20:43 GMT
Zeile 1230: Zeile 1237:
 Connection: close Connection: close
 Content-Type: text/html; charset=UTF-8 Content-Type: text/html; charset=UTF-8
 +</font></pre></html>
  
-****TEXTBLOCK Start****+Da wir angegeben keine HTML-Seite angegeben, sonder das Verzeichnis **%%/%%** versucht hatten abzurufen, quittiert und unser Webserver die Anfrage mit dem Fehlercode **403 Forbidden**
 +Anschließend wird uns die CentOS spefifische Fehlerseite ausgegeben. 
 +<code><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html><head> 
 +<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
 +                <title>Apache HTTP Server Test Page powered by CentOS</title> 
 +                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  
-****TEXTBLOCK ENDE**** +    <!-- Bootstrap --> 
-</font>+    <link href="css/bootstrap.min.css" rel="stylesheet"> 
 +    <link rel="stylesheet" href="css/open-sans.css" type="text/css" /> 
 + 
 +<style type="text/css"><!--               
 + 
 +body { 
 +  font-family: "Open Sans", Helvetica, sans-serif; 
 +  font-weight: 100; 
 +  color: #ccc; 
 +  background: rgba(10, 24, 55, 1); 
 +  font-size: 16px; 
 +
 + 
 +h2, h3, h4 { 
 +  font-weight: 200; 
 +
 + 
 +h2 { 
 +  font-size: 28px; 
 +
 + 
 +.jumbotron { 
 +  margin-bottom: 0; 
 +  color: #333; 
 +  background: rgb(212,212,221); /Old browsers *
 +  background: radial-gradient(ellipse at center top, rgba(255,255,255,1) 0%,rgba(174,174,183,1) 100%); /W3C *
 +
 + 
 +.jumbotron h1 { 
 +  font-size: 128px; 
 +  font-weight: 700; 
 +  color: white; 
 +  text-shadow: 0px 2px 0px #abc, 
 +               0px 4px 10px rgba(0,0,0,0.15), 
 +               0px 5px 2px rgba(0,0,0,0.1), 
 +               0px 6px 30px rgba(0,0,0,0.1); 
 +
 + 
 +.jumbotron p { 
 +  font-size: 28px; 
 +  font-weight: 100; 
 +
 + 
 +.main { 
 +   background: white; 
 +   color: #234; 
 +   border-top: 1px solid rgba(0,0,0,0.12); 
 +   padding-top: 30px; 
 +   padding-bottom: 40px; 
 +
 + 
 +.footer { 
 +   border-top: 1px solid rgba(255,255,255,0.2); 
 +   padding-top: 30px; 
 +
 + 
 +    --></style> 
 +</head> 
 +<body> 
 +  <div class="jumbotron text-center"> 
 +    <div class="container"> 
 +          <h1>Testing 123..</h1> 
 +                <p class="lead">This page is used to test the proper operation of the <a href="http://apache.org">Apache HTTP server</a> after it has been installed. If you can read this page it means that this site is working properly. This server is powered by <a href="http://centos.org">CentOS</a>.</p> 
 +                </div> 
 +  </div> 
 +  <div class="main"> 
 +    <div class="container"> 
 +       <div class="row"> 
 +                        <div class="col-sm-6"> 
 +                        <h2>Just visiting?</h2> 
 +                                        <p class="lead">The website you just visited is either experiencing problems or is undergoing routine maintenance.</p> 
 +                                        <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 "webmaster" and directed to the website's domain should reach the appropriate person.</p> 
 +                                        <p>For example, if you experienced problems while visiting www.example.com, you should send e-mail to "webmaster@example.com".</p> 
 +                                </div> 
 +                                <div class="col-sm-6"> 
 +                                        <h2>Are you the Administrator?</h2> 
 +                                        <p>You should add your website content to the directory <tt>/var/www/html/</tt>.</p> 
 +                                        <p>To prevent this page from ever being used, follow the instructions in the file <tt>/etc/httpd/conf.d/welcome.conf</tt>.</p> 
 + 
 +                                        <h2>Promoting Apache and CentOS</h2> 
 +                                        <p>You are free to use the images below on Apache and CentOS Linux powered HTTP servers.  Thanks for using Apache and CentOS!</p> 
 +                                        <p><a href="http://httpd.apache.org/"><img src="images/apache_pb.gif" alt="[ Powered by Apache ]"></a> <a href="http://www.centos.org/"><img src="images/poweredby.png" alt="[ Powered by CentOS Linux ]" height="31" width="88"></a></p> 
 +                                </div> 
 +                        </div> 
 +            </div> 
 +                </div> 
 +        </div> 
 +          <div class="footer"> 
 +      <div class="container"> 
 +        <div class="row"> 
 +          <div class="col-sm-6">           
 +            <h2>Important note:</h2> 
 +            <p class="lead">The CentOS Project has nothing to do with this website or its content, 
 +            it just provides the software that makes the website run.</p> 
 +             
 +            <p>If you have issues with the content of this site, contact the owner of the domain, not the CentOS project.  
 +            Unless you intended to visit CentOS.org, the CentOS Project does not have anything to do with this website, 
 +            the content or the lack of it.</p> 
 +            <p>For example, if this website is www.example.com, you would find the owner of the example.com domain at the following WHOIS server:</p> 
 +            <p><a href="http://www.internic.net/whois.html">http://www.internic.net/whois.html</a></p> 
 +          </div> 
 +          <div class="col-sm-6"> 
 +            <h2>The CentOS Project</h2> 
 +            <p>The CentOS Linux distribution is a stable, predictable, manageable and reproduceable platform derived from  
 +               the sources of Red Hat Enterprise Linux (RHEL).<p> 
 +             
 +            <p>Additionally to being a popular choice for web hosting, CentOS also provides a rich platform for open source communities to build upon. For more information 
 +               please visit the <a href="http://www.centos.org/">CentOS website</a>.</p> 
 +          </div> 
 +        </div> 
 +                  </div> 
 +    </div> 
 +  </div> 
 +</body></html> 
 +</code> 
 +Da wir bei unserem Request **Connection: close** angegeben hatten, wird die Verbindung zum Webserver wieder getrennt. 
 + 
 +<html><pre class="code">
 <font style="color: rgb(255, 0, 0)">Connection closed by foreign host.</font> <font style="color: rgb(255, 0, 0)">Connection closed by foreign host.</font>
 </pre></html> </pre></html>
  
-{{ :centos:web_c7:httpd_server_001.png?direct&300 |}} + 
-===== erster vHOST =====+ 
 +===== Anwendungen/WEB-Seiten ===== 
 +==== 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** //**var/www/html/**// unseres Web-Servers an. 
 +  # vim /var/www/html/index.html 
 +<code html><html> 
 +Unserer erste <b>html</b>-Testseite!<br> 
 +Weiter Informationen zum Apache-Webserver finden wir im <a href="https://dokuwiki.nausch.org/doku.php/centos:web_c7:start">Djangos Dokuwiki</a> ;) 
 +</html> 
 +</code> 
 + 
 +Nun können wir unsere erste eigene Webseite ansurfen, wie gewohnt mit dem Browser der WahlBeim Zugriffstest mit Hilfe von **telnet** gilt auch hier wiederum: "Die Eingaben am testenden Client sind in der Farbe <html><font style="color: rgb(0, 0, 255)"><b>blau </b></font></html>, die Rückmeldungen unseres Web-Servers in der Farbe <html><font style="color: rgb(0, 0, 0)"><b>schwarz</b></font></html> gekennzeichnet. Die Ausgaben des Befehls **telnet** sind in der Farbe <html><font style="color: rgb(255, 0, 0)"><b>rot</b></font></html> eingefärbt." 
 +   $ firefox www7.nausch.org 
 + 
 +   $ elinks www7.nausch.org 
 + 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 0, 0)">$ </font><font style="color: rgb(0, 0, 255)">telnet www7.nausch.org 80</font> 
 +<font style="color: rgb(255, 0, 0)">Trying 10.0.0.97... 
 +Connected to 10.0.0.97. 
 +Escape character is '^]'.</font> 
 +<font style="color: rgb(0, 0, 255)">GET / HTTP/1.1 
 +HOST:www7.nausch.org 
 +Connection: close 
 + 
 +</font><font style="color: rgb(0, 0, 0)">HTTP/1.1 200 OK 
 +Date: Fri, 29 Aug 2014 13:24:20 GMT 
 +Server: Apache/2.4.6 (CentOS) PHP/5.4.16 
 +Last-Modified: Fri, 29 Aug 2014 13:15:34 GMT 
 +ETag: "104-501c472c8a108" 
 +Accept-Ranges: bytes 
 +Content-Length: 260 
 +Connection: close 
 +Content-Type: text/html; charset=UTF-8 
 +</font></pre></html> 
 +<code><html> 
 +Dies ist unserer erste <b>html</b>-Testseite!<br> zum Testen der Konfiguration unseres Web-servers. 
 + 
 +Weiter Informationen zum Apache-Webserver finden wir in <a href="https://dokuwiki.nausch.org/doku.php/centos:web_c7:start">Djangos WIKI</a> ;) 
 +</html> 
 +</code> 
 +<html><pre class="code"> 
 +<font style="color: rgb(255, 0, 0)">Connection closed by foreign host.</font> 
 +</pre></html> 
 + 
 +Im Accesslog unseres Webservers sehen wir dann auch die erfolgreichen Zugriffe auf unsere erste **index.html**. 
 +<code syslog>...  
 + 
 +10.0.0.20 - - [29/Aug/2014:15:15:49 +0200] "GET / HTTP/1.1" 200 260 "-" "ELinks/0.12pre6 (textmode; Linux; 177x53-2)" 
 +10.0.0.20 - - [29/Aug/2014:15:16:36 +0200] "GET / HTTP/1.1" 200 260 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0" 
 +10.0.0.20 - - [29/Aug/2014:15:23:54 +0200] "GET /index.html HTTP/1.1" 200 260 "-" "-" 
 +10.0.0.20 - - [29/Aug/2014:15:24:20 +0200] "GET / HTTP/1.1" 200 260 "-" "-" 
 + 
 +... 
 +</code> 
 + 
 +==== erster (named based) vHOST ==== 
 +Unser Web-Sever soll später für unterschiedliche (Sub-)Domains Seiten ausliefern. Wir werden hierzu **[[http://httpd.apache.org/docs/current/vhosts/examples.html|Name based virual Hosts]]** oder kurz **vHOSTs** einsetzen. Eine detailierte Beschreibung hierzu findet man unter anderem auch in der Beschreibung zu **[[http://httpd.apache.org/docs/current/vhosts/name-based.html|Unterstützung namensbasierter virtueller Hosts]]**. 
 + 
 +Im folgendem Konfigurationsbeispiel wollen wir für die beiden Hostnamen **cam.mail-server.guru** und **test.mail-server.guru** einen Webserver konfigurieren, der die Seiten der beiden vHosts ausliefert. 
 + 
 +Zunächst legen wir uns auf unserem Server zwei Verzeichnisse für die beiden vHosts an. 
 +   # mkdir /var/www/vhost1 
 + 
 +   # mkdir /var/www/vhost2 
 + 
 +In den neuen Unterverzeichnissen stellen wir dann jeweils eine eigene **index-html**-Datei ein. 
 +   # vim /var/www/vhost1/index.html 
 +<file html /var/www/vhost1/index.html><html> 
 +<h1>vHost 1</h1> 
 +Dies ist die <b>index.html</b>-Startseite unseres ersten vHosts bzw. default-Host unseres Web-servers.<br> 
 +<br> 
 +Weitere Informationen zum Apache-Webserver finden wir im <a href="https://dokuwiki.nausch.org/doku.php/centos:web_c7:start">Djangos WIKI</a> ;) 
 +</html> 
 +</file> 
 + 
 +   # vim /var/www/vhost2/index.html 
 +<file html /var/www/vhost2/index.html><html> 
 +<h1>vHost 2</h1> 
 +Dies ist die <b>index.html</b>-Startseite unseres zweiten vHosts unseres Web-servers.<br> 
 +</html> 
 +</file> 
 + 
 +Wir haben also folgende Verzeichnis-Struktur. 
 +<code>/var/www/ 
 +├── cgi-bin 
 +├── html 
 +├── vhost1 
 +│   └── index.html 
 +└── vhost2 
 +    └── index.html 
 +</code> 
 + 
 +Was wir nun brauchen, ist die entsprechende Konfiguration(sdatei) für dieses Beispiel. Durch die Directive **IncludeOptional** in der Konfigurationsdatei //**/etc/httpd/conf/httpd.conf**// werden alle Dateien mit der Erweiterung **.conf** in alphabetischer Reihenfolge eingebunden. 
 +   # vim /etc/httpd/conf/httpd.conf 
 + 
 +<file bash /etc/httpd/conf/httpd.conf>... 
 + 
 +# Supplemental configuration 
 +
 +# Load config files in the "/etc/httpd/conf.d" directory, if any. 
 +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.  
 + 
 +Wir legen uns also für unseren ersten Host eine Date an. 
 +   # vim /etc/httpd/conf.d/80_test.mail-server.guru.conf 
 +<code apache /etc/httpd/conf.d/80_test.mail-server.guru.conf># 
 +# Django : 2014-08-29 
 +#          vHost test.sec-mail.guru 
 +
 + 
 +<VirtualHost *:80> 
 +    ServerAdmin webmaster@nausch.org 
 +    ServerName test.sec-mail.guru 
 +    ServerPath / 
 +    DocumentRoot "/var/www/vhost1" 
 + 
 +    <Directory "/var/www/vhost1"> 
 +        Options FollowSymLinks 
 +        AllowOverride none 
 +        Require all granted 
 +    </Directory> 
 + 
 +    DirectoryIndex index.html 
 +    ErrorLog logs/test.mail-server.guru_error.log 
 +    CustomLog logs/test.mail-server.guru_access.log combined 
 +</VirtualHost> 
 +</code> 
 + 
 +Und auch für unseren zweiten vHOST legen wir die nötige Konfigurationsdatei an. 
 +   # vim /etc/httpd/conf.d/80_test.mail-server.guru.conf 
 +<code apache /etc/httpd/conf.d/80_cam.mail-server.guru.conf># 
 +# Django : 2014-08-29 
 +#          vHost webcam.sec-mail.guru 
 +
 + 
 +<VirtualHost *:80> 
 +    ServerAdmin webmaster@nausch.org 
 +    ServerName webcam.sec-mail.guru 
 +    ServerAlias cam.sec-mail.guru 
 +    ServerPath / 
 +    DocumentRoot "/var/www/vhost2" 
 + 
 +    <Directory "/var/www/vhost2"> 
 +        Options FollowSymLinks 
 +        AllowOverride none 
 +        Require all granted 
 +    </Directory> 
 + 
 +    DirectoryIndex index.html 
 +    ErrorLog logs/webcam.mail-server.guru_error.log 
 +    CustomLog logs/webcam.mail-server.guru_access.log combined 
 +</VirtualHost> 
 +</code> 
 + 
 +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. 
 +   # apachectl -t 
 + 
 +   Syntax OK 
 + 
 +Da kein Syntax-Fehler gefunden wurde, führen wir einen Reload unseres Apache-WEB-Servers durch. 
 +   # 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/httpd/ 
 +├── 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 
 +</code> 
 + 
 +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 **//ServerAlias//**. 
 + 
 +Eine ausführliche Beschreibung und Dokumentationder einzelnen Konfigurations-Directiven und -Optionen findet man in der **[[http://httpd.apache.org/docs/2.4/de/vhosts/|Apache-Dokumentation zu virtuellen Hosts]]**. 
 + 
 +==== named based default vHOST ==== 
 +Setzen wir name-based-virtual-hosts ein, überprüft unser Webserver, ob im Request die IP-Adresse des Servers verwendet wurde. Anschließend werden dann alle <VirtualHost>-Abschnitte mit der benutzten IP-Adresse verglichen und geprüft, ob der gewählte Hostname zu einem ServerName oder der ServerAlias-Anweisung übereinstimmt. Bei einem positiven Ergebnis wird dann die konfiguration dieses vHOSTs verwendet, wie. z.B. in dem vorherigen Konfigurationsbeispiel. Wird jedoch kein passender vHOST gefunden, so wird die Konfiguration des ersten vHOSTS verwendet!  
 + 
 +<WRAP center round important> 
 +**Wichtig** \\ 
 +Da wir alle unsere vHOSTs in jeweils eigenen Dateien konfigurieren, ist es notwendig, dass wir dafür sorgen, dass die Konfigurationsdatei ganz am Anfang des Verzeichnisses steht, da der Apache-Webserver, die einzelnen Konfigurationsdateien im Verzeichnis **/etc/httpd/conf.d/** in alphabetischer Reihenfolge einliest. Wir erreichen das ganz einfach, in dem wir dem vHOST eingfach eine **10** im Dateinamen vorne an stellen. 
 +</WRAP> 
 + 
 + 
 +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://httpd.apache.org/docs/current/vhosts/examples.html#default|Using _default_ vhosts]]**. 
 + 
 +Wir legen uns also hierzu einen speziellen vHOST an. 
 +   # vim /etc/httpd/conf.d/10_default_vHost.conf 
 + 
 +<file apache /etc/httpd/conf.d/10_default_vHost.conf># 
 +# Django : 2014-08-29 
 +#          default vHost sec-mail.guru 
 +
 + 
 +<VirtualHost _default_:80> 
 +    ServerAdmin webmaster@nausch.org 
 +    ServerName sec-mail.guru 
 +    ServerAlias www.sec-mail.guru 
 +    ServerPath / 
 +    DocumentRoot "/var/www/default" 
 + 
 +    <Directory "/var/www/default"> 
 +        Options FollowSymLinks 
 +        AllowOverride none 
 +        Require all granted 
 +    </Directory> 
 + 
 +    DirectoryIndex index.html 
 +    ErrorLog logs/default-host_sec-mail.guru_error.log 
 +    CustomLog logs/default-host_sec-mail.guru_access.log combined 
 +</VirtualHost> 
 +</file> 
 + 
 +Auch hier testen wir, o sich nicht irgendwo ein Schreibfehler eingeschlichen hat. 
 +   # apachectl -t 
 + 
 +   Syntax OK 
 + 
 +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/httpd/PasswordBasicAuth|PasswordBasicAuth]]**. Die berechtigten Nutzer und die zugehörigen Passwörter sind in einer Konfigurationsdatei, die sich außerhalb des Webserverspeicherbereichs kurz //DocumentRoot// befindet. 
 + 
 +Mit Hilfe des Befehls **htpasswd** aus dem RPM **//httpd-tools//** verwalten wir die entsprechenden Userdaten. 
 + 
 +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 /etc/httpd/.htpasswd django@sec-mail.guru 
 + 
 +   New password:  
 +   Re-type new password: 
 + 
 +Das Passwort, welches wir 2x eingegeben hatten, wird standardmäßig als [[http://httpd.apache.org/docs/2.4/misc/password_encryptions.html|MD5-digest mit einem 32 salt]] gespeichert. Man erkennt dies an der Zeichenfolge **$apr1$**. 
 +   # cat /etc/httpd/.htpasswd 
 + 
 +   django@sec-mail.guru:$apr1$YyiOChB1$FoEbQKJ.lgbVrD4lh7CN2. 
 + 
 +Wollen wir einen weiteren Nutzerhinzufügen rufen wir den Befehl **htpasswd** __ohne__ den Parameter **-c** auf. 
 +   # htpasswd -/etc/httpd/.htpasswd django 
 + 
 +   New password:  
 +   Re-type new password: 
 + 
 +Es befinden sich nun zwei Anmeldenamen und deren zugehörigen verschlüsselten Passwörtern in der //**.htpasswd**//-Datei. 
 +   # cat /etc/httpd/.htpasswd 
 + 
 +   django:$apr1$4lnKyN.k$A6mfy5g6yxOgZWn9IcCNg. 
 +   django@sec-mail.guru:$apr1$YyiOChB1$FoEbQKJ.lgbVrD4lh7CN2. 
 + 
 +Haben wir alle Benutzer angelegt, geht es nun weiter mit der Konfiguration unseres vHOSTs. 
 + 
 +Beim betreffenden Beispiel, einem vHOST der die WEB-Anwendung **[[centos:mail_c7:pfadmin_1|PostfixAdmin]]** zur Verfügung stellt, tragen wir nun folgende Zeilen nach. 
 +   # vim /etc/httpd/conf.d/vhost_443_postfixadmin.conf 
 + 
 +<code bash>... 
 + 
 + # Django : 2014-09-08 Konfigurationsbeispiel zur Basic Authenifikation mit Hilfe 
 + # einer htpasswd-Datei 
 + <Location /> 
 + Options +FollowSymLinks +Multiviews +Indexes 
 + AllowOverride None 
 + AuthType basic 
 + AuthName "PostfixAdmin-Webserver" 
 + AuthUserFile /etc/httpd/.htpasswd  
 +    Require valid-user django django@sec-mail.guru 
 + </Location> 
 + 
 +... 
 +</code> 
 + 
 +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! 
 +</WRAP> 
 + 
 +==== LDAPs Authentifikation ==== 
 + 
 +{{page>centos:ldaps-auth-httpd&nofooter&noheader}} 
 + 
 +===== Logging ===== 
 +==== Ausnahme eines Hosts/IP-Adresse ==== 
 +Soll eine IP-Adresse bzw. ein Host vom Logging ausgeschlossen werden, verwenden wir folgendes Konfigurationsbeispiel, welches wir beim betreffenden vHost eintragen. 
 +   # vim 1st_vhost.conf 
 +<code>... 
 + 
 +    SetEnvIf  Remote_Addr "10\.0\.0\.27" dontlog 
 +    ErrorLog  logs/defaulthost_error.log 
 +    CustomLog logs/defaulthost_access.log combined env=!dontlog 
 + 
 +... 
 +</code> 
 + 
 +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. 
 ====== Links ====== ====== Links ======
   * **[[centos:web_c7:start|Zurück zum Kapitel >>Webserverinstallation<<]]**   * **[[centos:web_c7:start|Zurück zum Kapitel >>Webserverinstallation<<]]**
   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
- 
-~~DISCUSSION~~ 
  
  
  • centos/web_c7/apache_1.1409316396.txt.gz
  • Zuletzt geändert: 29.08.2014 12:46.
  • (Externe Bearbeitung)