Windows Server
Данная инструкция предпологает следующее расположение компонентов и Пассворка:
- Расположение Пассворка — C:\inetpub\wwroot\passwork
- Расположение PHP8.3 — C:\Program Files\php8.3
- Имя веб-сайта Пассворка в веб-сервере IIS — Passwork Web Site
Подготовка
Открыть PowerShell от имени «Администратора»:
С помощью контекстного меню Пуск
- Нажать правой кнопкой мыши на значке Пуск в левом нижнем углу экрана.
- Выбрать «Windows PowerShell (администратор)» из контекстного меню.
С помощью меню Пуск
- Нажать левой кнопкой мыши на значок Пуск в левом нижнем углу экрана.
- Прописать
powershell
- Открыть PowerShell от имени «Администратора» комбинацией —
Ctrl + Shift + Enter
Для проверки определения расположения Пассворка и имени веб-сайта, можно выполнить следующий код:
- PowerShell
# Импортировать модуль
Import-Module WebAdministration
# Получаем список всех сайтов в IIS
$sites = Get-Website
# Вывод заголовка
Write-Host "`n--- Список сайтов в IIS ---`n" -ForegroundColor Blue
foreach ($site in $sites) {
Write-Host "Сайт: " -NoNewline -ForegroundColor White
Write-Host $site.Name -ForegroundColor DarkGreen
# Получаем Привязки
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
}
# Получаем физический путь
$physicalPath = (Get-WebConfigurationProperty -Filter "system.applicationHost/sites/site[@name='$($site.Name)']/application[@path='/']/virtualDirectory[@path='/']" -Name physicalPath).Value
Write-Host " Физический путь: " -NoNewline -ForegroundColor DarkCyan
Write-Host $physicalPath -ForegroundColor White
Write-Host "------------------------------------" -ForegroundColor DarkGray
}
Получение актуальной версии Пассворка
Создать временную директорию для получения Пассворка:
- PowerShell
New-Item -Path "$env:WinDir\Temp\update_passwork" -ItemType Directory
Если сервер с Пассворк расположен в закрытом контуре, то необходимо перейти на клиентский портал Пассворка и вручную получить 7 версию и переместить на сервер в директорию с названием — C:\Windows\Temp\update_passwork\passwork.zip
Перейти на клиентский портал Пассворка и скопировать API-ключ для получения актуальной версии:

Создать переменную API_KEY:
- PowerShell
$API_KEY = "your_api_key"
Проверить доступную версию Пассворка из клиентского портала с помощью скопированного API-ключа запросом:
- PowerShell
Invoke-RestMethod -Uri "https://portal.passwork.ru/api/version?apikey=$API_KEY" -Method Get
Корректный вывод
- PowerShell
response
--------
@{last-available-version=07xxxx}
Необходимо убедиться, что для скачивания доступна 7 версия Пассворка — 07xxxx
Получить 7 версию Пассворка с помощью запроса:
- PowerShell
try {
(New-Object System.Net.WebClient).DownloadFile(
"https://portal.passwork.ru/api/download?apikey=$API_KEY",
"$env:WinDir\Temp\update_passwork\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\app\config\config.ini" -Destination "$env:SystemDrive\inetpub\wwwroot\"
Создать архив текущей версии Пассворка для возможности возврата:
- 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
Разархивировать 7 версию Пассворка в физическое расположение:
- PowerShell
Expand-Archive -Path "$env:WinDir\Temp\update_passwork\passwork.zip" -DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork\"
Скачать правила перезаписи (web.config) и поместить в новую версию Пассворка — $env:SystemDrive\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"
Удалить временную директорию расположения архива 7 версии Пассворка:
- PowerShell
Remove-Item -Path "$env:WinDir\Temp\update_passwork" -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'"