• Teilen
  • Bookmark "Apache Webserver" auf del.icio.us
  • Bookmark "Apache Webserver" auf Digg
  • Bookmark "Apache Webserver" auf Reddit
  • Bookmark "Apache Webserver" auf StumbleUpon
  • Bookmark "Apache Webserver" auf Facebook
  • Bookmark "Apache Webserver" auf Twitter
  • Bookmark "Apache Webserver" auf Slashdot

Apache Webserver

In dieser Anleitung wird auf erweiterte Konfigurationsmöglichkeiten des Apache2 Webservers wie V-Hosts, Aliase und SSL eingegangen. Als Basis für jetzt folgende Konfigurationsmöglichkeiten wird vorausgesetzt, dass die Anleitung LAMP - Webserver mit mySQL und PHP auf dem Server erfolgreich umgesetzt wurde. Natürlich ist PHP oder mySQL nicht zwingend notwendig, aber zumindest der Apache Webserver sollte funktionieren.

Softwarevoraussetzungen: bereits installierter Apache (siehe LAMP) | Texteditor
Schwierigkeitsgrad: Mittel
Ausgetestet mit folgenden Betriebssystemen: Ubuntu (Jaunty, Karmic, Lucid, Lucid++) | Debian (Lenny, Squeeze) | teilweise auch andere Distributionen

Achtung! sudo: In dieser Anleitung verdeutlicht der Befehl sudo, dass die folgende Codezeile mit Root-Rechten ausgeführt werden muss. In normalen Ubuntu Installationen (Root-/VServer siehe Debian) kann dies durch den Befehl sudo erreicht werden.
Bei Debian wird bei der Installation ein Passwort für den Root-Benutzer festgelegt, so kann man sich entweder direkt als Root oder als „normaler“ Benutzer mit Eingabe von su als Root einloggen (Root-Passwort benötigt) → sudo bleibt dann überflüssig!

V-Host - Konfiguration

Vhost ermöglichen es, dass der Webserver abhängig von der Domain, über die er erreicht wird andere Webseiten zu zeigen.
Beispiel: der Webserver hört auf die IP 87.134.213.6, auf diese Domain sind zwei Domains eingetragen, wenn nun der Server unter Domain1 erreicht wird gibt er eine andere Seite aus, als wenn er über Domain2 erreicht wird.
Ebenfalls gibt es noch Aliase, die es ermöglichen Dateien/Verzeichnisse außerhalb des Webserverroots einzubinden.

Vhosts

Verfügbare Vhosts liegen in /etc/apache2/sites-available/, aktivierte in /etc/apache2/sites-enabled/. Normalerweise legt man einen neuen Vhost immer in /etc/apache2/sites-available/ an und aktiviert ihn dann mit dem Apache-Tool a2ensite, deaktivieren kann man ihn dann wieder mit a2dissite:

user@server:~$ sudo a2ensite vhost               #aktiviert den Vhost
 
user@server:~$ sudo a2dissite vhost              #deaktiviert den Vhost
user@server:~$ sudo a2dissite 000-vhost          #Achtung: unter Umständen setzt Apache ein "000-" davor

Also legt man in /etc/apache2/sites-available/ ein neue Datei mit dem Vhostnamen an. Standardmäßig liegt bereits der Vhost default vor, dieser ist bereits aktiviert. Natürlich kann man auch mehrere Vhost in einer Datei definieren.

Beispiel

Unser Server hat den Vhost default, diesen Inhalt sieht folgender maßen aus:

<VirtualHost *:80>
	ServerAdmin webmaster@localhost

	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>
	<Directory /var/www/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
	<Directory "/usr/lib/cgi-bin">
		AllowOverride None
		Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
		Order allow,deny
		Allow from all
	</Directory>

	ErrorLog /var/log/apache2/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

	CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Aufbau eines Vhosts

Interessant ist in unserem Fall als erstes der Vhost Bereich:

<VirtualHost *:80>         # *=alle Interfaces    :80=Port 80
</VirtualHost>

