Saltar al contenido principal

Windows Server

peligro

Esta instrucción asume las siguientes ubicaciones para los componentes y Passwork:

  • Ubicación de Passwork — C:\inetpub\wwroot\passwork
  • Ubicación de PHP8.3 — C:\Program Files\php8.3
  • Nombre del sitio web de Passwork en el servidor web IIS — Passwork Web Site

Preparación

Abra PowerShell como «Administrador»:

Usando el menú contextual de Inicio
  1. Haga clic derecho en el icono de Inicio en la esquina inferior izquierda de la pantalla.
  2. Seleccione «Windows PowerShell (Administrador)» en el menú contextual.
Usando el menú Inicio
  1. Haga clic izquierdo en el icono de Inicio en la esquina inferior izquierda de la pantalla.
  2. Escriba powershell
  3. Abra PowerShell como «Administrador» usando el atajo — Ctrl + Shift + Enter

Para verificar la ubicación de Passwork y el nombre del sitio web, puede ejecutar el siguiente código:

# Import the module
Import-Module WebAdministration

# Get the list of all sites in IIS
$sites = Get-Website

# Output header
Write-Host "`n--- List of sites in IIS ---`n" -ForegroundColor Blue

foreach ($site in $sites) {
Write-Host "Site: " -NoNewline -ForegroundColor White
Write-Host $site.Name -ForegroundColor DarkGreen

# Get Bindings
Write-Host " Bindings:" -ForegroundColor DarkCyan
foreach ($binding in $site.Bindings.Collection) {
Write-Host " - Protocol: " -NoNewline -ForegroundColor Gray
Write-Host $binding.Protocol -ForegroundColor White

Write-Host " Address: " -NoNewline -ForegroundColor Gray
Write-Host $binding.BindingInformation -ForegroundColor White
}

# Get physical path
$physicalPath = (Get-WebConfigurationProperty -Filter "system.applicationHost/sites/site[@name='$($site.Name)']/application[@path='/']/virtualDirectory[@path='/']" -Name physicalPath).Value
Write-Host " Physical path: " -NoNewline -ForegroundColor DarkCyan
Write-Host $physicalPath -ForegroundColor White

Write-Host "------------------------------------" -ForegroundColor DarkGray
}

Obtención de la versión actual de Passwork

Cree un directorio temporal para recibir Passwork:

New-Item -Path "$env:WinDir\Temp\update_passwork" -ItemType Directory
peligro

Si el servidor con Passwork se encuentra en una red cerrada, debe ir al Portal de clientes de Passwork y obtener manualmente la versión 7, luego moverla al servidor en el directorio llamado — C:\Windows\Temp\update_passwork\passwork.zip

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 la variable API_KEY:

$API_KEY = "your_api_key"

Verifique la versión disponible de Passwork desde el portal de clientes utilizando la clave API copiada con la siguiente solicitud:

Invoke-RestMethod -Uri "https://portal.passwork.pro/api/version?apikey=$API_KEY" -Method Get
Salida correcta
response
--------
@{last-available-version=07xxxx}
peligro

Asegúrese de que la versión 7 de Passwork esté disponible para descargar — 07xxxx

Descargue la versión 7 de Passwork con la siguiente solicitud:

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

Limpie la variable API_KEY:

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 el archivo de configuración de Passwork a un directorio separado:

Copy-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\app\config\config.ini" -Destination "$env:SystemDrive\inetpub\wwwroot\"

Cree un archivo comprimido de la versión actual de Passwork para posibilitar la reversión:

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 7 de Passwork en la ubicación física:

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

Descargue las reglas de reescritura (web.config) y colóquelas en la nueva versión de Passwork:

$env:SystemDrive\inetpub\wwwroot\passwork\public\web.config

web.config

Registro de PHP y activació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 "/"

Active 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 activated: $extension"
Set-PHPExtension -Name $extension -Status Enabled -SiteName "Passwork Web Site" -VirtualPath "/"
}

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

Elimine el directorio temporal que contiene el archivo comprimido de Passwork versión 7:

Remove-Item -Path "$env:WinDir\Temp\update_passwork" -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'"