Webserver installieren (Debian)

Aus MattWiki

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

Zuletzt verwendet für Debian 8.0 mit Apache 2.4.10.

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	      # Benutzer www-data in Gruppe www-data anlegen
apt-get install apache2	

Konfigdateien bearbeiten: Auf Debian:

nano /etc/apache2/sites-enabled/000-default.conf

Folgende Zeile dekommentieren und eintragen:

ServerName server.domain.com

Optional Aliase einfügen:

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

SSL-Konfiguration bearbeiten:

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

Folgendes einfügen:

ServerAlias server www.domain.com 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/html

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 

PHP-Mail Installation

Für PHP-Skripte, die das PEAR Mail Package nutzen (PHP-Funktion "Mail()") wird noch folgendes Paket benötigt:

apt-get php-mail

MySQL / MariaDB Installation

Nachfolgende Anleitung zeigt die Installation für MySQL.

Alternativ kann auch stattdessen MariaDB als MySQL-Kompatibles Datenbanksystem benutzt werden - vgl. Anleitung weiter unten.

Installation MySQL

apt-get install mysql-server mysql-client

Alternative Installation MariaDB

apt-get install mariadb-server mariadb-client

Status der Datenbank überprüfen

service mysql status

phpMyAdmin

Installation

apt-get install 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/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

Zertifikat erstellen siehe Zertifikat erstellen (Debian)


DynDNS einrichten

Einrichtung von dynamischem DNS siehe Dynamisches DNS (Debian)


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/cert.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


Verzeichnisse mit Passwort schützen

Basic Authentication

adduser user1
emacs /etc/passwd                             # user1 auf /usr/sbin/nologin stellen
htpasswd -c /path/to/dir/.htpasswd user1   # -c = Neue htpasswd erstellen

Zusätzlich neue Config-Datei erstellen:

emacs /etc/apache2/conf-available/security-directories.conf

Mindest-Inhalt der Datei:

<Directory /path/to/dir/>
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /path/to/dir/.htpasswd
    Require valid-user
</Directory>

Zusätzliche Config-Datei aktivieren

a2enconf security-directories
service apache2 reload