|
|
| Zeile 1: |
Zeile 1: |
| == Löschen der Datenbank in PostgreSQL == | | ==Moodle Installieren== |
| <pre>
| | Um Moodle 5 mit Git zu installieren, folge diesen Schritten: |
| sudo -u postgres -i
| |
| psql -c "drop database asp;"
| |
| </pre>
| |
|
| |
|
| == Erstelle neue Datenbank==
| | # Voraussetzungen |
| <pre>
| | * Git ist installiert (`git --version`) |
| createdb -E UTF8 -O thorsten asp;
| | * PHP, Webserver (Nginx), und Datenbank (Postgrsql) sind eingerichtet |
| | |
| GRANT ALL PRIVILEGES ON DATABASE thorsten TO postgres;
| |
| exit;
| |
| </pre>
| |
| | |
| == ASP.NET Core MVC mit Individual-Authentifizierung installieren ==
| |
| | |
| Um ein neues ASP.NET Core MVC-Projekt mit Benutzerverwaltung (Individual User Accounts) zu erstellen, führe folgenden Befehl im Terminal aus:
| |
| | |
| <syntaxhighlight lang="bash">
| |
| dotnet new mvc --auth Individual -o MeinMvcProjekt
| |
| cd MeinMvcProjekt
| |
| </syntaxhighlight>
| |
| | |
| Dadurch wird ein neues MVC-Projekt mit integrierter Benutzerregistrierung, Anmeldung und Rollenverwaltung erstellt.
| |
| | |
| ==PostgreSQL==
| |
| Um die benötigten Pakete für die Identitätsverwaltung und die Datenbankanbindung zu installieren, führe folgende Befehle aus:
| |
| | |
| <syntaxhighlight lang="bash">
| |
| dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
| |
| dotnet add package Microsoft.EntityFrameworkCore.Tools
| |
| </syntaxhighlight>
| |
| | |
| Das erste Paket integriert die Identitätsverwaltung in Entity Framework Core, das zweite Paket stellt die PostgreSQL-Unterstützung bereit.
| |
| | |
| === Migrationen für die Identitätsdatenbank anwenden ===
| |
| | |
| Führe anschließend die Migrationen aus, um die benötigten Tabellen für die Benutzerverwaltung in der Datenbank zu erstellen:
| |
| | |
| <syntaxhighlight lang="bash">
| |
| dotnet ef database update
| |
| </syntaxhighlight>
| |
| | |
| Jetzt ist die Benutzerregistrierung und -anmeldung im Projekt verfügbar.
| |
| == Migrations löschen in ASP.NET Core ==
| |
| | |
| === Begründung für das Löschen von Migrationen in ASP.NET Core ===
| |
| | |
| Es kann verschiedene Gründe geben, warum man alle Migrationen in einem ASP.NET Core-Projekt löschen möchte:
| |
| | |
| * '''Fehlerhafte Migrationen:''' Wenn Migrationen fehlerhaft erstellt wurden oder die Datenbankstruktur nicht wie gewünscht abbilden, ist es oft einfacher, alle Migrationen zu löschen und von vorne zu beginnen. | |
| * '''Strukturelle Änderungen:''' Bei grundlegenden Änderungen am Datenmodell (z.B. Umbenennung von Tabellen, Entfernen vieler Entitäten) kann es sinnvoll sein, die Migrationen zurückzusetzen, um eine saubere Ausgangsbasis zu schaffen.
| |
| * '''Projekt-Neustart:''' In frühen Entwicklungsphasen, wenn sich das Datenmodell noch häufig ändert, ist das Löschen und Neuerstellen der Migrationen ein gängiger Schritt.
| |
| * '''Synchronisation mit der Datenbank:''' Wenn die Datenbank und die Migrationen nicht mehr synchron sind, kann ein Reset helfen, Inkonsistenzen zu beheben.
| |
| | |
| Beachte, dass beim Löschen der Migrationen alle bisherigen Änderungen verloren gehen. Daher sollte dieser Schritt nur durchgeführt werden, wenn keine produktiven Daten betroffen sind oder ein Backup existiert.
| |
| | |
| | |
| Um alle Migrationen im Ordner '''Migrations''' zu löschen, kannst du das folgende Kommando im Terminal ausführen:
| |
| | |
| <syntaxhighlight lang="bash">
| |
| rm -rf Migrations
| |
| </syntaxhighlight>
| |
| | |
| Dadurch wird der gesamte Migrations-Ordner und alle darin enthaltenen Dateien entfernt.
| |
| | |
| '''Achtung:''' Stelle sicher, dass du ein Backup hast, bevor du diesen Befehl ausführst, da alle Migrationen unwiderruflich gelöscht werden.
| |
| | |
| Um eine neue Migration mit dem Namen '''InitialCreate''' zu erstellen, verwende folgenden Befehl im Terminal:
| |
| | |
| <syntaxhighlight lang="bash">
| |
| dotnet ef migrations add InitialCreate
| |
| </syntaxhighlight>
| |
| | |
| Dadurch wird eine neue Migration im '''Migrations'''-Ordner angelegt, die die aktuelle Datenbankschema-Änderung beschreibt.
| |
| | |
| Um die Datenbank auf den neuesten Stand der Migrationen zu bringen, führe folgenden Befehl im Terminal aus:
| |
| | |
| <syntaxhighlight lang="bash">
| |
| dotnet ef database update
| |
| </syntaxhighlight>
| |
| | |
| Damit wird die Datenbank entsprechend der aktuellen Migration aktualisiert.
| |
| ==Seed==
| |
| <pre>
| |
| // Notfall-Admin-Benutzer anlegen (Seed)
| |
| if (builder.Configuration.GetValue<bool>("AdminSeed:Enabled"))
| |
| {
| |
| using (var scope = app.Services.CreateScope())
| |
| {
| |
| var userManager = scope.ServiceProvider.GetRequiredService<UserManager<IdentityUser>>();
| |
| // Keine Ausgabe der Zugangsdaten im Log
| |
| var adminEmail = Environment.GetEnvironmentVariable("ADMINSEED_EMAIL");
| |
|
| |
| var adminPassword = Environment.GetEnvironmentVariable("ADMINSEED_PASSWORD");
| |
|
| |
| // ..
| |
| | |
| var adminUser = await userManager.FindByEmailAsync(adminEmail);
| |
| if (adminUser == null)
| |
| {
| |
| var user = new IdentityUser { UserName = adminEmail, Email = adminEmail, EmailConfirmed = true };
| |
| var result = await userManager.CreateAsync(user, adminPassword);
| |
| if (result.Succeeded)
| |
| {
| |
| Console.WriteLine("Notfall-Admin wurde angelegt.");
| |
| }
| |
| else
| |
| {
| |
| Console.WriteLine("Fehler beim Anlegen des Notfall-Admins:");
| |
| foreach (var error in result.Errors)
| |
| Console.WriteLine(error.Description);
| |
| }
| |
| }
| |
| else
| |
| {
| |
| Console.WriteLine("Notfall-Admin existiert bereits.");
| |
| }
| |
| }
| |
| }
| |
| </pre>
| |
| | |
| ==UmgebungsVariable Nutzen==
| |
| <pre>
| |
| export ADMINSEED_EMAIL=admin@example.com
| |
| export ADMINSEED_PASSWORD=SicheresPasswort123
| |
| dotnet run
| |
| | |
| | |
| </pre>
| |
Moodle Installieren
Um Moodle 5 mit Git zu installieren, folge diesen Schritten:
- Voraussetzungen
- Git ist installiert (`git --version`)
- PHP, Webserver (Nginx), und Datenbank (Postgrsql) sind eingerichtet