Windows Server
Важно:
- Данная инструкция предпологает следующее:
- Физическое расположение Пассворка — C:\inetpub\wwwroot\passwork
- Имя веб-сайта Пассворка — Passwork Web Site
- Перед обновлением, если Пассворк установлен в облачной/виртуальной среде, создать снимок виртуального состояния ОС для восстановления работоспособности в случае некорректного обновления.
Получение актуальной версии Пассворка
Создать временную директорию для получения Пассворка:
- PowerShell
mkdir "$env:SystemDrive\inetpub\new_version"
Если сервер с Пассворком расположен в закрытом контуре
Необходимо перейти на клиентский портал Пассворка, скопировать номер сертификата и через адресную строку браузера получить 7 версию Пассворка —
https://portal.passwork.ru/api/download?apikey=api_key
Перейти на клиентский портал Пассворка и скопировать API-ключ для получения актуальной версии:

Создать переменную API_KEY с номером сертификата:
- PowerShell
$API_KEY = "your_api_key"
Получить 7 версию Пассворка с помощью запроса:
- PowerShell
try {
(New-Object System.Net.WebClient).DownloadFile(
"https://portal.passwork.ru/api/download?apikey=$API_KEY",
"$env:SystemDrive\inetpub\new_version\passwork.zip"
)
Write-Output "Архив с Пассворком успешно получен"
} catch {
Write-Output "Ошибка при получении Пассворка: $_"
}
Очистить переменную API_KEY с номером сертификата:
- PowerShell
Remove-Variable API_KEY
Обновление на актуальную версию
Получить в переменную текущую версию Пассворка:
- PowerShell
$version = Get-Content "$env:SystemDrive\inetpub\wwwroot\passwork\version"
Скопировать конфигурационные файлы Пассворка в временную директорию:
- PowerShell
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
Создать архив текущей версии Пассворка для возможности отката к предыдущей версии:
- PowerShell
Compress-Archive -Path "$env:SystemDrive\inetpub\wwwroot\passwork\*" -DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork-$version.zip" -Force
Удалить всё содержимое из директории Пассворка:
- PowerShell
Remove-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\*" -Recurse -Force
Разархивировать обновлённую версию Пассворка в физическое расположение:
- PowerShell
Expand-Archive -Path "$env:SystemDrive\inetpub\new_version\passwork.zip" -DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork\"
Переместить скопированные конфигурационные файлы Пассворка в новую версию:
- PowerShell
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
Удалить временную директорию update_passwork:
- PowerShell
Remove-Item -Path "$env:SystemDrive\inetpub\new_version" -Recurse -Force
Установить права для физического расположения Пассворка:
- PowerShell
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'"
Скачать правила перезаписи web.config и поместить в новую версию Пассворка — C:\inetpub\wwwroot\passwork\public\web.config
Регистрация PHP и активация расширений
Импортировать модули IIS и зарегистрировать PHP-версию:
- PowerShell
Import-Module IISAdministration
Add-PsSnapin PHPManagerSnapin
New-PHPVersion -ScriptProcessor "$env:ProgramFiles\php8.3\php-cgi.exe" -SiteName "Passwork Web Site" -VirtualPath "/"
Активировать PHP-расширения для веб-сайта Пассворка:
- PowerShell
$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"
Set-PHPExtension -Name $extension -Status Enabled -SiteName "Passwork Web Site" -VirtualPath "/"
}
Активировать для веб-сайта Пассворка дополнительные методы PHP:
- PowerShell
$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"
Перейти в корневое расположение Пассворка и обновить версию Пассворка в базе данных:
- PowerShell
cd "$env:SystemDrive\inetpub\wwwroot\passwork"
php -d "memory_limit=-1" .\bin\console cache:warmup
php -d "memory_limit=-1" .\bin\console app:update
Если после обновления Пассворка при открытии веб-интерфейса отображаются предупреждения: