Skip to content

Нативная установка BearPass на Astra Linux

Важная информация перед установкой Bearpass

Для нативной установки требуются PHP 8.4 и Nginx (в репозиториях Astra Linux отсутствуют), поэтому рекомендуется установка в Docker-контейнерах.

Нативная установка на Astra Linux 1.7 не поддерживается, т.к. нет актуальных репозиториев debian buster, содержащих пакеты php 8.4

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

Необходимо добавить пользователя, из-под которого будет работать web-server. Например, www-data.

shell
mkdir -p /var/www
adduser --home /var/www/ www-data
cp /etc/skel/.bashrc /var/www
cp /etc/skel/.profile /var/www
chown -R www-data:www-data /var/www
usermod -s /bin/bash www-data

Подключите репозиторий php и установите PHP 8.4 и необходимые расширения:

shell
sudo su
apt update
export DEBIAN_FRONTEND=noninteractive

apt-get install git nginx nginx-full  apt-transport-https lsb-release ca-certificates wget openssl postgresql -y -q
wget -O /etc/apt/trusted.gpg.d/php.gpg https://mirror.yandex.ru/mirrors/packages.sury.org/php/apt.gpg
# # для версии astra linux 1.8 следует использовать репозитории bookworm
sh -c 'echo "deb https://mirror.yandex.ru/mirrors/packages.sury.org/php/ bookworm main" > /etc/apt/sources.list.d/php.list'

Установите приоритет для внешних репозиториев:

shell
cat >> /etc/apt/preferences.d/astra.pin.pref <<EOF
Package: *
Pin: release n=bookworm
Pin-Priority: 1000
EOF

Обновите список пакетов и установите PHP и необходимые расширения:

shell

apt update
apt install php8.4 php8.4-{cli,curl,fpm,intl,mbstring,pgsql,zip,xml,bcmath,ldap} -y
-q
shell
cat >> /etc/php/8.4/fpm/php.ini <<EOF
date.timezone = "Europe/Moscow"
include_path = "."
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
EOF

cat >> /etc/php/8.4/cli/php.ini <<EOF
date.timezone = "Europe/Moscow"
include_path = "."
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
EOF

PHP-FPM

В файле /etc/php/8.4/fpm/pool.d/www.conf проверить, что php-fpm запускается от ранее созданного пользователя (в нашем примере, www-data)

user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data

Если были внесены изменения - перезапустите php-fpm и добавьте в автозагрузку:

# автозозагрузка php-fpm
systemctl enable --now php8.4-fpm
# перезапуск php-fpm
systemctl restart php8.4-fpm

PostgreSQL

Общую информацию по установке и настройке PostgreSQL можно найти в официальной документации.

Установка PostgreSQL

shell
apt-get install postgresql

Создать пользователя и базы данных

Супер пользователем PostgreSQL является системный пользователь postgres. Для этого сначала логинимся в него:

shell
su postgres

Потом подключаемся к Postgres:

shell
psql

Создание пользователя:

CREATE USER bear_pass WITH encrypted password 'bear_PaCCw0rd';

Создание базы данных:

CREATE DATABASE bear_pass OWNER bear_pass ENCODING 'UNICODE';

Сконфигурируйте настройку мандантного доступа для postgres ac_ignore_maclabel = true.

# проверить можно командой
grep ignore_maclabel /etc/postgresql/15/main/postgresql.conf
# если значение, false, то изменить на true
sed -i 's/^#*ac_ignore_maclabel = .*/ac_ignore_maclabel = true/' /etc/postgresql/15/
main/postgresql.conf
# перезапустите postgresql
systemctl restart postgresql

Установка приложения

Важно

Крайне не рекомендуем использовать root в качестве пользователя, запускающего приложение. Все дальнейшие действия необходимо выполнять от пользователя веб-сервера, например www-data. Создание отдельного пользователя описано в настройках.

Проверить от какого пользователя у Вас работает nginx Вы можете в конфиге /etc/nginx/nginx.conf
Проверить от какого пользователя у Вас работает php-fpm Вы можете в конфиге /etc/php/8.4/fpm/pool.d/www.conf

Склонировать репозиторий с парольным менеджером:

shell
git clone https://git.bearpass.ru/bear-pass /var/www/bearpass

Перейти в директорию с проектом:

shell
cd /var/www/bearpass

Скопировать и настроить файл с переменными окружения:

shell
cp .env.example .env

Задайте владельца файлов веб-сервером:

shell
chown -R www-data:www-data /var/www/bearpass

В созданном файле .env задайте значения переменным:

  • APP_URL — URL по которому будет открываться парольный менеджер
  • DB_DATABASE — название базы данных
  • DB_USERNAME — пользователь с доступом к базе данных
  • DB_PASSWORD — пароль пользователя

Авторизуйтесь под пользователем www-data для установки пакетов в директорию приложения:

shell
# авторизуйтесь данной командой
pdp-exec -l :::: -- su www-data

Установите пакеты с помощью Composer:

shell
composer install --no-dev -q --no-ansi --no-interaction --no-scripts --no-progress
--prefer-dist &&
composer dump-autoload

Сгенерируйте ключи:

shell
php artisan key:generate && php artisan encryption-key:generate

Выполните миграции:

shell
php artisan migrate --seed --no-interaction --force && php artisan optimize:clear

Сгенерируйте учетную запись администратора:

shell
php artisan make:user

В ответ на эту команду должен прийти запрос на ввод почты и пароля.

Если этого не происходит, проверьте, что вы запускаете команду в папке с приложением (например, в /var/www/bearpass).

После создания пользователя можно продолжать в режиме суперпользователя.

Выпуск SSL-сертификата (для работы https)

Команда генерации самоподписанного сертификата:

openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout nginx.key -out nginx.crt

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

Предварительно зададим путь к директории с сертификатами и создадим его.

shell
CERT_DIR=/etc/nginx/ssl
mkdir -p $CERT_DIR
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 \
-keyout $CERT_DIR/nginx.key -out $CERT_DIR/nginx.crt
Пример вывода с пустым вводом:
..+...+.......+.....+......+.......+..+.............+......+..+....+......+...+.....
+.+.....+.+..+...............+.+.........+..+.+..+...+...+.+...+...+...+...........
+...+...+.......+......+.....+....+...+.....+.........+...+............+...+......+.
+...+..+...+......+.+...+......+.........+...+..+...+............++++++++++++++++++
+++++++++++++++++++++++++++*.......+....+..+...+......+...+.+..+....+........
+..........+.....+.+......+.....+.........+.+.....+.........+.+...+...+........
+..........
...........+.+..+.+..+++++++++++++++++++++++++++++++++++++++++++++*.+.....
+...............+..........+...+......+...+......+............+.........+......
+.............
..........+....+...+..+...+........................+.+..+.+.........+...........+.
+...+...+..+............+.........+..........+..+...+............+....+...
+..........
........+............+.....+......................+.............................
+......+...+...+...+......+......+...+......+.+............+........+....+...+.....
+.+.
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Скопируйте и настройте nginx для работы с SSL сертификатом.