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

SelectOS

к сведению

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

  • SelectOS 1.2

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

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

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

к сведению

Если сервер имеет 2–4 ГБ оперативной памяти, рекомендуется включить SWAP файл.

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

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

sudo -i
apt-get update

Установить веб-сервер Apache2 и вспомогательные утилиты:

apt-get install -y apache2 unzip curl zip jq gnupg ca-certificates
warning

В SelectOS локаль может быть не инициализирована по умолчанию. Это приведёт к ошибкам apt, dpkg, pecl и сборки расширений PHP.

Установить пакет locales и инициализировать локаль:

apt-get install -y locales
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 LC_CTYPE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8

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

warning

В SelectOS отсутствует пакет software-properties-common, поэтому добавление PPA-репозиториев недоступно. Репозиторий PHP добавляется вручную.

Получить и сохранить GPG-ключ PHP-репозитория:

curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /usr/share/keyrings/php.gpg

Добавить PHP-репозиторий в список источников apt:

echo "deb [signed-by=/usr/share/keyrings/php.gpg] https://packages.sury.org/php/ bookworm main" | tee /etc/apt/sources.list.d/php.list

Обновить локальный список пакетов и репозиториев:

apt-get update

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

apt-get install -y php8.3 php8.3-cli php8.3-fpm php8.3-bcmath php8.3-curl php8.3-gd php8.3-intl php8.3-ldap php8.3-mbstring php8.3-mysql php8.3-opcache php8.3-pgsql php8.3-soap php8.3-zip php8.3-sqlite3 php8.3-xml php8.3-dev php-pear

Изменить объём RAM, доступный для выполнения PHP-скриптов:

sed -i 's/^memory_limit\s*=.*/memory_limit = 256M/' /etc/php/8.3/fpm/php.ini
warning

При большом количестве пользователей рекомендуется увеличить memory_limit до 512M или выше.

Проверить статус службы PHP-FPM:

systemctl status php8.3-fpm

Запустить и включить автозапуск:

systemctl start php8.3-fpm
systemctl enable php8.3-fpm

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

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

pecl install mongodb
осторожно

Использовать стандартные параметры сборки — нажать Enter.

Создать конфигурационные файлы:

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

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

к сведению

Если планируется использование PostgreSQL — данный шаг можно пропустить.

Загрузить и добавить GPG-ключ MongoDB:

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpg

Добавить репозиторий MongoDB в файл:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Обновить список пакетов и установить MongoDB:

apt-get update
apt-get install -y mongodb-org

Запустить и включить службу:

systemctl start mongod
systemctl enable mongod

5. Получение и настройка Пассворка

Онлайн

Получить скрипт:

wget 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 https://repos.passwork.ru/repository/linux/scripts/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-сертификата

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

mkdir /etc/apache2/ssl/

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

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj '/CN=your.domain.name' -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
  • Common Name (CN) — Здесь важно указать IP-адрес сервера или имя хоста, так как сертификат должен соответствовать домену (или IP-адресу) для веб-сайта;

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

chmod 600 /etc/apache2/ssl/*

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

осторожно

Перед настройкой веб-сервера с включённой SSL-терминацией, рекомендуется ознакомиться с особенностями настройки.

Активировать модуль SSL в Apache2, позволяя серверу поддерживать протокол HTTPS:

a2enmod ssl

Включить конфигурационный файл виртуального хоста сайта с настройками для SSL-соединения:

a2ensite default-ssl

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

nano /etc/apache2/sites-enabled/default-ssl.conf

Внести следующие изменения:

  • Добавить строку ServerName и изменить www.example.com на IP-адрес или домен сервера (в зависимости от указанного значения в Common Name сертификата):
  • Раскомментировать строку DocumentRoot и изменить путь на корневой каталог Пассворка (/var/www/public);
ServerAdmin webmaster@localhost
ServerName passwork:443
DocumentRoot /var/www/public
  • Добавить директиву <Directory> после ServerName:
<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride FileInfo
Require all granted
</Directory>
  • Обновить пути к файлам сертификатов, которые были сгенерированы ранее:
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
  • Изменить обработчик .php-файлов, указав проксирование запросов к сокету php-fpm:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
  • После внесения изменений проверить, что файл конфигурации виртуального хоста соответствует примеру:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName passwork:443
DocumentRoot /var/www/public

<Directory /var/www/public>
Options +FollowSymLinks -Indexes -MultiViews
AllowOverride FileInfo
Require all granted
</Directory>

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
</IfModule>

Включить модули и перезапустить службы:

a2enmod rewrite proxy_fcgi setenvif
systemctl restart php8.3-fpm
systemctl restart apache2

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

При первом входе в Пассворк будет выполнено:

  • Проверка окружения
  • Подключение к MongoDB
  • Настройка шифрования
  • Проверка лицензии
  • Создание первого пользователя
к сведению

Дополнительные параметры доступны в разделе расширенных настроек.