Hilfe & Dokumentation

Installation auf Windows Server

Diese Anleitung richtet Bestell-Bar auf einem Windows Server ein, auf dem IIS und Microsoft SQL Server bereits installiert sind. Die kostenlose SQL Server Express-Edition genügt; höhere Editionen funktionieren genauso.

Voraussetzungen

Benötigte IIS-Rollendienste

Die reine Rolle Webserver (IIS) genügt nicht – für Bestell-Bar müssen zusätzlich diese Rollendienste installiert sein (Server-Manager → Rollen und Features hinzufügen, oder per PowerShell):

Auf einem Windows Server installiert dieser Befehl (als Administrator in PowerShell) alles Nötige:

Install-WindowsFeature -Name Web-Server, Web-Static-Content, Web-Default-Doc, `
    Web-Http-Errors, Web-Http-Redirect, Web-WebSockets, Web-Stat-Compression, `
    Web-Dyn-Compression, Web-Mgmt-Console -IncludeManagementTools
Kein ASP.NET 4.x nötig Den Rollendienst ASP.NET 4.x braucht Bestell-Bar nicht. Die Verbindung zwischen IIS und der .NET-Anwendung stellt das ASP.NET Core Hosting Bundle her (siehe Schritt 1) – nicht ein IIS-Feature.

Benötigte SQL-Server-Features

Bei der Installation von SQL Server (Express oder höher) genügt für Bestell-Bar:

Schritt 1: .NET Hosting Bundle installieren

  1. Das ASP.NET Core 10 Hosting Bundle von dotnet.microsoft.com herunterladen (Abschnitt ASP.NET Core RuntimeHosting Bundle) und installieren. Es verbindet .NET mit dem IIS (ASP.NET-Core-Modul).
  2. Anschliessend in einer Administrator-Eingabeaufforderung iisreset ausführen (oder den IIS manuell neustarten).

Schritt 2: Anwendungsdateien ablegen

  1. Einen Ordner für die Anwendung anlegen, z. B. D:\Sites\bestellbar.
  2. Den kompletten Inhalt des zip-Archivs hineinkopieren (JKOrderManager.exe, appsettings.json, web.config, wwwroot usw.).

Schritt 3: IIS einrichten

  1. Im IIS-Manager einen neuen Anwendungspool anlegen, z. B. BestellBar, .NET-CLR-Version Kein verwalteter Code. Die Identität kann auf dem Standard (ApplicationPoolIdentity) bleiben (je nach Verbindung mit dem MS SQL Server).
  2. Eine Website (oder eine Anwendung unterhalb einer bestehenden Website, z. B. /bestellbar) anlegen: physischer Pfad = Ordner aus Schritt 2, Anwendungspool = BestellBar. Der Betrieb unter einem Unterpfad wird von Bestell-Bar vollständig unterstützt.
  3. Eine HTTPS-Bindung mit Zertifikat einrichten (die QR-Codes und die Bestellseiten der Gäste setzen eine sichere Verbindung voraus).

Schritt 4: Datenbank anlegen und Rechte vergeben

  1. Eine leere Datenbank anlegen, z. B. BestellBar:
    sqlcmd -S .\SQLEXPRESS -E -Q "CREATE DATABASE BestellBar"
    (bei einer Standardinstanz -S . statt .\SQLEXPRESS). Die Tabellen erstellt die Anwendung beim ersten Start selbst.
  2. Dem Konto des Anwendungspools Zugriff geben (empfohlen: Windows-Authentifizierung):
    sqlcmd -S .\SQLEXPRESS -E -Q "CREATE LOGIN [IIS AppPool\BestellBar] FROM WINDOWS"
    sqlcmd -S .\SQLEXPRESS -E -d BestellBar -Q "CREATE USER [IIS AppPool\BestellBar] FOR LOGIN [IIS AppPool\BestellBar]; ALTER ROLE db_owner ADD MEMBER [IIS AppPool\BestellBar]"
    Der Login-Name entspricht immer IIS AppPool\<Name des Anwendungspools>.
Alternative: SQL-Anmeldung Statt Windows-Authentifizierung kann auch ein SQL-Login (Benutzer/Passwort) verwendet werden – dann im Connection String User Id=…;Password=… statt Trusted_Connection=True eintragen.

Schritt 5: appsettings.json anpassen

Die Datei appsettings.json im Anwendungsordner öffnen und anpassen:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=.\\SQLEXPRESS;Database=BestellBar;Trusted_Connection=True;TrustServerCertificate=True;MultipleActiveResultSets=true"
  },
  "Qr":         { "Secret": "…langer Zufallswert…" },
  "Encryption": { "Key": "…langer Zufallswert…" },
  "Seed": {
    "SuperAdminEmail": "admin@example.ch",
    "SuperAdminPassword": "…starkes Passwort…",
    "SuperAdminDisplayName": "Plattform-Administrator"
  },
  "Installation": { "Label": "" }
}
Wichtig: Platzhalter ersetzen Bleiben Qr:Secret, Encryption:Key oder das Seed-Passwort auf den mitgelieferten Beispielwerten, verweigert die Anwendung ausserhalb der Entwicklungsumgebung absichtlich den Start. Und: Wird Encryption:Key später geändert, werden bereits gespeicherte SMTP-Passwörter unlesbar und müssen neu erfasst werden.

