Einfache Serververwaltung mit PHP und MySQL: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 16: Zeile 16:
 
* Andere Benutzer dürfen nur Daten lesen
 
* Andere Benutzer dürfen nur Daten lesen
 
* Am Ende wird die Webseite mit HTTPS gesichert
 
* Am Ende wird die Webseite mit HTTPS gesichert
 +
 +
== Installation der benötigten Pakete ==
 +
Zuerst müssen die notwendigen Pakete installiert werden:
 +
 +
Pakete aktualisieren:
 +
* apt update && apt upgrade -y
 +
 +
Benötigte Software installieren:
 +
* apt install apache2 mariadb-server php php-mysql libapache2-mod-php -y
 +
 +
Apache und MariaDB starten und aktivieren:
 +
* systemctl enable --now apache2 mariadb
 +
 +
Datenbank absichern:
 +
* mysql_secure_installation
 +
  (Fragen zur Absicherung beantworten und Root-Passwort setzen)
  
 
== Einrichtung der Datenbank ==
 
== Einrichtung der Datenbank ==
Zuerst wird eine MySQL-Datenbank eingerichtet, um die Serverinformationen zu speichern.
+
Nun wird eine MySQL-Datenbank eingerichtet, um die Serverinformationen zu speichern.
  
Datenbank erstellen.
+
Datenbank erstellen:
 
* create database serververwaltung;
 
* create database serververwaltung;
  
Zur neuen Datenbank wechseln.
+
Zur neuen Datenbank wechseln:
 
* use serververwaltung;
 
* use serververwaltung;
  
Tabelle für die Serverdaten anlegen.
+
Tabelle für die Serverdaten anlegen:
 
* create table server (
 
* create table server (
 
   id int auto_increment primary key,
 
   id int auto_increment primary key,
Zeile 37: Zeile 53:
 
);
 
);
  
Tabelle für die Benutzerverwaltung anlegen.
+
Tabelle für die Benutzerverwaltung anlegen:
 
* create table benutzer (
 
* create table benutzer (
 
   id int auto_increment primary key,
 
   id int auto_increment primary key,
Zeile 93: Zeile 109:
 
     $hauptdienst = $_POST["hauptdienst"];
 
     $hauptdienst = $_POST["hauptdienst"];
  
     $sql = "INSERT INTO server (rechnername, ip_adresse, betriebssystem, festplattenspeicher, ram, hauptdienst)  
+
     $sql = "INSERT INTO server (rechnername, ip_adresse, betriebssystem, festplattenspeicher, ram, hauptdienst)
 
             VALUES ('$rechnername', '$ip_adresse', '$betriebssystem', '$festplattenspeicher', '$ram', '$hauptdienst')";
 
             VALUES ('$rechnername', '$ip_adresse', '$betriebssystem', '$festplattenspeicher', '$ram', '$hauptdienst')";
  
Zeile 130: Zeile 146:
 
Ein Registrierungs- und Login-System wird integriert, um Benutzerrechte zu verwalten. Nur Admins können Einträge bearbeiten oder hinzufügen.
 
Ein Registrierungs- und Login-System wird integriert, um Benutzerrechte zu verwalten. Nur Admins können Einträge bearbeiten oder hinzufügen.
  
Benutzer registrieren.
+
Benutzer registrieren:
 
* insert into benutzer (benutzername, passwort, rolle) values ('admin', password('adminpass'), 'admin');
 
* insert into benutzer (benutzername, passwort, rolle) values ('admin', password('adminpass'), 'admin');
 
* insert into benutzer (benutzername, passwort, rolle) values ('user', password('userpass'), 'user');
 
* insert into benutzer (benutzername, passwort, rolle) values ('user', password('userpass'), 'user');
  
Benutzeranmeldung in PHP prüfen.
+
Benutzeranmeldung in PHP prüfen:
 
<pre>
 
<pre>
 
<?php
 
<?php

Version vom 15. März 2025, 13:19 Uhr

Projekt: Einfache Serververwaltung mit PHP und MySQL

Ziel des Projekts

Dieses Projekt zeigt, wie eine einfache Serververwaltungs-Webseite aufgebaut wird. Dabei lernen die Teilnehmer die grundlegende Interaktion zwischen PHP, MySQL und einer Web-Oberfläche.

Die Webseite soll folgende Daten verwalten:

  • Rechnername
  • IP-Adresse mit Netzmaske
  • Betriebssystem
  • Festplattenspeicher
  • RAM
  • Hauptdienst

Zusätzlich wird eine Benutzerverwaltung integriert:

  • Bestimmte Benutzer dürfen Daten eintragen und ändern
  • Andere Benutzer dürfen nur Daten lesen
  • Am Ende wird die Webseite mit HTTPS gesichert

Installation der benötigten Pakete

Zuerst müssen die notwendigen Pakete installiert werden:

Pakete aktualisieren:

  • apt update && apt upgrade -y

Benötigte Software installieren:

  • apt install apache2 mariadb-server php php-mysql libapache2-mod-php -y

Apache und MariaDB starten und aktivieren:

  • systemctl enable --now apache2 mariadb

Datenbank absichern:

  • mysql_secure_installation
 (Fragen zur Absicherung beantworten und Root-Passwort setzen)

Einrichtung der Datenbank

Nun wird eine MySQL-Datenbank eingerichtet, um die Serverinformationen zu speichern.

Datenbank erstellen:

  • create database serververwaltung;

Zur neuen Datenbank wechseln:

  • use serververwaltung;

Tabelle für die Serverdaten anlegen:

  • create table server (
 id int auto_increment primary key,
 rechnername varchar(50) not null,
 ip_adresse varchar(50) not null,
 betriebssystem varchar(50) not null,
 festplattenspeicher int not null,
 ram int not null,
 hauptdienst varchar(50) not null

);

Tabelle für die Benutzerverwaltung anlegen:

  • create table benutzer (
 id int auto_increment primary key,
 benutzername varchar(50) not null unique,
 passwort varchar(255) not null,
 rolle enum('admin', 'user') not null

);

PHP-Skript für Datenbankverbindung

Ein PHP-Skript wird erstellt, um sich mit der Datenbank zu verbinden.

<?php
$servername = "localhost";
$username = "root";
$password = "passwort";
$dbname = "serververwaltung";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
}
?>

Formular für das Eintragen neuer Server

Ein einfaches HTML-Formular ermöglicht das Eintragen neuer Server.

<form method="post" action="eintragen.php">
    Rechnername: <input type="text" name="rechnername" required><br>
    IP-Adresse: <input type="text" name="ip_adresse" required><br>
    Betriebssystem: <input type="text" name="betriebssystem" required><br>
    Festplattenspeicher (GB): <input type="number" name="festplattenspeicher" required><br>
    RAM (GB): <input type="number" name="ram" required><br>
    Hauptdienst: <input type="text" name="hauptdienst" required><br>
    <input type="submit" value="Speichern">
</form>

PHP-Skript zur Verarbeitung des Formulars

Das Skript speichert die eingegebenen Daten in die Datenbank.

<?php
include 'db.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $rechnername = $_POST["rechnername"];
    $ip_adresse = $_POST["ip_adresse"];
    $betriebssystem = $_POST["betriebssystem"];
    $festplattenspeicher = $_POST["festplattenspeicher"];
    $ram = $_POST["ram"];
    $hauptdienst = $_POST["hauptdienst"];

    $sql = "INSERT INTO server (rechnername, ip_adresse, betriebssystem, festplattenspeicher, ram, hauptdienst)
            VALUES ('$rechnername', '$ip_adresse', '$betriebssystem', '$festplattenspeicher', '$ram', '$hauptdienst')";

    if ($conn->query($sql) === TRUE) {
        echo "Server erfolgreich eingetragen.";
    } else {
        echo "Fehler: " . $conn->error;
    }
}
?>

