Перейти к основному содержимому
Версия: 7.0

Windows Server

осторожно

Обратите внимание:

  • Данная инструкция предпологает следующее:
    • Физическое расположение Пассворка — C:\inetpub\wwwroot\passwork
    • Имя веб-сайта Пассворка — Passwork Web Site
  • Перед обновлением, если Пассворк установлен в облачной/виртуальной среде, создайте снимок виртуального состояния ОС для восстановления работоспособности в случае некорректного обновления

Получение актуальной версии Пассворка

Создайте временную директорию для получения Пассворка:

mkdir "$env:SystemDrive\inetpub\new_version"

Если сервер с Пассворком расположен в закрытом контуре

Необходимо перейти на клиентский портал Пассворка, скопировать номер сертификата и через адресную строку браузера получить 7 версию Пассворка —
https://portal.passwork.ru/api/download?apikey=api_key

Перейдите на клиентский портал Пассворка и скопируйте API-ключ для получения актуальной версии:

Получение API-ключа на клиентском портале

Создайте переменную API_KEY с номером сертификата:

$API_KEY = "your_api_key"

Получите 7 версию Пассворка с помощью запроса:

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 с номером сертификата:

Remove-Variable API_KEY

Обновление на актуальную версию

Получите в переменную текущую версию Пассворка:

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

Скопируйте конфигурационные файлы Пассворка в временную директорию:

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" -Destination "$env:SystemDrive\inetpub\new_version\" -Recurse -Force

Создайте архив текущей версии Пассворка для возможности отката к предыдущей версии:

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

Удалите всё содержимое из директории Пассворка:

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

Разархивируйте обновлённую версию Пассворка в физическое расположение:

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

Переместите скопированные конфигурационные файлы Пассворка в новую версию:

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
Remove-Item -Path "$env:SystemDrive\inetpub\wwwroot\passwork\.env" -Recurse -Force
Copy-Item -Path "$env:SystemDrive\inetpub\new_version\.env" -Destination "$env:SystemDrive\inetpub\wwwroot\passwork\" -Recurse -Force

Удалите временную директорию update_passwork:

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

Установите права для физического расположения Пассворка:

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

web.config

Регистрация PHP и активация расширений

Импортируйте модули IIS и зарегистрируйте PHP версию:

Import-Module IISAdministration
Add-PsSnapin PHPManagerSnapin

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

Активируйте PHP расширения для веб-сайта Пассворка:

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

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

Перейдите в корневое расположение Пассворка и обновите версию Пассворка в базе данных:

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