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

Windows Server

к сведению

Инструкция по установке Пассворка на ОС:

  • Windows Server 2016
  • Windows Server 2019
  • Windows Server 2022

1. Минимальные системные требования

Пассворк не требователен к системным ресурсам, а необходимое количество серверов зависит от числа активных пользователей, объема хранимых данных и требований к отказоустойчивости системы.

Ознакомьтесь с полными системными требованиями.

2. Базовые действия перед установкой

С помощью контекстного меню Пуск
  1. Нажать правой кнопкой мыши на значке Пуск в левом нижнем углу экрана.
  2. Выбрать «Windows PowerShell (администратор)» из контекстного меню.
С помощью меню Пуск
  1. Нажать левой кнопкой мыши на значок Пуск в левом нижнем углу экрана.
  2. Прописать powershell
  3. Открыть PowerShell от имени «Администратора» комбинацией — Ctrl + Shift + Enter
осторожно

Если используется Windows Server 2016 — нужно включить TLS-протокол для загрузки пакетов в операционную систему:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

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

New-Item -Path "С:\Windows\Temp\passwork_install" -ItemType Directory

Опеределить имена групп пользователей с помощью SID:

$userGroupSid = "S-1-5-32-545"
$userSecurityIdentifier = New-Object System.Security.Principal.SecurityIdentifier($userGroupSid)
$userGroupName = $userSecurityIdentifier.Translate([System.Security.Principal.NTAccount]).Value
$userGroupName = $userGroupName.Split("\")[1]

$iis_iusrsGroupSid = "S-1-5-32-568"
$iis_iusrsSecurityIdentifier = New-Object System.Security.Principal.SecurityIdentifier($iis_iusrsGroupSid)
$iis_iusrsGroupName = $iis_iusrsSecurityIdentifier.Translate([System.Security.Principal.NTAccount]).Value
$iis_iusrsGroupName = $iis_iusrsGroupName.Split("\")[1]

Установить роль IIS с модулем:

Install-WindowsFeature -Name Web-Server -IncludeManagementTools
Install-WindowsFeature -Name Web-CGI -IncludeManagementTools

3. Установка PHP

Загрузить архив PHP:

(New-Object System.Net.WebClient).DownloadFile("https://repos.passwork.ru/repository/windows_packages/php_build/83/php_latest.zip", "C:\Windows\Temp\passwork_install\php_latest.zip")
к сведению

В случае ошибок получить архив вручную

Разархивировать содержимое в Program Files:

Expand-Archive `
-Path "$env:SystemDrive\Windows\Temp\passwork_install\php_latest.zip" `
-DestinationPath "$env:ProgramFiles\"

Добавить PHP-утилиты в переменное окружение PATH:

[System.Environment]::SetEnvironmentVariable("PATH", [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine) + ";C:\Program Files\php8.3", [System.EnvironmentVariableTarget]::Machine)
$env:Path = [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine)

Установить права группе Users для PHP-директории:

Invoke-Expression "icacls '$env:ProgramFiles\php8.3' /grant '${userGroupName}:(OI)(CI)`M'"

4. Установка базы данных MongoDB

к сведению

Eсли вы планируете использовать PostgreSQL, пропустите 4-й шаг установки.

Подробнее о поддержке PostgreSQL

Загрузить установщик MongoDB:

(New-Object System.Net.WebClient).DownloadFile("https://repos.passwork.ru/repository/windows_packages/mongodb_database_latest.msi", "C:\Windows\Temp\passwork_install\mongodb_database_latest.msi")
к сведению

Установить MongoDB по умолчанию:

Start-Process -FilePath "msiexec.exe" -ArgumentList "/l*v", "C:\Windows\Temp\mdbinstall.log", "/qb", "/i", "C:\Windows\Temp\passwork_install\mongodb_database_latest.msi", "SHOULD_INSTALL_COMPASS=0", "ADDLOCAL=Router,ServerService" -Wait
к сведению

Для установки MongoDB на другой диск нужно добавить "INSTALLLOCATION=A:\MongoDB"

Создать директорию для утилит администрирования MongoDB:

New-Item -ItemType Directory -Force -Path "$env:ProgramFiles\MongoDB\Tools\"

Загрузить утилиты администрирования:

(New-Object System.Net.WebClient).DownloadFile("https://repos.passwork.ru/repository/windows_packages/database_tools_latest.zip", "C:\Windows\Temp\passwork_install\database_tools_latest.zip")
к сведению

Разархивировать содержимое:

Expand-Archive `
-Path "$env:SystemDrive\Windows\Temp\passwork_install\database_tools_latest.zip" `
-DestinationPath "$env:ProgramFiles\MongoDB\Tools\"

Добавить утилиты администрирования в переменное окружение PATH:

[System.Environment]::SetEnvironmentVariable("PATH", [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine) + ";C:\Program Files\MongoDB\Tools", [System.EnvironmentVariableTarget]::Machine)
$env:Path = [System.Environment]::GetEnvironmentVariable("PATH", [System.EnvironmentVariableTarget]::Machine)

5. Установка модулей для IIS

Загрузить архив с модулями:

(New-Object System.Net.WebClient).DownloadFile("https://repos.passwork.ru/repository/windows_packages/iis_package_latest.zip", "C:\Windows\Temp\passwork_install\iis_package_latest.zip")
к сведению

Разархивировать модули для IIS:

Expand-Archive `
-Path "$env:SystemDrive\Windows\Temp\passwork_install\iis_package_latest.zip" `
-DestinationPath "$env:SystemDrive\Windows\Temp\passwork_install\"

Установить Visual C++:

Start-Process `
-FilePath "$env:SystemDrive\Windows\Temp\passwork_install\VC_redist.x64.exe" `
-ArgumentList "/q" -Wait -ErrorAction Stop

Установить PHP Manager:

Start-Process -FilePath "msiexec.exe" `
-ArgumentList "/i $env:SystemDrive\Windows\Temp\passwork_install\PHPManagerForIIS_x64.msi /quiet /norestart" `
-Wait -ErrorAction Stop

Установить URL Rewrite:

Start-Process -FilePath "msiexec.exe" `
-ArgumentList "/i $env:SystemDrive\Windows\Temp\passwork_install\rewrite_amd64_en-US.msi /quiet /norestart" `
-Wait -ErrorAction Stop

6. Получение Пассворка

Создать директорию для Пассворка:

New-Item -ItemType Directory -Force -Path "C:\inetpub\wwwroot\passwork"

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

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

Создать переменную API_KEY:

$API_KEY = "your_api_key"

Проверить доступную версию Пассворка из клиентского портала:

Invoke-RestMethod -Uri "https://portal.passwork.ru/api/version?apikey=$API_KEY" -Method Get
Корректный вывод
response
--------
@{last-available-version=xxxxxxxx}

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

(New-Object System.Net.WebClient).DownloadFile("https://portal.passwork.ru/api/download?apikey=$API_KEY", "C:\Windows\Temp\passwork_install\passwork.zip")

Очистить переменную API_KEY:

Remove-Variable API_KEY

Разархивировать полученный архив:

Expand-Archive `
-Path "$env:SystemDrive\Windows\Temp\passwork_install\passwork.zip" `
-DestinationPath "$env:SystemDrive\inetpub\wwwroot\passwork\"

Получить и поместить web.config файл в C:\inetpub\wwwroot\passwork\public\ для правил перенаправления:

web.config

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

Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant '${userGroupName}:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant '${$iis_iusrsGroupName}:(OI)(CI)`M'"
Invoke-Expression "icacls '$env:SystemDrive\inetpub\wwwroot' /grant 'IUSR:(OI)(CI)`M'"

7. Создание веб-сайта с подключением PHP

осторожно

Важно: для корректной работы Пассворка необходимо использовать HTTPS-протокол.

Подключить модули в PowerShell для управления IIS:

Import-Module IISAdministration
Import-Module WebAdministration
Add-PsSnapin PHPManagerSnapin

Разблокировать конфигурацию handlers в IIS:

Invoke-Expression "$env:windir\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/handlers"

Создать веб-сайт с именем Passwork Web Site:

New-WebSite -Name "Passwork Web Site" -Port "5353" -PhysicalPath "C:\inetpub\wwwroot\passwork\public" -Force

Зарегистрировать PHP-версию для веб-сайта:

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

Активировать драйверы и расширения для веб-сайта:

$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

Обновить список HTTP-методов, разрешённых для обработчика PHP:

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"

8. Настройка веб-сервера для HTTPS-протокола

к сведению

Для обеспечения корректной работы необходимо использовать HTTPS протокол. Использование HTTP приведёт к ошибкам.

8.1 Генерация самоподписанного SSL-сертификата

Создать самоподписанный SSL-сертификат с значением имени сервера:

$dnsName = "$env:COMPUTERNAME"
$newCert = New-SelfSignedCertificate -DnsName $dnsName -CertStoreLocation cert:\LocalMachine\My

8.2 Создание привязки IIS для доступа по HTTPS-протоколу

Создать HTTPS-привязку в веб-сайте Пассворка:

New-WebBinding -Name "Passwork Web Site" -IPAddress "*" -Port "443" -Protocol "https"

Получить текущую привязку веб-сайта Пассворка:

$binding = Get-WebBinding -Name "Passwork Web Site" -Protocol "https"

Привязать ранее созданный самоподписанный SSL-сертификат к HTTPS-протоколу веб-сайта:

$binding.AddSslCertificate($newCert.GetCertHashString(), "my")

Перезапустить веб-сервер IIS:

Restart-Service -Name "W3SVC"

7. Прохождение чек-листа параметров

При первом подключении к Пассворк, необходимо пройти чек-лист параметров, в ходе которого будет выполнена:

  • Проверка необходимых параметров
  • Подключение к базе данных MongoDB
осторожно

Изменить подключение к MongoDB на адрес — mongodb://localhost:27017

  • Случайно сгенерированный ключ для шифрования данных в MongoDB
  • Проверка лицензионного ключа

После прохождения чек-листа будет предложено создать первого пользователя в Пассворк, где необходимо указать логин, пароль и почтовый адрес для отправки уведомлений.

к сведению

Дополнительные параметры компонентов, настройки безопасности и конфигурации системы Пассворка доступны в разделе расширенных настроек.

10. Настройка фоновых задач

Фоновые задачи — это задачи, которые выполняются по планировщику в фоновом режиме. Узнайте, как настроить фоновые задачи.

осторожно

Фоновые задачи обязательны для корректной работы части функционала Пассворка, например:

  • Работы LDAP;
  • Отправки почтовых уведомлений;
  • Загрузки фавиконов;
  • Очистки коллекции session в базе данных Пассворка.