Contents
Module
Python
Python kann ebenfalls als Modul in den Apache Webserver eingebunden werden. Das Python-Paket ist in der Standardinstallation von Ubuntu enthalten, es muss zusätzlich noch das Paket
libapache2-mod-python
installiert werden.
Modul aktivieren:
sudo a2enmod mod_python
Nun muss man mit eine Editor mit Root-Rechten [3] die Datei /etc/apache2/sites-available/default wie folgt editeren:
Ziemlich am Anfang der Datei steht
<Directory /var/www> ... </Directory>
Zwischen diese Direktive fügt man folgenden Text ein:
AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug on
Nach einem Neustart des Apache-Servers steht das Modul zur Verfügung.
Konfiguration
Der Apache Webserver lässt sich durch Editieren [3] der Dateien
/etc/apache2/apache2.conf
/etc/apache2/ports.conf
konfigurieren. Üblicherweise muss man hier nichts von Hand bearbeiten, es sei denn, man benötigt spezielle Konfigurationen.
Auf lokales System beschränken
Befindet sich der Rechner mit dem Server direkt im Internet - also nicht hinter einem Router - oder sollen andere Rechner aus dem lokalen Netzwerk nicht auf den Webserver zugreifen, so kann man den Zugriff über die /etc/apache2/ports.conf steuern. Trägt man z.B. anstelle von
listen 80
die Zeile
listen 127.0.0.1:80
ein und startet den Webserver neu, so kann man den Webserver nur noch lokal ansprechen
Virtuelle Hosts einrichten
Apache kann auch so konfiguriert werden, dass er für unterschiedliche Hostnamen verschiedene Inhalte liefert. Dies wird als Virtual Hosting bezeichnet und ist nützlich um viele Websites auf einem Apache-Webserver zur Verfügung zu stellen. (z.B.: Papi hat einen Webserver für die Firma und der kleine Sohn "Maxi" will ein Forum für sich und seine Freunde einrichten.)
Namensbasierte virtuelle Hosts
Namensbasierte Virtuelle Hosts sind die gängigste Methode zur Konfiguration virtueller Hosts und werden für eine gemeinsame IP-Adresse eingerichtet. Apache entscheidet anhand des HTTP-Headers welche Site ausgeliefert wird. Im Verzeichnis /etc/apache2/sites-available/ befindet sich die Datei default diese kann man als Vorlage für die weiteren virtuelle Hosts verwenden. Für jeden virtuellen Host wird dann eine Datei angelegt.
/etc/apache2/sites-available/default:
NameVirtualHost *
# Hauptserver
<VirtualHost *>
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
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</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
ServerSignature On
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>Man öffnet also die Datei /etc/apache2/sites-available/default und speichert diese unter einem anderen Namen (z.B.: maxisforum) im Verzeichnis /etc/apache2/sites-available/. Nun editiert man folgende Einträge. Die erste Zeile
NameVirtualHost *
wird gelöscht
Nach dem Eintrag
<VirtualHost *>
wird
ServerName mydomain.at
eingetragen (natürlich mit der eigenen Domain statt "mydomain.at"). Nun noch den DocumentRoot ändern. Z.B.:
DocumentRoot /var/maxisforum/
Natürlich muss dass im DocumentRoot angegebene Verzeichnis auch erstellt werden. Auch der Eintrag
<Directory /var/www/>
muss auf das neue Verzeichnis geändert werden.
So sollte die neue virtual Host-Datei nun aussehen(hier für das Beispiel mit Maxi's Forum:)
<VirtualHost *>
ServerName maxisforum.dyndns.org
ServerAdmin webmaster@localhost
DocumentRoot /var/maxisforum/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/maxisforum/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# Uncomment this directive is you want to see apache2's
# default start page (in /apache2-default) when you go to /
#RedirectMatch ^/$ /apache2-default/
</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
ServerSignature On
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>Nun ist die Site verfügbar (available) aber noch nicht aktiviert (enabled). Das wird mit dem Befehl
sudo a2ensite <virtualhostdateiname>
gemacht.
Natürlich kann man die Seite auch wieder deaktivieren mit dem Befehl:
sudo a2dissite
Auf diese Weise können viele Websites mit verschiedenen Domains, die alle ein und die selbe IP-Adresse haben, erreicht werden.
Probleme
Sollte man beim Starten/Stoppen des Servers folgende Fehlermeldung {{{Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName }}} bekommen, so muss man in /etc/apache2/apache2.conf folgendes eintragen: {{{ServerName localhost }}} Falls es z.B. bei der Übertragung von Formulardaten Probleme mit dem Zeichensatz geben sollte, kann die Lösung darin bestehen, den Standardzeichensatz in der Datei /etc/apache2/conf.d/charset von UTF-8 auf ISO-8859-1 zu ändern (als root) und dann den Apache-Server neu zu starten. Eine Kontrolle über phpinfo() sollte diese Änderung bestätigen (HTTP Headers Information > HTTP Response Headers > Content-Type > charset).
Webseiten ablegen
Das Server Root Verzeichnis des Apache Webservers liegt in /var/www/. Legt man dort Dateien ab, so können diese mit
im Browser aufgerufen werden. Darüber hinaus können auch die einzelnen Benutzer des Rechners innerhalb ihres Homeverzeichnisses das Unterverzeichnis ~/public_html erstellen. Dieses wird automatisch vom Webserver eingebunden und ist unter der URL
zu erreichen. Dabei muss man beachten, dass der Benutzer "www-data", unter dem Apache läuft, auf die Daten zugreifen muss. Daher müssen die Leserechte nach dem Kopieren überprüft werden. Schreibrechte sollten nur dort gesetzt werden, wo der Webserver auch wirklich schreiben muss. Zu freizügig gesetzte Schreibrechte stellen eine Sicherheitslücke dar. Mehr zu Thema Dateirechte findet man [:ubu:Rechte|hier] im Wiki.
mod_userdir aktivieren
Ab Ubuntu Feisty Fawn 7.04 wird das dafür nötige Modul von Apache nicht mehr automatisch aktiviert. Daher können Webseiten, die in den Homeverzeichnissen der Benutzer abgelegt sind, nicht mehr sofort von Apache geöffnet werden. Das Modul wird bei der Installation von Apache mitinstalliert. Man muss es nur mittels dem Befehl [2]
sudo a2enmod userdir
aktivieren und dann den Webserver über
sudo /etc/init.d/apache2 force-reload
die Konfiguration neu einlesen lassen.
Apache Server steuern
Wie alle anderen Dienste bringt Apache Start/Stop-Skripte mit. Diese Skripte lassen sich natürlich auch zum Kontrollieren des Webservers gebrauchen.
# Allgemein
sudo /etc/init.d/apache2 {start|stop|restart|reload|force-reload}
# Beispiel
sudo /etc/init.d/apache2 restart"start" - Startet den Webserver
"stop" - Stoppt den Server
"restart" und "force-reload" - Startet den Server neu, bestehende Verbindungen auf den Server werden gekappt
"reload" - Lädt die Konfigurationsdateien neu, ohne dass Verbindungen getrennt werden
Um den Autostart des Webservers zu verhindern:
sudo update-rc.d -f apache2 remove
Autostart wieder aktivieren:
sudo update-rc.d apache2 defaults
Dokumentation
Hat man das Paket apache2-doc installiert, so hat Ubuntu die komplette Apache2-Anleitung auf die Festplatte kopiert. Diese lässt sich dann wie die gewöhnliche Apache-Doku im Netz im Browser öffnen. Die URL dazu ist:
Möchte man sich nicht die ganze Anleitung auf die Festplatte kopieren, so ist diese selbstverständlich auch im Netz unter
erreichbar.
Links
XAMPP für Linux {de}
ApacheMySQLPHP {en} eine sehr gute Anleitung im Ubuntu-Wiki u.a.mit Hilfe zur Absicherung des lokalen Testservers und weiteren Seiten wie z.B. Einrichten von Subdomains auf dem Localhost {en}
# tag: Internet, Netzwerk, Server, apache