Webserver installieren (Debian)

Aus MattWiki

Anleitung für die Installation eines Linux-basierten Webserver mit Apache, MySQL und PHP (LAMP).

Voraussetzungen

Vorbereitungen

Feste IP-Adresse vergeben

Siehe Netzwerk einrichten (Debian)

Sources List aktualisieren

nano /etc/apt/sources.list

Folgende Zeilen (DE-Sources) hinzufügen:

deb http://ftp.de.debian.org/debian stable main contrib

deb http://ftp.debian.org/debian/ wheezy-updates main contrib

Danach noch ausführen: apt-get update

Apache Installation

groupadd www-data
usermod -a -G www-data www-data	
apt-get install apache2	

Konfigdateien bearbeiten

nano /etc/apache2/apache2.conf

Am Ende folgendes eintragen:

ServerName server.domain.com

nano /etc/apache2/sites-available/default

Folgendes einfügen:

ServerAlias server server.domain.com (Unklar, ob tatsächlich notwendig)

nano /etc/apache2/sites-available/default-ssl

Folgendes einfügen:

ServerAlias server server.domain.com (Unklar, ob tatsächlich notwendig)

Noch ausführen (unbekannt, wofür - evtl. für Owncloud?):

a2enmod rewrite
a2enmod headers

Apache Web-Rootverzeichnis /var/www/

Beim Aufruf von https://www.example.com/ sollte der Server antworten:

It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.

PHP Installation

apt-get install php5 php5-gd php5-curl php5-mysql php5-intl php-xml-parser  php-pear php-apc curl libcurl3 

MySQL Installation

apt-get install mysql-server mysql-client php5-mysql
mysql restart

phpMyAdmin

Installation

apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin

phpMyAdmin mit Apache verbinden, falls nicht in den Dateien in /etc/php5/apache2/conf.d/???-mysql???.ini bereits geschehen.

nano /etc/php5/apache2/php.ini

Neue Zeile im Bereich "Dynamic Extensions" hinzufügen:

extension=mysql.so

Zugriff auf lokales Netz beschränken

Konfigdatei öffnen:

nano /etc/apache2/conf.d/phpmyadmin.conf

(Symlink auf /etc/phpmyadmin/apache.conf)

Folgenden Abschnitt einsetzen (und bestehendes überschreiben):

<Directory /usr/share/phpmyadmin>
	Options FollowSymLinks
	DirectoryIndex index.php
	Order Deny,Allow
	Deny from all
	Allow from 192.168.1.0/24  <- Hier natürlich euer Netzwerk rein
	<IfModule mod_php5.c>

phpMyAdmin aufrufen über: http://ip-adresse-deines-servers/phpmyadmin/

Selbst signiertes Zertifikat erzeugen

Evtl. Standardpfad verwenden? Standardpfad ist vermutlich /etc/ssl/xxx


mkdir -p /etc/apache2/ssl

openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/cert.pem -keyout /etc/apache2/ssl/cert.pem

Folgende Werte eingeben: Country Name: DE State or Province: . ("." entspricht "leer") Locality Name: . Organization Name: . Organizational Unit Name: . Common Name (FQDN-Name): domain.tld E-Mail Address: webmaster@localhost

ln -sf /etc/apache2/ssl/cert.pem /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < /etc/apache2/ssl/cert.pem`

chmod 600 /etc/apache2/ssl/cert.pem

Zertifikat überprüfen:

openssl x509 -noout -in cert.pem -issuer -subject -dates -fingerprint

Apache für HTTPS einrichten

Schritt 1: Standardkonfiguration erweitern

nano /etc/apache2/ports.conf

Folgendes muss mindestens vorhanden sein:

NameVirtualHost *:80
Listen 80

<fModule mod_ssl.c> 
	Listen 443 
</IfModule>

Anschließend ausführen:

service apache2 restart

Nun muss das SSL (Secure Socket Layer für die sichere Verbindung) aktiviert und der Webserver nochmals neu geladen werden:

a2enmod ssl
service apache2 restart

Schritt 2: SSL-Site konfigurieren

nano /etc/apache2/sites-available/default-ssl

Folgende Zeilen müssen vorhanden sein.

<VirtualHost *:443>  oder <VirtualHost _default_:443>
	SSLEngine On 
	SSLCertificateFile /etc/apache2/ssl/apache.pem 
	DocumentRoot /var/www 
</virtualhost>

Wenn die .pem-Datei den privaten Key und das Zertifikat enthält, dann kann man die folgende Zeile auskommentieren:

# SSLCertificateKeyFile xxx

Site aktivieren und Apache neu starten:

a2ensite default-ssl
service apache2 reload