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