Anzeige der Serverliste

Eine Liste aller Server wird als HTML-Tabelle ausgegeben.

<?php
include 'db.php';

$result = $conn->query("SELECT * FROM server");

if ($result->num_rows > 0) {
    echo "<table border='1'>
            <tr><th>ID</th><th>Rechnername</th><th>IP-Adresse</th><th>Betriebssystem</th><th>Festplatte (GB)</th><th>RAM (GB)</th><th>Hauptdienst</th></tr>";
    while($row = $result->fetch_assoc()) {
        echo "<tr><td>" . $row["id"] . "</td><td>" . $row["rechnername"] . "</td><td>" . $row["ip_adresse"] . "</td><td>" . $row["betriebssystem"] . "</td><td>" . $row["festplattenspeicher"] . "</td><td>" . $row["ram"] . "</td><td>" . $row["hauptdienst"] . "</td></tr>";
    }
    echo "</table>";
} else {
    echo "Keine Server gefunden.";
}
?>

Benutzerverwaltung

Ein Registrierungs- und Login-System wird integriert, um Benutzerrechte zu verwalten. Nur Admins können Einträge bearbeiten oder hinzufügen.

Benutzer registrieren:

  • insert into benutzer (benutzername, passwort, rolle) values ('admin', password('adminpass'), 'admin');
  • insert into benutzer (benutzername, passwort, rolle) values ('user', password('userpass'), 'user');

Benutzeranmeldung in PHP prüfen:

<?php
session_start();
include 'db.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $benutzername = $_POST["benutzername"];
    $passwort = $_POST["passwort"];
    
    $sql = "SELECT * FROM benutzer WHERE benutzername='$benutzername' AND passwort=password('$passwort')";
    $result = $conn->query($sql);
    
    if ($result->num_rows == 1) {
        $_SESSION["benutzername"] = $benutzername;
        echo "Erfolgreich eingeloggt.";
    } else {
        echo "Falsche Anmeldedaten.";
    }
}
?>

Verschlüsselung mit HTTPS

Die gesamte Seite wird auf HTTPS umgestellt, um die Sicherheit zu erhöhen.

Fazit

Dieses Projekt zeigt, wie eine dynamische Webanwendung für die Serververwaltung entsteht. Durch die einfache Struktur können alle Teilnehmer den Zusammenhang zwischen Datenbank, PHP und HTML verstehen.