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 файл.
2. Базовые действия перед установкой
Получить права root и обновить локальную базу данных пакетов:
- shell
sudo -i
dnf makecache
Установить веб-сервер Apache2 и утилиту передачи данных curl:
- shell
dnf install -y httpd unzip curl zip jq
Заменить расположение DocumentRoot в конфигурации Apache:
- shell
sed -i 's|^DocumentRoot "/var/www/html"|DocumentRoot "/var/www"|' /etc/httpd/conf/httpd.conf
Запустить службу httpd.service:
- shell
systemctl start httpd.service
Включить автозапуск службы:
- shell
systemctl enable httpd.service
2.1 Установка и базовая настройка Firewalld
Установить службу динамического управления брандмауэром Firewalld:
- shell
dnf install firewalld -y
Запустить службу firewalld.service:
- shell
systemctl start firewalld.service
Включить автозапуск службы:
- shell
systemctl enable firewalld.service
Добавить HTTPS-протокол в список разрешенных сервисов конфигурации Firewalld:
- shell
firewall-cmd --permanent --add-service=https
Применить изменения в конфигурации Firewalld:
- shell
firewall-cmd --reload
2.2 Отключение SELinux и перезагрузка ОС
Отредактировать конфигурационный файл /etc/selinux/config:
- shell
nano /etc/selinux/config
Изменить значение параметра SELINUX с enforcing на disabled:
- shell
SELINUX=disabled
Сохранить изменения (Ctrl+O) и выйдите (Ctrl+X). Перезагрузить систему, чтобы применить изменения в SELinux:
- shell
reboot
3. Установка PHP
3.1 Установка необходимых репозиториев
Установить пакет EPEL (epel-release) и утилиты для управления пакетами yum (yum-utils):
- shell
dnf -y install epel-release yum-utils
Получить и установить последний EPEL репозиторий:
- OS 9
- OS 8
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
3.2 Загрузка архива
Получить PHP-архив в текущую директорию:
- OS 9
- OS 8
curl -O https://repos.passwork.ru/repository/php/builds/83/linux/el/90/x86_64/php_latest.tar.gz
curl -O https://repos.passwork.ru/repository/php/builds/83/linux/el/80/x86_64/php_latest.tar.gz
(Опционально) Проверка подписи архива
- OS 9
- OS 8
curl -O https://repos.passwork.ru/repository/php/builds/83/linux/el/90/x86_64/php_latest.tar.gz
curl -O https://repos.passwork.ru/repository/php/builds/83/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
curl -O https://repos.passwork.ru/repository/php/builds/83/linux/el/80/x86_64/php_latest.tar.gz
curl -O https://repos.passwork.ru/repository/php/builds/83/linux/el/80/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
Создать директорию и разархивируйте содержимое:
- shell
mkdir ./php && tar -zxvf ./php_latest.tar.gz -C ./php/
3.3 Установка
Установить все .rpm пакеты из архива:
- shell
dnf -y install ./php/*.rpm
Установить утилиту PEAR с помощью go-pear.phar:
- shell
php ./php/go-pear.phar
Выполнить стандартную (без изменений) установку — Enter
Изменить объём RAM, доступный для выполнения PHP скриптов:
- shell
sed -i 's/^memory_limit\s*=.*/memory_limit = 256M/' /etc/php.ini
Рекомендуется увеличивать параметр memory_limit с 256M до 512M или выше, если в Пассворке планируется большое количество пользователей.
Убедиться, что служба php-fpm запущена:
- shell
systemctl status php-fpm
Запустить и активировать автозапуск службы, если она остановлена:
- shell
systemctl start php-fpm
systemctl enable php-fpm
3.4 Установка PHP MongoDB драйвера
Установить драйвер PHP MongoDB:
- shell
pecl install ./php/mongodb-*.tgz
Выполнить стандартную (без изменений) сборку — Enter
Создать файл конфигурации для загрузки и включения PHP MongoDB:
- shell
echo "extension=mongodb.so" | tee /etc/php.d/20-mongodb.ini
4. Установка базы данных MongoDB
Если планируется использование PostgreSQL — пропустить 4-й шаг установки.
Подробнее о поддержке PostgreSQL.
Создать файл для добавления репозитор ия MongoDB к системе управления пакетами yum:
- shell
nano /etc/yum.repos.d/mongodb-org-7.0.repo
Поместить в файл следующее содержимое:
- OS 9
- OS 8
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc
[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc
Установить MongoDB:
- shell
dnf install mongodb-org -y
Запустить службу mongod.service:
- shell
systemctl start mongod.service
Включить автозапуск службы:
- shell
systemctl enable mongod.service
5. Получение и настройка Пассворка
Онлайн
Получить скрипт:
- wget
- curl
wget https://repos.passwork.ru/repository/linux/scripts/passwork.sh
curl -O https://repos.passwork.ru/repository/linux/scripts/passwork.sh
Скрипт установки Пассворка не должен располагаться в каталоге вместе с файлами сервера приложений.
Назначить скрипту права на исполнение:
chmod +x passwork.sh
По умолчанию, скрипт passwork.sh выполнит:
- Создание скрытого
.script_envфайла в текущем каталоге; - Создание директории
passwork_archiveдля резервного копирования Пассворка; - Получение последней доступной верси Пассворка, подпись и открытый ключ;
- Установку ранее полученного архива в
/var/www/
Чтобы использовать нестандартный путь установки, отключить проверку сертификата или изменить поведение можно использовать параметрами запуска скрипта.
Запустить скрипт:
sudo ./passwork.sh
При первом запуске скрипт запросит API-ключ и выполнит базовые проверки окружения:

Пример успешного выполнения скрипта:

Офлайн
Получить скрипт на другой машине с доступом в Интернет:
- wget
- curl
- PowerShell
wget https://repos.passwork.ru/repository/linux/scripts/passwork.sh
curl -O https://repos.passwork.ru/repository/linux/scripts/passwork.sh
(New-Object System.Net.WebClient).DownloadFile("https://repos.passwork.ru/repository/linux/scripts/passwork.sh", "$PWD\passwork.sh")
Или получить passwork.sh скрипт вручную используя ссылку
Скрипт установки Пассворка не должен располагаться в каталоге вместе с файлами сервера приложений.
Назначить скрипту права на исполнение:
chmod +x passwork.sh
Перед запуском passwork.sh необходимо:
- Получить 7 версию Пассворка из клиентского портала (Обязательно);
- Поместить в директорию запуска или использовать
--inputаргумент для указания расположение (Обязательно); - Получить подпись архива и публичный ключ Пассворка (необязательно если используется
--skipаргумент).
По умолчанию, скрипт passwork.sh выполнит:
- Создание директории
passwork_archiveдля резервного копирования Пассворка; - Разархивирование архива с Пассворком;
- Установку ранее полученного архива в
/var/www/
Чтобы использовать нестандартный путь установки, отключить проверку сертификата или изменить поведение можно использовать параметрами запуска скрипта.
После подготовки запустить passwork.sh скрипт:
sudo ./passwork.sh -offline
Пример успешного выполнения скрипта:

6. Настройка веб-сервера для HTTPS-протокола
Для обеспечения корректной работы необходимо использовать HTTPS протокол. Использование HTTP приведёт к ошибкам.
6.1 Генерация самоподписанного SSL-сертификата
Установить SSL модуль для Apache2:
- shell
dnf install mod_ssl -y
Создать новую директорию для хранения закрытого ключа и сертификата:
- shell
mkdir /etc/ssl/private
Сгенерировать самоподписанный сертификат X.509 для Apache2 с помощью OpenSSL:
- shell
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:
- shell
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Добавить параметры Диффи-Хеллмана к самоподписанному сертификату:
- shell
cat /etc/ssl/certs/dhparam.pem | tee -a /etc/ssl/certs/apache-selfsigned.crt
Установить права доступа root польз ователю для защиты закрытого ключа и сертификата:
- shell
chmod 700 /etc/ssl/private
6.2 Настройка виртуального хоста для доступа по HTTPS-протоколу
Перед настройкой веб-сервера с включённой SSL-терминацией, рекомендуется ознакомиться с особенностями настройки.
Открыть конфигурационный файл для настройки HTTPS протокола:
- shell
nano /etc/httpd/conf.d/ssl.conf
Найти раздел, начинающийся с <VirtualHost _default_:443> и внести следующие изменения:
- Раскомментировать строку DocumentRoot и изменить путь на корневой каталог Пассворка
/var/www/public; - Раскомментировать строку ServerName и изменить
www.example.comна IP-адрес или домен сервера (в зависимости от указанного значения вCommon Nameсертификата):
- shell
DocumentRoot /var/www/public
ServerName passwork:443
- Добавить директиву —
<Directory>послеServerName:
- shell
<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>
- Обновить пути к файлам сертификатов, которые были сгенерированы ранее:
- shell
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
- Изменить обработчик .php-файлов, указав проксирование запросов к сокету php-fpm:
- shell
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>
- Проверить, что блок
SSL Virtual Host Contextсоответсвует примеру:
- shell
<VirtualHost _default_:443>
DocumentRoot "/var/www/public"
ServerName passwork:443
<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLHonorCipherOrder on
SSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEM
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
Важно: при копировании и вставке приведённого примера в конфигурационный файл будут получены ошибки, так как в примере указан лишь фрагмент блока, а не полный конфигурационный файл.
Перезапустить службы:
- shell
systemctl restart php-fpm
systemctl restart httpd
7. Прохождение чек-листа
При первом подключении к Пассворк, необходимо пройти чек-лист параметров, в ходе которого будет выполнена:
- Проверка необходимых параметров
- Подключение к базе данных MongoDB
- Выбор режима шифрования данных
- Случайно сгенерированный ключ для шифрования данных в MongoDB
- Проверка лицензионного ключа
После прохождения чек-листа будет предложено создать первого пользователя в Пассворк, где необходимо указать логин, пароль и почтовый адрес для отправки уведомлений.
Дополнительные параметры компонентов, настройки безопасности и конфигурации системы Пассворка доступны в разделе расширенных настроек.