Устарело
...
Ручная установка
Linux
Windows Server
37мин
инструкция по установке пассворка на ос windows server 2016 windows server 2019 windows server 2022 1\ минимальные системные требования пассворк не требователен к системным ресурсам, а необходимое количество серверов зависит от числа активных пользователей, объема хранимых данных и требований к отказоустойчивости системы ознакомьтесь с технические требования docid\ mh 04wrskx 1qu5kbrlm 2\ базовые действия перед установкой открыть powershell от имени администратора нажать правой кнопкой мыши на значок пуск в левом нижнем углу экрана; выбрать windows powershell (администратор) в контекстном меню если используется windows server 2016 — нужно включить tls протокол для загрузки пакетов в операционную систему powershell \[net servicepointmanager] securityprotocol = \[net securityprotocoltype] tls12 создать временную директорию для скачивания пакетов и архивов powershell if ( not (test path "$env\ systemdrive\windows\temp\passwork install" pathtype container)) { new item path "$env\ systemdrive\windows\temp\passwork install" itemtype directory write host "директория успешно создана" foregroundcolor green } else { write host "директория уже существует" } опеределить имена групп пользователей с помощью sid powershell $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 с модулем powershell install windowsfeature name web server includemanagementtools install windowsfeature name web cgi includemanagementtools 3\ установка php загрузить архив php powershell try { (new object system net webclient) downloadfile( "https //repos passwork ru/repository/windows packages/php build/82/php latest zip", "$env\ systemdrive\windows\temp\passwork install\php latest zip" ) write host "php загружен успешно" foregroundcolor green } catch { write host "ошибка при загрузке php $ " foregroundcolor red } вы также можете скачать архив вручную разархивировать содержимое в program files powershell expand archive ` path "$env\ systemdrive\windows\temp\passwork install\php latest zip" ` destinationpath "$env\ programfiles\\" добавить php утилиты в переменное окружение path powershell if ( not (\[system environment] getenvironmentvariable("path", \[system environmentvariabletarget] user) contains("$env\ programfiles\php8 2"))) { \[system environment] setenvironmentvariable( "path", \[system environment] getenvironmentvariable("path", \[system environmentvariabletarget] user) + ";$env\ programfiles\php8 2", \[system environmentvariabletarget] user ) write host "директория php добавлена в переменное окружение path" foregroundcolor green } else { write host "директория php уже присутствует в переменном окружении path" } для проверки откройте новое окно powershell и выполните команду php v установить права группе users для php директории powershell invoke expression "icacls '$env\ programfiles\php8 2' /grant '${usergroupname} (oi)(ci)`m'" 4\ установка базы данных mongodb загрузить установщик mongodb powershell try { (new object system net webclient) downloadfile("https //repos passwork ru/repository/windows packages/mongodb database latest msi", "$env\ systemdrive\windows\temp\passwork install\mongodb database latest msi") write host "mongodb успешно загружен" foregroundcolor green } catch { write host "ошибка при загрузке mongodb $ " foregroundcolor red } вы также можете скачать инсталлятор вручную установить mongodb по умолчанию powershell try { start process filepath "msiexec exe" argumentlist "/l v", "$env\ systemdrive\windows\temp\mdbinstall log", "/qb", "/i", "$env\ systemdrive\windows\temp\passwork install\mongodb database latest msi", "should install compass=0", "addlocal=router,serverservice" wait erroraction stop } catch { write host "ошибка установки mongodb $ " foregroundcolor red } для установки mongodb на другой диск нужно добавить "installlocation=a \mongodb" создать директорию для утилит администрирования mongodb powershell if ( not (test path "$env\ programfiles\mongodb\tools\\")) { new item itemtype directory force path "$env\ programfiles\mongodb\tools\\" write host "директория успешно создана" foregroundcolor green } else { write host "директория уже существует" } загрузить утилиты администрирования powershell try { (new object system net webclient) downloadfile( "https //repos passwork ru/repository/windows packages/database tools latest zip", "$env\ systemdrive\windows\temp\passwork install\database tools latest zip" ) write host "утилиты администрирования загружены" foregroundcolor green } catch { write host "ошибка загрузки утилит администрирования $ " foregroundcolor red } вы также можете скачать утилиты вручную разархивировать содержимое powershell expand archive ` path "$env\ systemdrive\windows\temp\passwork install\database tools latest zip" ` destinationpath "$env\ programfiles\mongodb\tools\\" добавить утилиты администрирования в переменное окружение path powershell if ( not (\[system environment] getenvironmentvariable("path", \[system environmentvariabletarget] user) contains("$env\ programfiles\mongodb\tools"))) { \[system environment] setenvironmentvariable( "path", \[system environment] getenvironmentvariable("path", \[system environmentvariabletarget] user) + ";$env\ programfiles\mongodb\tools", \[system environmentvariabletarget] user ) write host "утилиты mongodb добавлены в переменное окружения path" foregroundcolor green } else { write host "утилиты mongodb уже присутствуют в переменной окружения path" } 5\ установка модулей для iis загрузить архив с модулями powershell try { (new object system net webclient) downloadfile( "https //repos passwork ru/repository/windows packages/iis package latest zip", "$env\ systemdrive\windows\temp\passwork install\iis package latest zip" ) write host "архив успешно загружен" foregroundcolor green } catch { write host "ошибка загрузки архива $ " foregroundcolor red } в случае ошибки вы можете скачать модули вручную разархивировать модули для iis powershell expand archive ` path "$env\ systemdrive\windows\temp\passwork install\iis package latest zip" ` destinationpath "$env\ systemdrive\windows\temp\passwork install\\" установить visual c++ powershell try { start process ` filepath "$env\ systemdrive\windows\temp\passwork install\vc redist x64 exe" ` argumentlist "/q" wait erroraction stop } catch { write host "установка visual c++ завершилась ошибкой $ " foregroundcolor red } установить php manager powershell try { start process filepath "msiexec exe" ` argumentlist "/i $env\ systemdrive\windows\temp\passwork install\phpmanagerforiis x64 msi /quiet /norestart" ` wait erroraction stop } catch { write host "установка php manager завершилась ошибкой $ " foregroundcolor red } установить url rewrite powershell try { start process filepath "msiexec exe" ` argumentlist "/i $env\ systemdrive\windows\temp\passwork install\rewrite amd64 en us msi /quiet /norestart" ` wait erroraction stop } catch { write host "установка url rewrite завершилась ошибкой $ " foregroundcolor red } 6\ получение последней версии пассворка создать директорию для пассворка powershell if ( not (test path "$env\ systemdrive\inetpub\wwwroot\passwork")) { new item itemtype directory force path "$env\ systemdrive\inetpub\wwwroot\passwork" write host "директория успешно создана" foregroundcolor green } else { write host "директория уже существует" } перейти на клиентский портал пассворка и скопировать номер сертификата получить актуальную версию пассворка, указав номер сертификата powershell try { (new object system net webclient) downloadfile( "https //portal passwork ru/api/download?certificate=номер сертификата", "$env\ systemdrive\windows\temp\passwork install\passwork zip" ) write host "пассворк успешно загружен" foregroundcolor green } catch { write host "ошибка загрузки пассворка $ " foregroundcolor red } разархивировать полученный архив powershell expand archive ` path "$env\ systemdrive\windows\temp\passwork install\passwork zip" ` destinationpath "$env\ systemdrive\inetpub\wwwroot\passwork\\" создать web config для правил перенаправления powershell "\<?xml version=`"1 0`" encoding=`"utf 8`"?> \<configuration> \<system webserver> \<rewrite> \<rules> \<rule name=`"imported rule 1`" stopprocessing=`"true`"> \<match url=`"^app/( )/( )/template (\[a z a z0 9]+) html`" ignorecase=`"false`" /> \<conditions logicalgrouping=`"matchall`"> \<add input=`"{request filename}`" matchtype=`"isfile`" ignorecase=`"false`" negate=`"true`" /> \</conditions> \<action type=`"rewrite`" url=`"app/{r 1}/{r 2}/template html`" /> \</rule> \<rule name=`"imported rule 2`" stopprocessing=`"true`"> \<match url=`"^extension/js/( )/( )/template (\[a z a z0 9]+) html`" ignorecase=`"false`" /> \<action type=`"rewrite`" url=`"extension/js/{r 1}/{r 2}/template html`" /> \</rule> \<rule name=`"imported rule 3`" stopprocessing=`"true`"> \<match url=`"^( )$`" ignorecase=`"false`" /> \<conditions logicalgrouping=`"matchall`"> \<add input=`"{request filename}`" matchtype=`"isdirectory`" ignorecase=`"false`" negate=`"true`" /> \<add input=`"{request filename}`" matchtype=`"isfile`" ignorecase=`"false`" negate=`"true`" /> \</conditions> \<action type=`"rewrite`" url=`"index php? url=/{r 1}`" appendquerystring=`"true`" /> \</rule> \</rules> \</rewrite> \</system webserver> \</configuration>" | out file filepath "$env\ systemdrive\inetpub\wwwroot\passwork\public\web config" encoding utf8 установить права для физического расположения пассворка powershell 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\ настройка веб сервера iis подключить модули в powershell для управления iis powershell import module iisadministration import module webadministration add pssnapin phpmanagersnapin разблокировать конфигурацию handlers в iis powershell invoke expression "$env\ windir\system32\inetsrv\appcmd exe unlock config section\ system webserver/handlers" получить используемые порты в операционной системе powershell function test portinuse { param ( \[int]$port ) try { $listener = \[system net sockets tcplistener] new(\[system net ipaddress] any, $port) $listener start() $listener stop() return $false } catch { return $true } } проверить занятые стандартные порты для веб сайта powershell if (test portinuse port 80) { $httpport = 5353 } else { $httpport = 80 } создать веб сайт (passwork web site) с http протоколом powershell new website name "passwork web site" port $httpport physicalpath "$env\ systemdrive\inetpub\wwwroot\passwork\public" force зарегистрировать php версию для веб сайта powershell new phpversion scriptprocessor "$env\ programfiles\php8 2\php cgi exe" sitename "passwork web site" virtualpath "/" активировать драйверы и расширения для веб сайта powershell $availableextensions = get phpextension sitename "passwork web site" virtualpath "/" $commands = @( @{name="php curl dll"; status="enabled"}, @{name="php gettext dll"; status="enabled"}, @{name="php zip dll"; status="enabled"}, @{name="php phalcon dll"; status="enabled"}, @{name="php mongodb dll"; status="enabled"}, @{name="php ldap dll"; status="enabled"}, @{name="php gd dll"; status="enabled"}, @{name="php openssl dll"; status="enabled"}, @{name="php soap dll"; status="enabled"}, @{name="php mbstring dll"; status="enabled"}, @{name="php mysqli dll"; status="enabled"}, @{name="php opcache dll"; status="enabled"} ) foreach ($command in $commands) { $extension = $availableextensions | where object {$ name eq $command name} if ( not $extension) { write host "$($command name) не доступен" } elseif ($extension status eq "enabled") { write host "$($command name) уже включен" } else { set phpextension name $command name status enabled sitename "passwork web site" virtualpath "/" write host "$($command name) успешно активировано" } } перезапустить веб сервер iis powershell restart service name "w3svc" открыть http //localhost 80 или http //localhost 5353 для проверки подключения к пассворку 8\ прохождение чек листа при первом подключении к пассворк, необходимо пройти чек лист параметров, в ходе которого будет выполнена проверка необходимых параметров подключение к базе данных mongodb случайно сгенерированный ключ для шифрования данных в mongodb проверка лицензионного ключа оставьте все поля в значениях по умолчанию, если вы устанавливаете новую копию пассворка после прохождения чек листа будет предложено создать первого пользователя в пассворк, где необходимо указать логин, пароль и почтовый адрес для отправки уведомлений первый пользователь по умолчанию является локальным и владельцем пассворка в случае назначения владельцем ldap/sso пользователя, он автоматически станет локальным и вы не сможете авторизоваться 9\ настройка доступа по https протоколу 9 1 генерация самоподписанного ssl сертификата проверить занятый стандартный порт для https протокола веб сайта powershell if (test portinuse port 443) { $httpsport = 444 } else { $httpsport = 443 } создать самоподписанный ssl сертификат с значением имени сервера powershell $dnsname = "$env\ computername" $newcert = new selfsignedcertificate dnsname $dnsname certstorelocation cert \localmachine\my 8 2 создание привязки iis для доступа по https протоколу создать https привязку в веб сайте пассворка powershell new webbinding name "passwork web site" ipaddress " " port $httpsport protocol "https" получить текущую привязку веб сайта пассворка powershell $binding = get webbinding name "passwork web site" protocol "https" привязать ранее созданный самоподписанный ssl сертификат к https протоколу веб сайта powershell $binding addsslcertificate($newcert getcerthashstring(), "my") перезапустить веб сервер iis powershell restart service name "w3svc" открыть https //localhost 443 или https //localhost 444 для проверки подключения к пассворку 8 3 настройка пассворка для работы по https протоколу при использовании защищенного ssl соединения (https) клиентские браузеры требуют определенных флагов для обработки данных пассворка если флаги session cookie secure и disablesamesitecookie не установлены, браузеры не смогут установить соединение, что может приведет к ошибкам авторизации установить параметр session cookie secure в файле c \program files\php8 2\php ini bash session cookie secure = 1 установить параметр disablesamesitecookie в c \inetpub\wwwroot\passwork\app\config\config ini на значение off bash disablesamesitecookie = off не устанавливайте эти параметры или верните их в исходное значение, если вы передумаете использовать ssl и будете работать через http протокол 9\ настройка фоновых задач фоновые задачи — это задачи, которые выполняются по планировщику в фоновом режиме узнайте, как настроить фоновые задачи docid\ kzc80wtyyipbgbgngjvcq фоновые задачи обязательны для корректной работы части функционала пассворка, например работы ldap; отправки почтовых уведомлений; загрузки фавиконов; очистки коллекции session в базе данных пассворка 10\ настройка безопасности перед изменением и настройке параметров безопасности, настоятельно рекомендуем убедиться в стабильной и корректной работе пассворка, а также создать резервную копию файлов безопасность сервера является важной частью обеспечения защиты ценных данных и ресурсов компании это процесс, который требует планирования и исполнения, чтобы обеспечить максимальную защиту от различных угроз ознакомьтесь с настройка безопасности docid x li81igyot52skmwmax пассворка