Linux:Apache-Server: Unterschied zwischen den Versionen

Aus Alexander's Wiki
 
(22 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Der Apache2-Server wird (unter Ubuntu) über mehrere Konfigurationsdateien gesteuert. Sie liegen alle im Verzeichnis ''/etc/apache2''.
= Installation inkl. PHP und mySql=
<source lang="bash">
  sudo apt-get install apache2 php5 libapache2-mod-php mysql-server php5-mysql
</source>
 
= 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.
 
<source lang="bash">
  sudo chmod 0775 /var/www
  sudo chgrp -R www-data /var/www
</source>
 
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:
 
<source lang="bash">
  sudo adduser <benutzername> www-data
</source>
 
== <user_home>/public_html Directory aktivieren ==
 
In das Apache Module Konfigurationsverzeichnis wechseln:
 
<source lang="bash">
  cd /etc/apache2/mods-enabled
</source>
 
Um ''mod_userdir'' zu aktivieren, muss man die folgenden symbolischen Links hinzufügen:
 
<source lang="bash">
  sudo ln -s ../mods-available/userdir.load
  sudo ln -s ../mods-available/userdir.conf
</source>
 
Apache neu starten:
 
<source lang="bash">
  sudo apache2ctl restart
</source>
 
Ab jetzt können wir Webapplikationen aus dem Verzeichnis /home/username/public_html via http://localhost/~username/ starten


== apache2.conf ==
== apache2.conf ==
Zeile 8: Zeile 49:


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


   # Include all the user configurations:
   # Include ports listing:
   Include httpd.conf
   Include ports.conf


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


...
...
</source>
</source>


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. Für die php-Unterstützung sind das beispielsweise ''php5.conf'' und ''php5.load''.
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.
Im zweiten und dritten Abschnitt werden die beiden weiter unten erwähnten Dateien geladen.


== httpd.conf ==
<source lang="text">
...
 
  # Include the virtual host configurations:
  Include sites-enabled/
 
...
</source>
 
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 ==
== ports.conf ==
In der ''ports.conf'' werden die Ports angegeben auf den der Apache-Webserver hören soll.  Satndardmäß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 ([http://de.wikipedia.org/wiki/Transport_Layer_Security SSL]) vorhanden ist, denn dann wird auch Port 443 (https) aktiviert.
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 ([http://de.wikipedia.org/wiki/Transport_Layer_Security SSL]) vorhanden ist, denn dann wird auch Port 443 (https) aktiviert.


<source lang="text">
<source lang="text">
  NameVirtualHost *:80
   Listen 80
   Listen 80


  NameVirtualHost *:81
   Listen 81
   Listen 81


Zeile 42: Zeile 90:
   </IfModule>
   </IfModule>
</source>
</source>
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 ===
<source lang="text">
  <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>
</source>
=== 001-Port81 ===
<source lang="text">
  <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>
</source>
= Mod-Pakete =
== ModSecurity ==
[http://www.modsecurity.org/ Modsecurity.org]
== ModSSL ==
[http://www.schirmacher.de/display/INFO/Apache+SSL+Zertifikat+erstellen Apache+SSL+Zertifikat+erstellen]
https://www.ssllabs.com/ssltest/analyze.html?d=alexremote.no-ip.org
= weiterführende Links =
*[http://wiki.ubuntuusers.de/apache Ubuntu Wiki]

Aktuelle Version vom 23. November 2015, 07:53 Uhr

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