Schritt 6: Hilfe-Seite einbinden

  1. Den Ordner der Hilfe-Seite ausserhalb des Anwendungsordners ablegen, z. B. D:\Sites\bestellbar-help.
  2. Im IIS-Manager unterhalb der Bestell-Bar-Anwendung ein virtuelles Verzeichnis mit Alias help anlegen, das auf diesen Ordner zeigt.

Damit funktioniert der Hilfe-Link im Seitenfuss der Anwendung, und die Seite bleibt bei Anwendungs-Updates unangetastet.

Schritt 7: Erster Start

  1. Die Website im Browser aufrufen. Beim ersten Start legt die Anwendung die Datenbanktabellen an und erstellt das Administrator-Konto aus dem Seed-Abschnitt (das kann einige Sekunden dauern).
  2. Mit dem Seed-Konto Anmelden.
  3. Unter dem Zahnrad-Menü AdministrationSystem-SMTP den zentralen E-Mail-Versand konfigurieren (Voraussetzung für Selbstregistrierung und «Passwort vergessen»).
  4. Unter Vereine den ersten Verein samt Vereins-Admin anlegen – oder die Selbstregistrierung auf der Startseite nutzen.

Updates einspielen

  1. Datenbank sichern.
  2. Anwendungspool BestellBar stoppen.
  3. Anwendungsdateien durch die neue Version ersetzen – appsettings.json und web.config dabei behalten (vorher sichern).
  4. Anwendungspool wieder starten. Nötige Datenbank-Anpassungen führt die Anwendung beim Start automatisch aus.

Nur zum Testen: direkt starten (Konsole)

Dieselbe JKOrderManager.exe lässt sich auch direkt starten – per Doppelklick oder aus der Eingabeaufforderung. Es öffnet sich ein Konsolenfenster, und die Anwendung ist unter http://localhost:5000 erreichbar (ohne IIS).

Nicht für den Produktivbetrieb Der Direktstart ist zum Ausprobieren und für Tests gedacht: Es gibt kein HTTPS, keinen automatischen Start nach einem Neustart des Servers und keinen Neustart nach einem Absturz. Für den regulären Betrieb verwenden Sie den IIS (Schritt 3).

Alternativer Betrieb: als Windows-Dienst

Statt im IIS kann dieselbe Anwendung auch als Windows-Dienst laufen – praktisch, wenn auf dem Server kein IIS gewünscht ist. Der reguläre Weg bleibt der IIS-Betrieb.

  1. Dienst anlegen (Eingabeaufforderung als Administrator; das Leerzeichen nach binPath= gehört zur Syntax von sc.exe):
    sc.exe create BestellBar binPath= "D:\Sites\bestellbar\JKOrderManager.exe --urls http://localhost:5000" start= auto
    sc.exe description BestellBar "Bestell-Bar Web-Anwendung"
  2. Dienstkonto festlegen und diesem – wie in Schritt 4 – Zugriff auf die Datenbank geben. Ohne Angabe läuft der Dienst als LocalSystem:
    sc.exe config BestellBar obj= "DOMAIN\dienstkonto" password= "…"
  3. Starten bzw. stoppen:
    sc.exe start BestellBar
    sc.exe stop BestellBar
  4. Wieder entfernen (vorher stoppen): sc.exe delete BestellBar
HTTPS beachten Im Dienstbetrieb steht kein IIS davor, der das Zertifikat bereitstellt. Betreiben Sie den Dienst deshalb entweder nur im internen Netz, hinterlegen Sie ein Zertifikat für Kestrel, oder stellen Sie einen Reverse-Proxy davor – die Gäste-Bestellseiten und QR-Codes setzen HTTPS voraus.

Wenn es nicht läuft

SymptomPrüfen
HTTP-Fehler 500.30, Anwendung startet nicht Meist sind die Platzhalter in der appsettings.json nicht ersetzt (siehe Schritt 5). Für die genaue Fehlermeldung JKOrderManager.exe testweise direkt in einer Eingabeaufforderung im Anwendungsordner starten oder in die Windows-Ereignisanzeige schauen.
HTTP-Fehler 500.19 oder «Handler»-Fehler Das .NET Hosting Bundle fehlt oder wurde vor dem IIS installiert – (erneut) installieren und iisreset ausführen.
Datenbankfehler beim Start Connection String prüfen (Instanzname!); hat das Anwendungspool-Konto die Rechte aus Schritt 4?
Hilfe-Link zeigt «404» Ist das virtuelle Verzeichnis help aus Schritt 6 eingerichtet?
Keine Logdatei Serilog-Pfad in der appsettings.json prüfen; darf das Anwendungspool-Konto dort schreiben?