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)
HTTPS in Apache 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
Proxy in Apache konfigurieren
Ein Proxy ermöglicht es, um auf einem neben einem Server-Dienst auch noch weitere Webseiten zu publizieren.
Nachfolgende Konfigurationsanleitung zeigt, wie ein Server-Dienst auf einem Port auf Localhost bereit gestellt wird, und Apache Webserver Anfragen an einen internen Virtual Host weiter leitet, der so konfiguriert ist, dass die Anfragen an den Port auf Localhost weiter geleitet werden.
Apache-Module aktivieren:
a2enmod proxy proxy_http proxy_wstunnel
sudo systemctl restart apache2
Konfiguration des Webservers:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName <subdomain.domain.tld> ServerAdmin webmaster@localhost SSLEngine on # SSLCertificateFile /etc/ssl/cert-selfsigned.pem SSLCertificateFile /etc/letsencrypt/live/<subdomain.domain.tld>/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/<subdomain.domain.tld>/privkey.pem ServerSignature Off ProxyPassMatch ^/(sockjs\/.*\/websocket)$ ws://127.0.0.1:3001/$1 ProxyPass /.well-known/acme-challenge ! ProxyPass / http://127.0.0.1:3001/ ProxyPassReverse / http://127.0.0.1:3001/ Alias /.well-known/acme-challenge /var/www/html/.well-known/acme-challenge <Directory "/var/www/html/.well-known/acme-challenge"> Options None AllowOverride None Require all granted AddDefaultCharset off </Directory> </VirtualHost> </IfModule>
Seite aktivieren:
a2ensite <subdomain.domain.tld-Konfigfile>
Apache neu starten:
systemctl restart apache2