Webserver installieren (Debian)
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