Webserver installieren (Debian): Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge) |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(21 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Anleitung für die Installation eines Linux-basierten Webserver mit Apache, MySQL und PHP (LAMP). | 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 == | == Vorbereitungen == | ||
=== Feste IP-Adresse vergeben === | === Feste IP-Adresse vergeben === | ||
Siehe [[Netzwerk einrichten (Debian)]] | Siehe [[Netzwerk einrichten (Debian)]] | ||
Zeile 22: | Zeile 21: | ||
== Apache Installation == | == Apache Installation == | ||
<nowiki>groupadd www-data | <nowiki>groupadd www-data | ||
usermod -a -G www-data www-data | usermod -a -G www-data www-data # Benutzer www-data in Gruppe www-data anlegen | ||
apt-get install apache2 </nowiki> | apt-get install apache2 </nowiki> | ||
Konfigdateien bearbeiten | Konfigdateien bearbeiten: Auf Debian: | ||
nano /etc/apache2/sites-enabled/000-default.conf</code> | |||
Folgende Zeile dekommentieren und eintragen: | |||
ServerName server.domain.com | 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: | Folgendes einfügen: | ||
ServerAlias server server.domain.com (Unklar, ob tatsächlich notwendig) | ServerAlias server www.domain.com server.domain.com (Unklar, ob tatsächlich notwendig) | ||
Noch ausführen (unbekannt, wofür - evtl. für Owncloud?): | Noch ausführen (unbekannt, wofür - evtl. für Owncloud?): | ||
Zeile 51: | Zeile 50: | ||
Apache Web-Rootverzeichnis | Apache Web-Rootverzeichnis | ||
<code>/var/www/</code> | <code>/var/www/html</code> | ||
Beim Aufruf von https://www.example.com/ sollte der Server antworten: | Beim Aufruf von https://www.example.com/ sollte der Server antworten: | ||
Zeile 61: | Zeile 60: | ||
== PHP Installation == | == PHP Installation == | ||
apt-get install php5 php5-gd php5-curl php5-mysql php5-intl php-xml-parser php-pear php-apc curl libcurl3 | apt-get install php5 php5-gd php5-curl php5-mysql php5-intl php-xml-parser php-pear php-apc curl libcurl3 | ||
== MySQL Installation == | == PHP-Mail Installation == | ||
Für PHP-Skripte, die das PEAR Mail Package nutzen (PHP-Funktion "Mail()") wird noch folgendes Paket benötigt: | |||
mysql | 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 == | == phpMyAdmin == | ||
=== Installation === | === Installation === | ||
<nowiki>apt-get install | <nowiki>apt-get install php5-mysql phpmyadmin</nowiki> | ||
phpMyAdmin mit Apache verbinden, falls nicht in den Dateien in <code>/etc/php5/apache2/conf.d/???-mysql???.ini</code> bereits geschehen. | phpMyAdmin mit Apache verbinden, falls nicht in den Dateien in <code>/etc/php5/apache2/conf.d/???-mysql???.ini</code> bereits geschehen. | ||
Zeile 76: | Zeile 91: | ||
Neue Zeile im Bereich "Dynamic Extensions" hinzufügen: | Neue Zeile im Bereich "Dynamic Extensions" hinzufügen: | ||
<code>extension=mysql.so</code> | <code>extension=mysql.so</code> | ||
=== Zugriff auf lokales Netz beschränken === | === Zugriff auf lokales Netz beschränken === | ||
Konfigdatei öffnen: | Konfigdatei öffnen: | ||
<code>nano /etc/ | <code>nano /etc/phpmyadmin/apache.conf</code> | ||
Folgenden Abschnitt einsetzen (und bestehendes überschreiben): | 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/ | phpMyAdmin aufrufen über: http://ip-adresse-deines-servers/phpmyadmin/ | ||
== Selbst signiertes Zertifikat erzeugen == | == 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 === | === Schritt 1: Standardkonfiguration erweitern === | ||
<code>nano /etc/apache2/ports.conf</code> | <code>nano /etc/apache2/ports.conf</code> | ||
Zeile 156: | Zeile 154: | ||
Wenn die .pem-Datei den privaten Key und das Zertifikat enthält, dann kann man die folgende Zeile auskommentieren: | 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: | Site aktivieren und Apache neu starten: | ||
a2ensite default-ssl | |||
service apache2 reload</ | service apache2 reload | ||
[[Category: | == 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 | |||
[[Category:Linux]] | |||
[[Category:LAMP]] | |||
[[Category:Kryptographie]] |
Aktuelle Version vom 28. Dezember 2018, 01:05 Uhr
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