Linux:Apache-Server

Aus Alexander's Wiki

Installation inkl. PHP und mySql

  sudo apt-get install apache2 php5 libapache2-mod-php mysql-server php5-mysql

Apache Grundkonfiguration

Der Apache2-Server wird (unter Ubuntu) über mehrere Konfigurationsdateien gesteuert. Sie liegen alle im Verzeichnis /etc/apache2. Das Wurzelverzeichnis für die HTML-Seiten liegt i.d.R. in /var/www. Nicht in jeder Ubuntu-Version hat das Verzeichnis /var/www die richtigen Rechte gesetzt. Daher ist es sinnvoll, folgende Befehle aufzuführen, welche dafür sorgen, dass sowohl der Systembenutzer www-data als auch die Gruppe www-data Schreibrechte auf dieses Verzeichnis bekommen.

  sudo chmod 0775 /var/www
  sudo chgrp -R www-data /var/www

Um als normaler Benutzer Dateien in /var/www anlegen oder bearbeiten zu können, wird der gewünschte Benutzer zur Gruppe www-data hinzugefügt:

  sudo adduser <benutzername> www-data

<user_home>/public_html Directory aktivieren

In das Apache Module Konfigurationsverzeichnis wechseln:

  cd /etc/apache2/mods-enabled

Um mod_userdir zu aktivieren, muss man die folgenden symbolischen Links hinzufügen:

  sudo ln -s ../mods-available/userdir.load
  sudo ln -s ../mods-available/userdir.conf

Apache neu starten:

  sudo apache2ctl restart

Ab jetzt können wir Webapplikationen aus dem Verzeichnis /home/username/public_html via http://localhost/~username/ starten

apache2.conf

Die apache2.conf ist eigentlich die zentrale Konfigurationsdatei für den Apache2-Webserver. Durch die vielen Einstellmöglichkeiten ist sie aber zu groß geworden und verweist an vielen Stellen auf andere Konfigurationsdateien. So z.B.:

...

  # Include module configuration:
  IncludeOptional mods-enabled/*.load
  IncludeOptional mods-enabled/*.conf

  # Include ports listing:
  Include ports.conf

  # Include generic snippets of statements:
  IncludeOptional conf-enabled/*.conf

...

Der erste Abschnitt verweist auf die Module, die Apache2 verwenden soll. Das ist hier gleich ein ganzes Verzeichnis. Wenn man neue Module benötigt, braucht man nur die entsprechende .load und .conf-Dateien aus dem Verzeichnis mods-available in das Verzeichnis mods-enabled kopieren, besser verlinken. Für die php-Unterstützung sind das beispielsweise php5.conf und php5.load.

Im zweiten und dritten Abschnitt werden die beiden weiter unten erwähnten Dateien geladen.

...

  # Include the virtual host configurations:
  Include sites-enabled/

...

Dieser Abschnitt verweist in das Verzeichnis sites-enabled, wo die Webseiten-Konfiguration vorgenommen wird. Sonst beinhaltet die apache2.conf nur Einstellungen wie und wo geloggt werden soll und unter welchen Rechten der Server laufen soll. Die Beschreibungen in der Konfigurationsdatei sind dazu selbsterklärend.

ports.conf

In der ports.conf werden die Ports angegeben auf den der Apache-Webserver hören soll. Standardmäßig ist das Port 80 (der erste Eintrag). Ich habe noch den Port 81 (der zweite Abschnitt) für Testzwecke hinzugefügt. Im dritten Abschnitt wird getestet, ob das Verschlüsselungsmodul (SSL) vorhanden ist, denn dann wird auch Port 443 (https) aktiviert.

  Listen 80

  Listen 81

  <IfModule mod_ssl.c>
    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443
  </IfModule>

Man kann natürlich auch eine Beschränkung auf bestimmte Rechner durchführen. Dann muss die IP mit angegeben werden, beispielsweise Listen 127.0.0.1:81 lässt nur den Rechner zu auf dem der Apache installiert ist.

sites-enabled

000-default

  <VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName aah253.braunschweig.bba.intern

	DocumentRoot /var/www/produktiv
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</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>

        AddDefaultCharset UTF-8

  </VirtualHost>

001-Port81

  <VirtualHost *:81>
	ServerAdmin webmaster@localhost

	DocumentRoot /var/www/testumgebung
	<Directory />
		Options +FollowSymLinks +Indexes
		AllowOverride None
	</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


        AddDefaultCharset UTF-8
  </VirtualHost>

Mod-Pakete

ModSecurity

Modsecurity.org

ModSSL

Apache+SSL+Zertifikat+erstellen


https://www.ssllabs.com/ssltest/analyze.html?d=alexremote.no-ip.org

weiterführende Links