--- still under construction ---
Die klassische Abkürzung woraus ein Webserver besteht
ist LAMP (Linux, Apache, MySQL, PHP).
Zum betreiben eines Web-Servers wird ein Betriebssystem benötigt.
Da solche Web-Seiten schon mal gehackt werden können, sollte,
zwecks Kapselung, nicht das eigene Betriebssystem,
sondern ein virtualisiertes
Betriebssystem verwendet werden.
Da ein Web-Server meist 24h/7 im Betrieb ist und remote erreichbar sein sollte,
sind mindestens ssh, public-key & fail2ban
zu empfehlen.
Über DSL eine eigene Web-Seite anzubieten, würde ich nur bedingt empfehlen.
Zum einen ändert sich täglich meine IP-Adresse
→ weitere Kompensations-Maßnahmen erforderlich
und zum anderen werde ich mit vielen Hack-Versuchen konfrontiert.
Da haben professionelle Anbieter - Hoster einfach mehr Erfahrung.
Was ich aber empfehlen kann, ist lokal eine Webseite aufzubauen
und wenn dann alles wie gewünscht läuft,
können die Seiten z.B. per filezilla auf einen Hoster kopiert werden.
Somit habe ich zum einen einen Vorabtest und zum anderen ein Backup.
Für einen Web-Server benötigt das darunter liegende Linux
keine grafische Oberfläche. Aber manche grafischen Tools wie
Filezilla, Bluefish, Thunar, etc. möchte man vielleicht nutzen.
Daher schadet es nicht gleich ein normales Linux mit z.B. xfce zu installieren.
Da der Zugriff remote erfolgen soll, darf natürlich ssh & fail2ban nicht fehlen.
Virtualisierung
habe ich bereits beschrieben.
ebenso wie ich z.B. ein
Debian via LiveCD
installiere.
Siehe auch:
debian.org
Debian ist ein völlig freies Betriebssystem!
digitalocean.com
Initial Server Setup with Debian 10 (2019)
computerwoche.de
Empfehlenswerte Linux-Distributionen für Server (2015)
Zum Anfang
Um mindestens eine statische html
-Seiten darzustellen,
ist Apache nötig.
su sudo -s wenn su nicht mehr funktioniert apt install apache2 /etc/init.d/apache2 restart [ ok ] Restarting apache2 (via systemctl): apache2.service. systemctl restart apache2 kann man alternativ verwenden (ohne Meldung) sudo systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enab… Active: active (running) since Fri 2021-12-10 21:46:21 CE… Docs: https://httpd.apache.org/docs/2.4/ Process: 2137 ExecStart=/usr/sbin/apachectl start (code=ex… Main PID: 2141 (apache2) Tasks: 10 (limit: 2316) Memory: 19.1M CGroup: /system.slice/apache2.service ├─2141 /usr/sbin/apache2 -k start ├─2142 /usr/sbin/apache2 -k start ├─2143 /usr/sbin/apache2 -k start ├─2144 /usr/sbin/apache2 -k start ├─2145 /usr/sbin/apache2 -k start ├─2146 /usr/sbin/apache2 -k start ├─2150 /usr/sbin/apache2 -k start ├─2151 /usr/sbin/apache2 -k start ├─2152 /usr/sbin/apache2 -k start └─2177 /usr/sbin/apache2 -k start Dec 10 21:46:21 gj5 systemd[1]: Starting The Apache HTTP Server... Dec 10 21:46:21 gj5 apachectl[2137]: AH00558: apache2: Could… Dec 10 21:46:21 gj5 systemd[1]: Started The Apache HTTP Server. lines 1-23/23 (END)
Danach befindet sich im Ordner /var/www/html
eine
index.html
Datei mit root-Rechten.
welche man im Browser sich angucken kann.
Befindet man sich direkt auf dem Webserver,
kann man im Browser
http://localhost/
oder 127.0.0.1
eingeben.
Genauso ist es möglich innerhalb des eigenen Netzes
die Adresse des Webservers,
hier http://gj5.fritz.box
einzugeben.
Um eine eigene Webseite zu erstellen kann man im einfachsten Fall die index.html
überschreiben
oder dort eine Verknüpfung plazieren.
Hier habe ich einen neuen Ordner super08
, zugreifbar vom Benutzer m
,
für meine Web-Seite erstellt und eine Verknüpfung darauf angelegt .
su cd /var/www/html mkdir super08 chown m:m super08 chown m:m index.html exit nano index.html … <body> <div class="main_page"> <div class="page_header floating_element"> <img src="/icons/openlogo-75.png" alt="Debian Lo… <span class="floating_element"> Apache2 Debian Default Page </span> </div> <p><a href="./super08/index.html" target="_top" >2021-08</a></p>
Man sieht, dass der Einsprungsort meiner Webseite hier ebenfalls index.html
.
Das muß aber nicht immer so sein.
Bei einem CMS wird der ausführbare Code meist via index.php
gestartet.
Falls erforderlich kann man den Webserver über /etc/apache2/apache2.conf
anpassen.
Mit Editoren wie Nano
oder mousepad
kann man Webseiten erstellen.
würde ich aber nicht empfehlen. Stattdessen verwende ich z.B. bluefish
.
Siehe auch:
apache.org
The Apache software foundation
Zum Anfang
Wem das direkte schreiben in Html zu mühsam ist,
wird wahrscheinlich ein sog. content management system - CMS installieren wollen.
Dies ermöglicht zwar eine einfachere Eingabe von Inhalten,
bedarf aber der Pflege (Updates einspielen, Plug-Ins auf Funktion überprüfen, etc.)
Ich selber habe ein paar Jahre websitebaker.org verwendet,
welches ich über einen VHS-Kurs kennen gelernt habe.
Dann gab es innerhalb der Websitebaker-Gemeinde Streit
und das CMS wurde längere Zeit nicht mehr gepflegt.
Und mein Web-Hoster ist wegen Sicherheitsproblemen
auf eine höhere PHP-Version gegangen,
welche von meiner Websitebaker-Version noch nicht unterstützt wurde.
Nachdem ein Websitebaker-Update zur Verfügung stand,
hoffte ich, meine Seite tanzfreudig.de wieder zum Leben zu erwecken.
Aber das Update schlug fehl - Seitdem ruht die Seite.
Nun muß das nicht immer so passieren, kann aber.
Zumindest wird für viele CMS ein PHP-Hypertext-Preprocessor
benötigt,
welcher sich wie folgt installieren läßt.
su apt install php libapache2-mod-php
Die Zeitzone muß in der PHP-Konfiguration ≥ PHP 5.3 angepasst werden.
su cd /etc/php/7.3/apache2 Der Pfad kann variieren nano php.ini mit Ctrl-W "date.timezone =" suchen ;date.timezone = folgende Zeile ergänzen (ohne ;) date.timezone = Europe/Berlin systemctl restart apache2 ein Neustart schadet nicht
Zum Test habe ich einen Einzeiler erstellt,
deren Ergebnis ich mir im Browser angucken kann.
su cd /var/www/html nano info.php <?php phpinfo(); ?>
Die Adresse für das Testergebnis lautet bei mir http://gj5.fritz.box/info.php
Möchten man php
auf der Webseite ausführbar machen,
ist eine Änderung der Dateiendung von .html
zu .php
nötig.
Im Gegensatz zu Javascript, läuft PHP auf dem Web-Server und
erzeugt dann eine dynamische html-Seite, welche der Klient in seinem Browser sieht.
Wenn ich also im Browser mit Ctrl-Shift-I mir den Code angucke, steht dort Text,
statt der PHP-Code, welcher den Text erzeugt.
Siehe auch:
php.net
PHP is a popular general-purpose scripting language that is especially suited to web development.
php.net
sys_getloadavg — Ermittelt die durchschnittliche Systemlast
educba.com
PHP Commands
Zum Anfang
So richtig interessant wird PHP erst,
wenn ich es mit einer My-SQL (Structured Query Language) Datenbank verbinde.
Hierfür sind noch ein paar Kleingkeiten zu installieren.
Ich habe mich hier statt für MySQL von Oracle,
für die Alternative mariadb
entschieden.
su sudo apt install mysql-server → E: Package 'mysql-server' has no installation candidate sudo apt install default-mysql-server Name bei DEB 10 apt install mariadb-server alternative Datenbank … perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), dabei gibt es noch Schwierigkeiten LANG = "en_GB.UTF-8" …
Entsprechend ist der Service noch nicht betriebsbereit
su
service mysql status Test
systemctl status mysql Alternative
● mariadb.service - MariaDB 10.3.31 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Also erst einmal die Spracheinstellungen
richtig setzen und die My-SQL Datenbank neu starten.
Die erneute Überprüfung sollte nun nicht mehr fehl schlagen.
sudo systemctl restart mysql sudo systemctl status mysql
Zu den Datenbank-Server wird noch ein Client benötigt.
su apt install default-mysql-client für Orcale apt install mariadb-client für die Alternative
Mit einen einfachen Befehl kann man die SQL-Datenbank weiter absichern.
Hier wird z.B.
su mysql_secure_installation … If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, Enter current password for root (enter for none): ↵ Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y systemctl restart apache2 ein Neustart schadet nicht
Test der MySQL-Datenbank kann wie folgt passieren.
Wobei erst das sudo
-Passwort und dann
das root
-Passwort vom SQL-Server einzugeben ist.
sudo mysqladmin -u root -p version mysqladmin Ver 9.1 Distrib 10.3.31-MariaDB, for debian-linux-gnu on x86_64 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Server version 10.3.31-MariaDB-0+deb10u1 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/run/mysqld/mysqld.sock Uptime: 3 hours 53 min 1 sec Threads: 6 Questions: 486 Slow queries: 0 Opens: 175 Flush tables: 1 Open tables: 31 Queries per second avg: 0.034
Wie es aussieht, läuft alles nach Plan.
Zum Anfang
Um die MySQL-Datenbank verwalten zu können, ist noch sinnvoll folgendes zu installieren.
sudo apt install phpmyadmin → E: Package 'phpmyadmin' has no installation candidate
Eine weitere Möglichkeit ist sich den Tar-Ball runter zu laden
und z.B. im Ordner /var/www/html/extraGeheimerOrdner/ zu entpacken.
Zum Anfang
textbroker.de
Content-Management-System
websitebaker.org
WebsiteBaker Open Source Content Management
technikaffe.de
Einen Linux Webserver installieren
pcwelt.de
Apache-Webserver auf Linux installieren - so geht's (2018)
codeflow.site
So installieren Sie den Apache-Webserver unter Debian 10
jolichter.de
Debian Webserver einrichten (2009)
itler.net
Unter Debian eine Webserver-Umgebung installieren
otremba.net
Webserver installieren (Debian 8 ca. 2018)
debianforum.de
Webserver mit Apache PHP und MySQL (Debian 7 < 2018)
https://kifarunix.com/install-lamp-stack-with-mariadb-10-on-debian-10-buster/
https://www.linuxandubuntu.com/home/10-steps-to-secure-linux-server
Zum Anfang