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
- Windows Server mit eingerichteter IIS-Webserver-Rolle.
- Microsoft SQL Server (Express oder höher), idealerweise mit
SQL Server Management Studio oder
sqlcmdzur Verwaltung. - Administratorrechte auf dem Server.
- Die Anwendung "Bestell-Bar" und die Hilfe als zip-Archiv.
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):
- Statischer Inhalt – liefert die CSS/JS/Bilder aus
wwwrootund die statischen Hilfe-Seiten (zwingend). - Standarddokument und HTTP-Fehler.
- HTTP-Umleitung – für die Weiterleitung von HTTP auf HTTPS.
- WebSocket-Protokoll – für die Live-Aktualisierung der Stations- und Auslieferungs-Boards (SignalR); ohne dieses Feature bleiben Boards ohne Neuladen stehen.
- Statische & dynamische Inhaltskomprimierung – für schnellere Antworten.
- IIS-Verwaltungskonsole – zum Einrichten von Website/Anwendungspool.
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
Benötigte SQL-Server-Features
Bei der Installation von SQL Server (Express oder höher) genügt für Bestell-Bar:
- Datenbankmodul-Dienste (Database Engine Services) – zwingend.
- Optional SQL Server Management Studio (SSMS, separater Download) zur
bequemen Verwaltung –
sqlcmdgenügt aber auch.
- Für die lokale Verbindung (
.bzw..\SQLEXPRESS) reichen die Standardprotokolle (Shared Memory / Named Pipes) – keine weitere Einrichtung nötig. - Liegt der SQL Server auf einem anderen Rechner, im
SQL Server-Konfigurations-Manager das TCP/IP-Protokoll aktivieren
und den Port (Standard
1433) in der Firewall freigeben. - Für eine SQL-Anmeldung (statt Windows-Authentifizierung, siehe Schritt 4) bei der Installation den gemischten Modus aktivieren.
Schritt 1: .NET Hosting Bundle installieren
- Das ASP.NET Core 10 Hosting Bundle von dotnet.microsoft.com herunterladen (Abschnitt ASP.NET Core Runtime → Hosting Bundle) und installieren. Es verbindet .NET mit dem IIS (ASP.NET-Core-Modul).
- Anschliessend in einer Administrator-Eingabeaufforderung
iisresetausführen (oder den IIS manuell neustarten).
Schritt 2: Anwendungsdateien ablegen
- Einen Ordner für die Anwendung anlegen, z. B.
D:\Sites\bestellbar. - Den kompletten Inhalt des zip-Archivs hineinkopieren
(
JKOrderManager.exe,appsettings.json,web.config,wwwrootusw.).
Schritt 3: IIS einrichten
- 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).
- 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. - 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
- 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. - 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 immerIIS AppPool\<Name des Anwendungspools>.
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": "" }
}
- DefaultConnection: Servername/Instanz und Datenbankname aus Schritt 4.
- Qr:Secret und Encryption:Key: je ein eigener, langer
Zufallswert (mindestens 32 Zeichen). Bequem erzeugen mit:
powershell -Command "[Convert]::ToBase64String([Security.Cryptography.RandomNumberGenerator]::GetBytes(48))"
- Seed: E-Mail und Passwort des ersten Plattform-Administrators (damit melden Sie sich nach der Installation an).
- Installation:Label (optional): Text wie
DemooderTest, der zur Kennzeichnung der Umgebung klein unter dem Schriftzug in der Menüleiste erscheint; leer = keine Anzeige. - Serilog: im Abschnitt
WriteToden Pfad der Logdatei auf einen Ordner zeigen lassen, in dem das Anwendungspool-Konto schreiben darf.
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
- Den Ordner der Hilfe-Seite ausserhalb des Anwendungsordners ablegen,
z. B.
D:\Sites\bestellbar-help. - Im IIS-Manager unterhalb der Bestell-Bar-Anwendung ein virtuelles Verzeichnis
mit Alias
helpanlegen, 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
- 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). - Mit dem Seed-Konto Anmelden.
- Unter dem Zahnrad-Menü Administration → System-SMTP den zentralen E-Mail-Versand konfigurieren (Voraussetzung für Selbstregistrierung und «Passwort vergessen»).
- Unter Vereine den ersten Verein samt Vereins-Admin anlegen – oder die Selbstregistrierung auf der Startseite nutzen.
Updates einspielen
- Datenbank sichern.
- Anwendungspool BestellBar stoppen.
- Anwendungsdateien durch die neue Version ersetzen –
appsettings.jsonundweb.configdabei behalten (vorher sichern). - 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).
- Einen anderen Port wählen Sie mit dem Schalter
--urls:JKOrderManager.exe --urls http://localhost:8080
- Beenden: Fenster schliessen oder Strg+C drücken.
- Es gilt dieselbe
appsettings.jsonwie im IIS-Betrieb – die Platzhalter aus Schritt 5 müssen also auch hier ersetzt sein. - Das Konsolenfenster bleibt fast leer – das ist normal: protokolliert werden nur Warnungen und Fehler (die Logdatei aus dem Serilog-Abschnitt wird trotzdem geschrieben).
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.
- Dienst anlegen (Eingabeaufforderung als Administrator; das Leerzeichen nach
binPath=gehört zur Syntax vonsc.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"
- 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= "…"
- Starten bzw. stoppen:
sc.exe start BestellBar sc.exe stop BestellBar
- Wieder entfernen (vorher stoppen):
sc.exe delete BestellBar
- Der Dienst startet automatisch mit dem Server und wird von Windows nach einem Absturz neu gestartet (Wiederherstellungsoptionen in den Diensteigenschaften).
- Das Dienstkonto braucht Schreibrechte auf den Log-Ordner aus dem
Serilog-Abschnitt der
appsettings.json. - Für Updates den Dienst stoppen, Dateien ersetzen (
appsettings.jsonbehalten), Dienst wieder starten.
Wenn es nicht läuft
| Symptom | Prü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? |