Перейти к основному содержимому
Это документация для Пассворка версии 6.0, которая больше не поддерживается.

Актуальная документация находится на странице последней версии 7.0.
Версия: 6.0

Alma/Rocky/CentOS/MSVSPhere

к сведению

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

  • CentOS 8 Stream, Alma Linux 8, Rocky Linux 8, MSVSPhere 8.
  • CentOS 9 Stream, Alma Linux 9, Rocky Linux 9, MSVSPhere 9.

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

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

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

к сведению

Если сервер имеет 2-4 ГБ ОЗУ, то для корректной сборки всех библиотек мы рекомендуем включить SWAP-файл

Создание SWAP файла на Linux

осторожно

В инструкции используются переключаемые блоки кода для разделения команд согласно версиям операционной системы

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

Получить права root и обновить локальную базу данных пакетов:

sudo -i 
yum makecache

Установить пакет для контроля версий Git, веб-сервер Apache2 и утилиту передачи данных curl:

yum install git httpd curl -y

Запустить службу httpd.service:

systemctl start httpd.service

Включить автозапуск службы:

systemctl enable httpd.service

2.1 Установка и базовая настройка Firewalld

Установить службу динамического управления брандмауэром Firewalld:

yum install firewalld -y

Запустить службу firewalld.service:

systemctl start firewalld.service

Включить автозапуск службы:

systemctl enable firewalld.service

Добавить HTTP-протокол в список разрешенных сервисов конфигурации Firewalld:

firewall-cmd --permanent --add-service=http

Добавить HTTPS-протокол в список разрешенных сервисов конфигурации Firewalld:

firewall-cmd --permanent --add-service=https

Применить изменения в конфигурации Firewalld:

firewall-cmd --reload

2.2 Отключение SELinux и перезагрузка ОС

Отредактировать конфигурационный файл /etc/selinux/config:

nano /etc/selinux/config

Изменить значение параметра SELINUX с enforcing на disabled:

SELINUX=disabled

Сохранить изменения (Ctrl+O) и выйдите (Ctrl+X). Перезагрузить систему, чтобы применить изменения в SELinux:

reboot

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

3.1 Установка необходимых репозиториев

Установить пакет EPEL (epel-release) и утилиты для управления пакетами yum (yum-utils):

yum -y install epel-release yum-utils

Получить и установите последний EPEL репозиторий:

dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

3.2 Загрузка архива

Загрузить PHP-архив в текущую директорию:

curl -O https://repos.passwork.ru/repository/php/builds/82/linux/el/90/x86_64/php_latest.tar.gz
(Опционально) Проверка подписи архива
curl -O https://repos.passwork.ru/repository/php/builds/82/linux/el/90/x86_64/php_latest.tar.gz
curl -O https://repos.passwork.ru/repository/php/builds/82/linux/el/90/x86_64/php_latest.tar.gz.sig
curl https://passwork.ru/public-key -o pubkey.pem
openssl dgst -sha256 -verify pubkey.pem -signature php_latest.tar.gz.sig php_latest.tar.gz
к сведению

Вы также можете скачать архивы вручную:

Создать директорию и разархивируйте содержимое:

mkdir ./php && tar -zxvf ./php_latest.tar.gz -C ./php/

3.3 Установка

Установить все .rpm пакеты из архива:

