Saltar al contenido principal

Windows Server

peligro

Tenga en cuenta:

  • Esta instrucción asume lo siguiente:
    • Ubicación física de Passwork — C:\inetpub\wwwroot\passwork
    • Nombre del sitio web de Passwork — Passwork Web Site
  • Antes de actualizar, si Passwork está instalado en un entorno en la nube/virtual, cree una instantánea del estado virtual del sistema operativo para restaurar la funcionalidad en caso de una actualización incorrecta

Obtención de la versión actual de Passwork​

Cree un directorio temporal para obtener Passwork:

mkdir "$env:SystemDrive\inetpub\new_version"

Si el servidor con Passwork está ubicado en una red aislada​

Debe ir al Portal de clientes de Passwork, copiar el número de certificado y usar la barra de direcciones del navegador para obtener la versión 7 de Passwork:

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

Vaya al Portal de clientes de Passwork y copie la clave API para obtener la versión actual:

Obtención de la clave API en el portal de clientes

Cree una variable API_KEY con el número de certificado:

$API_KEY = "your_api_key"

Obtenga la versión 7 de Passwork utilizando la solicitud:

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: $_"
}

Limpie la variable API_KEY con el número de certificado:

Remove-Variable API_KEY

Actualización a la versión actual​

Obtenga la versión actual de Passwork en una variable:

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

Copie los archivos de configuración de Passwork al directorio temporal:

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

Cree un archivo de la versión actual de Passwork para permitir la reversión a la versión anterior:

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

Elimine todo el contenido del directorio de Passwork:

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

Extraiga la versión actualizada de Passwork a la ubicación física:

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

Mueva los archivos de configuración copiados de Passwork a la nueva versión:

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

Elimine el directorio temporal update_passwork:

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

Establezca los permisos para la ubicación física de 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'"

Descargue las reglas de reescritura web.config y colóquelo en la nueva versión de Passwork — C:\inetpub\wwwroot\passwork\public\web.config

web.config

Registro de PHP y habilitación de extensiones​

Importe los módulos de IIS y registre la versión de PHP:

Import-Module IISAdministration
Add-PsSnapin PHPManagerSnapin

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

Habilite las extensiones de PHP para el sitio web de Passwork:

$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 "/"
}

Habilite los métodos PHP adicionales para el sitio web de Passwork:

$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"

Vaya a la ubicación raíz de Passwork y actualice la versión de Passwork en la base de datos:

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

Si después de actualizar Passwork la interfaz web muestra advertencias: