Einfache Serververwaltung mit PHP und MySQL: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 63: Zeile 63:
 
);
 
);
  
 +
==Skripte Ort==
 +
;Die Skripte kommen unter /var/www/html
 
== PHP-Skript für Datenbankverbindung ==
 
== PHP-Skript für Datenbankverbindung ==
 
Ein PHP-Skript wird erstellt, um sich mit der Datenbank zu verbinden.
 
Ein PHP-Skript wird erstellt, um sich mit der Datenbank zu verbinden.

Version vom 15. März 2025, 13:29 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)

Einlogen auf der Datenbanl

  • mysql -u root

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

);

Skripte Ort

Die Skripte kommen unter /var/www/html

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.