dnf -y install ./php/*.rpm

Установить утилиту PEAR с помощью go-pear.phar:

php ./php/go-pear.phar
к сведению

Выполнить стандартную (без изменений) установку — Enter

3.4 Установка PHP MongoDB драйвера

Установить драйвер PHP MongoDB:

pecl install ./php/mongodb-*.tgz

Создать файлы конфигурации для загрузки и включения PHP MongoDB:

echo "extension=mongodb.so" | tee /etc/php.d/20-mongodb.ini

3.5 Установка PHP Phalcon расширения

Установить расширение PHP Phalcon:

pecl install ./php/phalcon-*.tgz

Создать файлы конфигурации для загрузки и включения PHP Phalcon:

echo "extension=phalcon.so" | tee /etc/php.d/20-phalcon.ini

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

Создать файл для добавления репозитория MongoDB к системе управления пакетами yum:

nano /etc/yum.repos.d/mongodb-org-6.0.repo

Поместить в файл следующее содержимое:

[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-6.0.asc

Установить MongoDB:

yum install mongodb-org -y

Запустить службу mongod.service:

systemctl start mongod.service

Включить автозапуск службы:

systemctl enable mongod.service

5. Управление и загрузка последней версии Пассворк с помощью Git

Перейти в директорию /var/www/:

cd /var/www/

Добавить глобальную конфигурацию Git, указывающую на безопасную директорию:

git config --global --add safe.directory /var/www

Инициализировать Git репозиторий в директории /var/www/:

git init

Добавить удалённый репозиторий Пассворк:

git remote add origin https://passwork.download/passwork/passwork.git

Получить удалённый репозиторий на локальный сервер:

git fetch
к сведению

Система запросит логин и пароль к репозиторию, которые находятся в клиентском портале Пассворка. Если у вас нет доступа к клиентскому порталу, свяжитесь с нами.

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

git checkout v6

Назначить права на директории и файлы и сделать apache владельцем всех файлов:

find /var/www/ -type d -exec chmod 755 {} \;
find /var/www/ -type f -exec chmod 644 {} \;
chown -R apache:apache /var/www/

6. Настройка Apache2 для доступа по HTTP-протоколу

Открыть файл конфигурации виртуального хоста для HTTP-соединения:

nano /etc/httpd/conf.d/non-ssl.conf

Отредактировать содержимое файла и привести к следующему виду:

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/public
<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog logs/error_log
TransferLog logs/access_log
LogLevel warn
</VirtualHost>

Перезапустить веб-сервер (httpd.service):

systemctl restart httpd.service
к сведению

Открыть http://passwork.local или http://127.0.0.1 для проверки подключения к Пассворк

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

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

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

Оставьте все поля в значениях по умолчанию, если вы устанавливаете новую копию Пассворк

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

осторожно

Первый пользователь по умолчанию является локальным и владельцем Пассворка. В случае назначения владельцем LDAP/SSO пользователя, он автоматически станет локальным и вы не сможете авторизоваться.

8. Настройка доступа по HTTPS-протоколу

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

Установить SSL модуль для Apache2:

yum install mod_ssl -y

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

mkdir /etc/ssl/private

Сгенерировать самоподписанный сертификат X.509 для Apache2 с помощью OpenSSL:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj '/CN=your.domain.name' -addext 'subjectAltName=DNS:your.domain.name,IP:192.168.0.100' -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
осторожно
  • Common Name (CN) — указать IP-адрес сервера или имя хоста так, чтобы они совпадали с тем, как пользователи открывают сайт (по доменному имени или по IP);
  • subjectAltName (SAN) — передать -addext 'subjectAltName=DNS:your.domain.name,IP:192.168.0.100', подставив вместо your.domain.name и 192.168.0.100 текущее DNS-имя и IP-адрес сервера;
к сведению

Браузеры и SAN — браузеры при проверке HTTPS в первую очередь используют расширение Subject Alternative Name (SAN), а не только поле CN (Common Name). Чтобы избежать несоответствия имени хоста, задать в SAN и DNS, и IP в соответствии с адресом, который вводят пользователи.

Сгенерировать параметры Диффи-Хеллмана с длиной ключа 2048:

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Добавить параметры Диффи-Хеллмана к самоподписанному сертификату:

cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/apache-selfsigned.crt

Установить права доступа root пользователю для защиты закрытого ключа и сертификата:

chmod 700 /etc/ssl/private

8.2 Настройка виртуального хоста для доступа по HTTPS-протоколу

Открыть конфигурационный файл для настройки HTTPS протокола:

nano /etc/httpd/conf.d/ssl.conf

Найти раздел, начинающийся с <VirtualHost _default_:443> и внести следующие изменения:

  • Раскомментировать строку DocumentRoot и изменить путь на корневой каталог Пассворка (/var/www/public);
  • Раскомментировать строку ServerName и изменить www.example.com на IP-адрес или домен сервера (в зависимости от указанного значения в Common Name сертификата):
DocumentRoot /var/www/public
ServerName passwork.local:443
  • Добавить директиву — <Directory> после ServerName:
<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>
  • Закомментировать строки с SSLProtocol и SSLCipherSuite в конфигурации:
# SSLProtocol all -SSLv2
# SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
  • Обновить пути к файлам сертификатов, которые были сгенерированы ранее:
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
  • Проверить, что файл конфигурации виртуального хоста соответствует примеру:
Listen 443
<VirtualHost _default_:443>
DocumentRoot /var/www/public
ServerName passwork.local:443
<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
</VirtualHost>

Перезапустить веб-сервер (httpd.service):

systemctl restart httpd.service
к сведению

Проверить подключение к Пассворку по HTTPS протоколу — https://passwork.local

8.3 Настройка Пассворка для работы по HTTPS-протоколу

При использовании защищенного SSL-соединения (HTTPS) клиентские браузеры требуют определенных флагов для обработки данных Пассворка.

Если флаги session.cookie_secure и disableSameSiteCookie не установлены, браузеры не смогут установить соединение, что может приведет к ошибкам авторизации.

Установить параметр session.cookie_secure в файле /etc/php.ini:

sed -i '/session.cookie_secure =/c session.cookie_secure = On' /etc/php.ini

Установить параметр disableSameSiteCookie в /var/www/app/config/config.ini на значение Off:

sed -i '/disableSameSiteCookie =/c disableSameSiteCookie = Off' /var/www/app/config/config.ini
к сведению

Не устанавливайте эти параметры или верните их в исходное значение, если вы передумаете использовать SSL и будете работать через HTTP-протокол.

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

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

осторожно

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

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

10. Настройка безопасности

осторожно

Перед изменением и настройке параметров безопасности, настоятельно рекомендуем убедиться в стабильной и корректной работе Пассворка, а также создать резервную копию файлов

Безопасность сервера является важной частью обеспечения защиты ценных данных и ресурсов компании. Это процесс, который требует планирования и исполнения, чтобы обеспечить максимальную защиту от различных угроз.

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