Angenommen der Vhost sollte nur über ein Interface mit der IP 192.168.2.1 erreichbar sein und auf Port 81 lauschen, dann müsste der Vhost Bereich wie folgt aussehen:

<VirtualHost 192.168.2.1:81>         
</VirtualHost>

Um auf anderen Ports zu lauschen muss in /etc/apache2/ports.conf noch in folgender Art der Port und die IP hinzugefügt werden:

NameVirtualHost IP/*:PORT
Listen PORT

Also mit Port 81:

NameVirtualHost 192.168.2.1:81
Listen 81


Danach folgen wichtige Anweisung, wir nennen diese einfach einmal Header:

ServerAdmin root@mein.homelinux.com                  #E-Mail des Serveradmins
ServerName  mein.homelinux.com                       #Für diese Domain ist der Vhost primär zuständig, hier kann auch eine IP  eingetragen werden
ServerAlias mein.homelinux.com                       #Weitere Domains (Aliase), für die der Vhost gelten soll
DocumentRoot /var/www                                #Webserverroot (wo liegt die Webseite, die auf dem Vhost läuft im Dateisystem)

anschließend folgen wichtige Anweisungen und Direktiven, die man aus dem default Host entnimmt und anpasst:

<Directory />
 Options FollowSymLinks
 AllowOverride None
</Directory>
<Directory /var/www/>                                 #/var/www/ durch Webserverrot ersetzen ()
 Options Indexes FollowSymLinks MultiViews            #bei Bedarf anpassen (siehe Apache Webseite)
 AllowOverride None
 Order allow,deny
 allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/               #Scriptalias
 <Directory "/usr/lib/cgi-bin">
   AllowOverride None
   Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
   Order allow,deny
   Allow from all
 </Directory>

ErrorLog /var/log/apache2/error.log                   #Errorlog (kann auch angepasst werden)

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn                                         #Loglevel (auch anpassen)

CustomLog /var/log/apache2/access.log combined        #Alle Anfragen werden hier protokolliert

Alias /doc/ "/usr/share/doc/"                         #Dokumentation (nur von localhost erreichbar)
 <Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
 </Directory>


Wichtig ist, dass der ganze Vhost diesem Aufbau folgt:

<VirtualHost *:80>
#"Header" (Erklärung siehe oben)
ServerAdmin              
ServerName                       
ServerAlias         
DocumentRoot 
#..und nun die Direktiven (von oben übernehmen)
                     
</VirtualHost>

Vhost aktivieren und Apache neustarten

Hinweis: falls der Vhost in einer bereits aktivierten Vhost Datei eingefügt wurde, muss man ihn nicht mehr akivieren, da dieser Schritt lediglich Apache sagt, dass es eine neue Vhost Datei gibt! Ein Neustart/Reload des Apaches ist trotzdem zwingend notwendig!




Nun, wenn man den Vhost angelegt hat, aktiviert man diesen:

user@server:~$ sudo a2ensite VHOST   #VHOST durch den Dateinamen der Vhost Datein in /etc/apache2/sites-available/ ersetzen

und startet Apache neu:

user@server:~$ sudo /etc/init.d/apache2 restart

aus eventuellen Fehlermeldungen kann man nun den Grund entnehmen.

Hinweis:

  • Sollte der Webserver über einen nicht definierten Vhost angesprochen werden, wird er den ersten Vhost nehmen (nach dem Alphabet)
  • Bei Änderungen an den Konfigurationsdateien genügt auch ein reload (statt restart)

Aliase

Aliase ermöglichen es Verzeichnisse, die nicht im Webserverroot sind einzubinden, bzw. im Webserverroot vorhandene Verzeichnisse unter anderen URLs erreichbar zu machen.
Dabei muss man sich den Alias wie einen Link von dem Verzeichnis, das einzubinden ist in das Webserveroot vorstellen. Der Alias gibt dann an, wo der virtuelle Link im Webserverroot ist. Aliase kommen zwischen den Vhost Bereich:

<VirtualHost IP/*:PORT>
#hier hin
</VirtualHost>

und definieren sich so:

Alias /einAlias "/Verzeichnis/im/Dateisystem/"      
 <Directory "/Verzeichnis/im/Dateisystem/">
  #zusätzliche Direktiven
 </Directory>

Hier wäre das Verzeichnis /Verzeichnis/im/Dateisystem/ unter http://server/einAlias erreichbar

Beispiel für einen einfachen Alias:

Alias /meinewebsite "/home/user/website/"       # "einAlias" wird durch
 <Directory "/home/user/website/">
  Options Indexes FollowSymLinks MultiViews
  AllowOverride FileInfo
  Order allow,deny
  allow from all
 </Directory>

In diesem Fall wäre der Inhalt des Verzeichnisses /home/user/website über http://server/meinewebsite erreichbar

Weitere Möglichkeiten

Hier wurden nur ein kleiner Bruchteil aller möglichen Konfigurationsmöglichkeiten im Bereich eines Vhosts eingegangen, falls du mehr Infos benötigst besuche die offizielle Apache Dokumentationsseite.

SSL

Um den Apache mit SSl zu konfigurieren, empfehle ich die Anleitung auf Ubuntuusers.de: Klick mich
Allerdings liegt dort kein kompletter SSL Vhost vor, deshalb hier ein Beispiel:

<VirtualHost *:443>
ServerAdmin ich@loaclhost          #anpassen
ServerName                         #Servername
ServerAlias                        #Domains, IPs unter denen der Vhost erreichbar ist
DocumentRoot /var/www              #bei bedarf anpassen
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        
        <Directory /var/www/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
	#skripte
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

	#log
        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

	#doku
    	Alias /doc/ "/usr/share/doc/"
    	<Directory "/usr/share/doc/">
        	Options Indexes MultiViews FollowSymLinks
        	AllowOverride None
        	Order deny,allow
        	Deny from all
        	Allow from 127.0.0.0/255.0.0.0 ::1/128
    	</Directory>

</VirtualHost>

Module

Für den Apache Webserver gibt es Erweiterungen. Diese werden mods genannt.
Hier im Wiki ist der mod Webdav näher erläutert:

Natürlich gibt es zahlreiche mehr - am Besten kann man sich über diese informieren, wenn man in der Paketverwaltung (Synaptic) nach libapache2-mod sucht und die Informationen zu den einzelnen Paketen durchliest.
Nach der Installation des Mods sollte man jenen noch aktivieren und Apache neustarten:

user@server:~$ sudo apt-get install libapache2-mod-modname     #Installation eines Mods; "modname" durch den Namen des Mods ersetzten
user@server:~$ sudo a2enmod modname                            #Aktivieren des Mods; "modname" durch den Namen des Mods ersetzten
user@server:~$ sudo /etc/init.d/apache2 restart                #apache neustarten

Beispiel: mod_rewrite

Der mod_rewrite ist standardmäßig bereist installiert und muss nur noch aktiviert werden:

user@server:~$ sudo a2enmod rewrite

Der Vhost muss wie folgt angepasst werden:

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All                              #das muss meistens geändert werden
                Order allow,deny
                allow from all
        </Directory>

danach sollte Apache neugestartet werden:

user@server:~$ sudo /etc/init.d/apache2 restart

Anschließend kann man im Webserverroot mit der Datei .htaccess (muss im Webserverroot des Vhosts liegen) URLs umschreiben. Wie das geht erfährst du in der Apache Doku.


chrisge 2011/08/05 22:28

Diskussion

Geben Sie Ihren Kommentar ein. Wiki-Syntax ist zugelassen:
YSHUM
 
  • Teilen
  • Bookmark "Apache Webserver" auf del.icio.us
  • Bookmark "Apache Webserver" auf Digg
  • Bookmark "Apache Webserver" auf Reddit
  • Bookmark "Apache Webserver" auf StumbleUpon
  • Bookmark "Apache Webserver" auf Facebook
  • Bookmark "Apache Webserver" auf Twitter
  • Bookmark "Apache Webserver" auf Slashdot
Sonstiges
Drucken/exportieren
Archiv

Archivierter Inhalt der alten Seite