Zum Hauptinhalt springen

Windows Server

gefahr

Bitte beachten Sie:

  • Diese Anleitung geht von Folgendem aus:
    • Physischer Speicherort von Passwork — C:\inetpub\wwwroot\passwork
    • Name der Passwork-Website — Passwork Web Site
  • Erstellen Sie vor der Aktualisierung, wenn Passwork in einer Cloud-/virtuellen Umgebung installiert ist, einen Snapshot des virtuellen Betriebssystemzustands, um die Funktionalität bei einer fehlerhaften Aktualisierung wiederherstellen zu können

Aktuelle Version von Passwork abrufen​

Erstellen Sie ein temporäres Verzeichnis zum Herunterladen von Passwork:

mkdir "$env:SystemDrive\inetpub\new_version"

Wenn sich der Server mit Passwork in einem abgeschotteten Netzwerk befindet​

Sie müssen zum Passwork-Kundenportal gehen, die Zertifikatsnummer kopieren und die Browser-Adressleiste verwenden, um Version 7 von Passwork zu erhalten:

https://portal.passwork.pro/api/download?apikey=api_key

Gehen Sie zum Passwork-Kundenportal und kopieren Sie den API-Schlüssel, um die aktuelle Version zu erhalten:

Abrufen des API-Schlüssels im Kundenportal

Erstellen Sie die Variable API_KEY mit der Zertifikatsnummer:

$API_KEY = "your_api_key"

Laden Sie Passwork Version 7 mit folgender Anfrage herunter:

try {
(New-Object System.Net.WebClient).DownloadFile(
"https://portal.passwork.pro/api/download?apikey=$API_KEY",
"$env:SystemDrive\inetpub\new_version\passwork.zip"
)
Write-Output "Passwork archive successfully obtained"
} catch {
Write-Output "Error obtaining Passwork: $_"
}

Leeren Sie die Variable API_KEY mit der Zertifikatsnummer:

Remove-Variable API_KEY

Aktualisierung auf die aktuelle Version​

Aktuelle Passwork-Version in eine Variable einlesen:

$version = Get-Content "$env:SystemDrive\inetpub\wwwroot\passwork\version"

Passwork-Konfigurationsdateien in das temporäre Verzeichnis kopieren:

Copy-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\init\config.env" -Destination "$env:SystemDrive\inetpub\new_version\" -Recurse -Force
Copy-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\init\encryption_key" -Destination "$env:SystemDrive\inetpub\new_version\" -Recurse -Force
Copy-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\.env.local" -Destination "$env:SystemDrive\inetpub\new_version\" -Recurse -Force

Erstellen Sie ein Archiv der aktuellen Passwork-Version, um ein Rollback auf die vorherige Version zu ermöglichen:

Compress-Archive -Path "$env:SystemDrive\inetpub\wwwroot\passwork\*" -DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork-$version.zip" -Force

Löschen Sie alle Inhalte aus dem Passwork-Verzeichnis:

Remove-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\*" -Recurse -Force

Entpacken Sie die aktualisierte Passwork-Version an den physischen Speicherort:

Expand-Archive -Path "$env:SystemDrive\inetpub\new_version\passwork.zip" -DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork\"

Verschieben Sie die kopierten Passwork-Konfigurationsdateien in die neue Version:

Copy-Item -Path "$env:SystemDrive\inetpub\new_version\config.env" -Destination "$env:SystemDrive\inetpub\wwwroot\passwork\init\" -Recurse -Force
Copy-Item -Path "$env:SystemDrive\inetpub\new_version\encryption_key" -Destination "$env:SystemDrive\inetpub\wwwroot\passwork\init\" -Recurse -Force
Copy-Item -Path "$env:SystemDrive\inetpub\new_version\.env.local" -Destination "$env:SystemDrive\inetpub\wwwroot\passwork\" -Recurse -Force

Löschen Sie das temporäre Verzeichnis update_passwork:

Remove-Item -Path "$env:SystemDrive\inetpub\new_version" -Recurse -Force

Setzen Sie die Berechtigungen für den physischen Speicherort von Passwork:

Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'IIS_IUSRS:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'Users:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'IUSR:(OI)(CI)`M'"

Laden Sie die Rewrite-Regeln web.config herunter und platzieren Sie sie in der neuen Passwork-Version — C:\inetpub\wwwroot\passwork\public\web.config

web.config

PHP registrieren und Erweiterungen aktivieren​

Importieren Sie IIS-Module und registrieren Sie die PHP-Version:

Import-Module IISAdministration
Add-PsSnapin PHPManagerSnapin

New-PHPVersion -ScriptProcessor "$env:ProgramFiles\php8.3\php-cgi.exe" -SiteName "Passwork Web Site" -VirtualPath "/"

Aktivieren Sie PHP-Erweiterungen für die Passwork-Website:

$extensions = @(
"php_curl.dll",
"php_gd.dll",
"php_gettext.dll",
"php_intl.dll",
"php_ldap.dll",
"php_mbstring.dll",
"php_mongodb.dll",
"php_mysqli.dll",
"php_openssl.dll",
"php_pdo_pgsql.dll",
"php_pdo_sqlite.dll",
"php_pgsql.dll",
"php_soap.dll",
"php_zip.dll",
"php_fileinfo.dll"
)

foreach ($extension in $extensions) {
Write-Host "PHP extension enabled: $extension"
Set-PHPExtension -Name $extension -Status Enabled -SiteName "Passwork Web Site" -VirtualPath "/"
}

Aktivieren Sie zusätzliche PHP-Methoden für die Passwork-Website:

$phpVersion=(Get-PHPConfiguration -SiteName "Passwork Web Site" -VirtualPath "/").Version
Set-WebConfigurationProperty -PSPath "IIS:\Sites\Passwork Web Site" -Filter "system.webServer/handlers/add[@name='php-$phpVersion']" -Name "verb" -Value "GET,HEAD,POST,PUT,DELETE,PATCH"

Navigieren Sie zum Stammverzeichnis von Passwork und aktualisieren Sie die Passwork-Version in der Datenbank:

cd "$env:SystemDrive\inetpub\wwwroot\passwork"
php -d "memory_limit=-1" .\bin\console cache:clear
php -d "memory_limit=-1" .\bin\console cache:warmup
php -d "memory_limit=-1" .\bin\console app:update
gefahr

Wenn die Passwork-Weboberfläche nach der Aktualisierung Warnmeldungen anzeigt: