Installation primedocs-Server
Diese Seite betrifft die OnPremises-Variante.
Bei der "Software as a Service"-Variante sind keine Serverinstallationen durch den Kunden notwendig.
Bevor Sie beginnen:
Voraussetzung für die Installation des primedocs-Servers ist eine Microsoft SQL Server Datenbank zum Speichern der Daten. Falls Sie keinen vorhandenen Datenbankserver verwenden können, können Sie eine SQL Express-Installation durchführen wie hier beschrieben. Die korrekte Konfiguration des SQL-Benutzers für primedocs ist hier beschrieben.
Möchten Sie eine bestehende Installation aktualisieren?
Für eine Aktualisierung eines bestehenden primedocs-Servers folgen Sie diesen Anweisungen hier.
Installation
Im Installationspaket ist ein PowerShell-Skript "Install.ps1" enthalten, das die Installation vornimmt. Das Skript muss als Administrator ausgeführt werden, da unter anderem fehlende Windows Features aktiviert werden.
HINWEIS
Das Installationsskript ("Install.ps1") ist für die Installation von genau einer primedocs-Umgebung auf einem Server ausgelegt. Wenn mehrere primedocs-Umgebungen auf demselben Server laufen sollen, dann sind zusätzliche manuelle Konfigurationsschritte nötig. Siehe z. B. Multiple In-Process Applications in same Process auf der Seite Troubleshooting / Problembehandlung.
Skript ausführen
Die Installations-Zip-Datei muss vorgängig entpackt werden.
Die Install.ps1 ist signiert und muss mit den Installationsargumenten aufgerufen werden. Diese sind in der Datei in einem grossen Kommentar beschrieben (unter "Usages").
Standardaufruf (hierfür muss zuvor ins Installationsverzeichnis navigiert werden, z. B. mit cd "C:\temp\primedocs_Install_Package"):
.\Install.ps1 `
-HostUrl "https://your-url.local" `
-DbConnectionString "Data Source=...;Initial Catalog=primedocs_Prod;User ID=...;Password=...;MultipleActiveResultSets=True" `
-OperationDbConnectionString "Data Source=...;Initial Catalog=primedocs_Prod_Operation;User ID=...;Password=...;MultipleActiveResultSets=True"
Weitere Aufrufmöglichkeiten sind in "Install.ps1" unter "Usages" beschrieben, so z. B. die Angabe eines Service Accounts, falls kein SQL-Benutzer genutzt werden soll.
Die beiden Datenbanken vom obigen Beispiel ("primedocs_Prod" und "primedocs_Prod_Operation") können entweder als leere Datenbanken bereits existieren. Ansonsten werden sie automatisch durch die primedocs-Serverapplikationen angelegt (Bedingungen siehe SQL-Server-Rollen / -Berechtigungen).
HINWEIS
Bei einer Installation der "WithoutIdS"-Variante (siehe Varianten) ist kein OperationDbConnectionString nötig.
Standardmässig fragt das Skript den Benutzer nach Informationen und Bestätigungen. Falls dies nicht gewünscht ist, kann als Argument -Force $true mitgegeben werden.
Skript-Ablauf
1. Benötigte Windows Features überprüfen
Im ersten Schritt wird überprüft, ob alle erforderlichen Windows Features (u. A. der Internet Information Service (IIS) mit ASP.NET) installiert sind und ob das Hosting Bundle für .NET 10-Applikationen installiert ist.
2. "primedocs"-Website im IIS
Im nächsten Schritt wird überprüft, ob bereits eine "primedocs"-Website mit den Application Pools im IIS registriert ist. Ist das der Fall, wird zum nächsten Schritt gegangen.
Falls die Website nicht gefunden wird, werden Sie gefragt, ob diese angelegt werden soll, mit der Angabe des Installationspfades und des Port. Die Standardeinstellungen werden in der Ausgabe angezeigt. Das Skript legt zudem folgende Application Pools im IIS an:
primedocs-Managed:
Ist für die .NET Framework-basierten Serverapplikationen zuständig.primedocs-Unmanaged-[...]:
Für alle Serverapplikationen wird ein eigener Application Pool angelegt, wie z. B.primedocs-Unmanaged-AddressServicefür den "AddressService" oderprimedocs-Unmanaged-HealthMonitorfür den "HealthMonitor".
Die primedocs-Serverapplikationen laufen ausschliesslich als 64-Bit-Prozess. Die Application Pools müssen daher im 64-Bit-Modus betrieben werden: «Enable 32-Bit Applications» muss auf False stehen (IIS → Application Pools → [Pool] → Advanced Settings → Enable 32-Bit Applications = False). Das Installationsskript legt die Pools korrekt als 64-Bit an — die Einstellung nur bei manuellen Anpassungen prüfen.
Hintergrund: Das Server-Paket enthält native Abhängigkeiten (SQL-Client, Bild- und Dokumentrendering) nur noch als x64-Variante. In einem 32-Bit-Worker-Prozess lassen sich diese nicht laden.
3. "primedocs"-Webapplikationen
In diesem Schritt werden die eigentlichen Webapplikationen in der "primedocs"-Website hinterlegt. Falls die Anwendungen bereits installiert sind, werden Sie gefragt, ob eine Aktualisierung stattfinden soll. Im Fall einer Aktualisierung handelt es sich um ein Server-Update, weswegen wir die Kontaktaufnahme mit unserem Support empfehlen.
4. "primedocs JobHost"-Scheduled Task
Im letzten Schritt erfolgt eine Abfrage, ob der "primedocs-JobHost" als "Scheduled Task" eingerichtet werden soll. Der primedocs-JobHost ist ein Konsolenprogramm, das z. B. Benutzerdaten im Hintergrund in einem bestimmten Intervall aktualisiert. Er sollte daher installiert werden.
Abschluss der Server-Installation
Nach der Installation sollten sowohl der IIS als auch die Webapplikationen und der Scheduled Task installiert sein.
TIPP
In der Standardinstallation wird eine Website erzeugt, die auf den Port 80 hört. Laufen auf dem gleichen Server mehrere Webseiten, könnte das zu Konflikten führen. In dem Fall wird die primedocs-Website nicht gestartet.
HTTPS-Binding einrichten
Das Installationsskript legt die "primedocs"-Website nur mit einem HTTP-Binding an (Standardport 80). Für den Betrieb ist ein TLS-/SSL-Zertifikat zwingend (siehe Systemvoraussetzung). Das HTTPS-Binding daher nach der Installation mit IIS-Bordmitteln einrichten:
1. Zertifikat importieren
Das TLS-/SSL-Zertifikat inklusive privatem Schlüssel (.pfx) in den Zertifikatspeicher des Computers importieren — entweder über die MMC ("Zertifikate (Lokaler Computer)" → "Eigene Zertifikate") oder per PowerShell:
Import-PfxCertificate -FilePath "C:\temp\zertifikat.pfx" -CertStoreLocation Cert:\LocalMachine\My -Password (Read-Host -AsSecureString)
2. HTTPS-Binding anlegen
Im IIS-Manager unter Sites → primedocs → Bindings → Add... ein Binding vom Typ https auf Port 443 anlegen, den Hostnamen (z. B. your-url.local) eintragen und das importierte Zertifikat auswählen.
3. Optional: HTTP auf HTTPS umleiten
Das HTTP-Binding (Port 80) kann anschliessend entfernt werden. Alternativ kann eine Umleitung von HTTP auf HTTPS eingerichtet werden, z. B. über das IIS-Modul URL Rewrite.
Die bei der Installation angegebene HostUrl (https://...) muss mit dem HTTPS-Binding übereinstimmen, damit die in der primedocs.config hinterlegten URLs erreichbar sind.
Service Account
Die Standardinstallation geht von der Nutzung eines SQL-Benutzers aus. Es ist jedoch auch möglich, die primedocs-Serverapplikationen unter einem Service Account bzw. einem Group Managed Service Account zu betreiben.
Stellen Sie hierfür folgende Konfiguration sicher:
- Der Service Account kann sich mit dem SQL Server bzw. mit der zukünftigen Datenbank verbinden.
- Der Service Account ist Mitglied der "IIS_IUSRS"-Group.
Dieser Schritt wird vom Installationsskript automatisch erledigt, wenn beim Aufruf über die Argumente ein Security Account angegeben wird (siehe "Usages" in "Install.ps1"-Datei) und die entsprechende Abfrage bestätigt wird. - Für die
IIS_IUSRS-Gruppe muss in der Local Security PolicyLog on as batchundImpersonate a client after authenticationhinterlegt sein (dies entspricht einer Standard-IIS-Installation).
Administrative Tools → Local Security Policy → Local Policies → User Rights Assignment - Der Service Account hat Ändern-Rechte auf dem primedocs-Applikations- und Logverzeichnis (in der Standardinstallation ist das derselbe Ordner).
Dieser Schritt wird für das Applikationsverzeichnis vom Installationsskript automatisch erledigt, wenn beim Aufruf über die Argumente ein Security Account angegeben wird (siehe "Usages" in "Install.ps1"-Datei) und die entsprechende Abfrage für die Ändern-Rechte bestätigt wird. - Der Service Account muss im IIS als Benutzer in allen primedocs-Application Pools hinterlegt werden
IIS → Application Pools → Advanced Settings → Identity → Custom account
Zusätzlich mussLoad User Profileauftrueeingestellt werden (dies entspricht einer Standard-IIS-Installation).
Dieser Schritt wird vom Installationsskript automatisch erledigt, wenn beim Aufruf über die Argumente ein Security Account angegeben wird (siehe "Usages" in "Install.ps1"-Datei).
Bei der Verwendung eines Group Managed Service Accounts (gMSA) muss der Benutzername im Format domain\accountname$ angegeben werden. Erkennt der IIS, dass der Benutzername mit einem Dollarzeichen ($) endet, behandelt er das Konto automatisch als gMSA und deaktiviert das Passwortfeld in der Benutzeroberfläche, da für diese Kontotypen kein manuelles Passwort erforderlich ist.
- Der Service Account muss als ausführender Benutzer im "PrimeDocs.JobHost"-Task hinterlegt werden
Task Scheduler → Task Scheduler Library → PrimeDocs.JobHost → Properties
Dieser Schritt wird vom Installationsskript automatisch erledigt, wenn beim Aufruf über die Argumente ein Security Account angegeben wird (siehe "Usages" in "Install.ps1"-Datei). - Im SQL-ConnectionString wird der Service Account verwendet (bei der Installation als Argument übergeben oder in "primedocs.config"-Datei anpassen)
Dieser Schritt wird vom Installationsskript automatisch erledigt, wenn beim Aufruf über die Argumente der korrekte ConnectionString angegeben wird (siehe "Usages" in "Install.ps1"-Datei).
Read-Only Applikationsverzeichnis
Standardmässig benötigt primedocs Schreibrechte im Applikationsverzeichnis um:
- ASP.NET DataProtection-Keys zu verwalten
- Log Dateien über
NLogzu schreiben - Daten über die DataSourceAdminApp zu im- und exportieren
Um Schreibzugriffe auf das Applikationsverzeichnis zu vermeiden, führen Sie folgende Änderungen durch:
- In der
primedocs.configmussaspNetCoreDataProtectionDirectory="C:\Path\To\WritableFolder\"hinterlegt werden. Damit werden die ASP.NET DataProtecion-Keys nicht mehr parallel zurprimedocs.configgespeichert. - Das
file-Target in allenNLog.configDateien muss geändert werden und das${baseDir}mit dem entsprechenden Ordnerpfad ausgetauscht werden.- In der
primedocs.configmuss derlogFilePathunterappsebenfalls angepasst werden. Dies dient aber nur dazu, dass die DataSourceAdminApp die Logfiles lesen kann.
- In der
- In der
primedocs.configmuss bei jedem Eintrag unterappsdas AttributeworkingDirectoryPathgesetzt werden.
Wichtig: Der ausführende Benutzer der IIS-Anwendungen bzw. des JobHosts muss Lese-, Schreib- und Änderungsrechte auf diesen Ordner besitzen.
Beispiel Szenario:
Alle schreibenden Vorgänge sollen unter D:\Apps\primedocs\ erfolgen.
Anpassung NLog.config ("file"-Target):
Achtung: Es braucht für jede Applikation einen eigenen Ordner bzw. einen eigenen Namen!
<target name="file"
xsi:type="File"
layout="${layout}"
fileName="D:/Apps/primedocs/[DataSourceAdminApp/...]/serverApp.oolog"
createDirs ="true"
archiveFileName="D:/Apps/primedocs/[DataSourceAdminApp/...]/serverApp.{#}.oolog"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="7" />
Anpassungen primedocs.config:
<primedocs ... aspNetCoreDataProtectionDirectory="D:/Apps/primedocs/">
...
<apps>
<add ... name="DataSourceAdminApp" logFilePath="D:/Apps/primedocs/" type="DataSourceAdminApp" workingDirectoryPath="D:/Apps/primedocs/DataSourceAdminApp/" />
</apps>
</primedocs>
InstallLegacy.ps1
In früheren Versionen von primedocs wurde Install.ps1 sowohl für die Installation als auch die Aktualisierung von primedocs genutzt. Ab der Version 4.0.30057.0 wurden diese zwei Anwendungsfälle getrennt. Das bisherige Install.ps1 ist weiterhin als InstallLegacy.ps1 verfügbar.
In der Datei InstallLegacy_Customization.ps1 können Anpassungen vorgenommen werden, falls es sich nicht um eine Standardinstallation handelt. Die entsprechenden Einstellungsmöglichkeiten sind in der Datei beschrieben.
Execution Policy
Die PowerShell-"ExecutionPolicy" muss das Ausführen der Installationsskripte (.ps1-Dateien) zulassen. Die Skripte sind signiert; mit der Standardeinstellung von Windows Server (RemoteSigned) ist daher in der Regel keine Anpassung nötig.
Verhindert eine restriktivere Policy die Ausführung, die Execution Policy nur temporär für den aktuellen PowerShell-Prozess anpassen (empfohlener Weg — die Einstellung gilt nur bis zum Schliessen der PowerShell-Sitzung):
Set-ExecutionPolicy Unrestricted -Scope Process
Die folgende Frage muss mit y für "Yes" beantwortet werden:
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): y
Von einer dauerhaften, maschinenweiten Änderung (Set-ExecutionPolicy Unrestricted ohne -Scope) wird abgeraten.