Инструкция по ручной установке системы на веб-сервер: PHP-модули, база данных, файловая структура, зависимости, миграции и первичный импорт данных.
Для обновления есть отдельная инструкция. Для установки с docker есть отдельная инструкция.
Требуется PHP 8.1 или новее (см. composer.json). Пример установки для Debian/Ubuntu:
apt install php php-mbstring php-ldap php-xml php-mysql php-gd php-intl php-gmp php-imagick php-zip php-curl php-bcmath
Для работы с изображениями установка пакетов должна подтянуть ImageMagick. В файле /etc/ImageMagick-6/policy.xml (путь зависит от версии, может быть /etc/ImageMagick-7/policy.xml) перед строкой
</policymap>
вставьте строку:
<policy domain="coder" rights="read | write" pattern="PDF" />
это даст возможность обрабатывать PDF файлы.
NOTES:
utf8mb4 с collation utf8mb4_unicode_ci, т.к. на ней выбор остановился после устранения проблем с другими!ini
[innodb]
innodb_strict_mode = OFF;
innodb_large_prefix = trueПример создания БД достаточной для работы
CREATE DATABASE arms character set utf8mb4 collate utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON arms.* TO 'arms-user'@'localhost' IDENTIFIED BY 'secret-password';
Клонируем содержимое git-репозитория в папку, которая будет корнем сайта (DocumentRoot веб-сервера — именно корень проекта, а не подпапка web: лежащий в корне .htaccess сам переписывает запросы в web/).
git clone https://github.com/spo0okie/arms_inventory.git .
chmod 755 ./yii
Это установит все уникальные для этого проекта файлы, но не используемые им сторонние модули, которые поддерживаются другими разработчиками.
Проект в своей структуре содержит все ссылки на необходимые модули других производителей. Они устанавливаются через composer (уже должен присутствовать в системе, инструкции по установке есть на getcomposer.org):
composer update
Для боевой инсталляции можно добавить ключ
--no-dev, чтобы не ставить пакеты для разработки и тестирования (так собирается docker-образ).
Нужно создать папку для превью картинок
Приложению необходимо обеспечить доступ к файловой системе, поэтому процесс вебсервера должен иметь доступ на запись к папкам
TL;DR:
mkdir -p web/scans/thumbs
chmod 777 web/scans/thumbs
chmod 777 web/scans
chmod 777 web/assets
chmod 777 runtime
Создаем пустые конфиг файлы для персональных настроек инсталляции
config/params-local.php
<?php
return[];
config/web-local.php
<?php
return[];
config/db-local.php должен содержать реальные учетные данные БД для инвентаризации (настроить БД)
<?php
return [
'dsn' => 'mysql:host=localhost;dbname=arms',
'username' => 'arms-user',
'password' => 'secret-password',
];
config/ldap.php должен содержать корректный конфиг, даже если LDAP авторизация не будет использоваться
<?php
return [
'class'=>'Edvlerblog\Adldap2\Adldap2Wrapper',
'providers'=> [
'default'=>[
'autoconnect'=>true,
'config'=>[
'port' => 636,
//'port' => 389,
'hosts' => ['dc1.domain.local','dc2.domain.local'],
'account_suffix' => '@domain.local',
'base_dn' => "DC=domain,DC=local",
//под кем подключиться к АД (подойдет любой пользователь. права админа не нужны)
'username' => 'inventory@domain.local',
'password' => 'SuperSecretPassword1!',
'use_ssl' => true,
'use_tls' => true,
'custom_options' => [
// See: http://php.net/ldap_set_option
//LDAP_OPT_X_TLS_REQUIRE_CERT => LDAP_OPT_X_TLS_NEVER
],
],
],
],
];
Поскольку проект создан на базе фреймворка yii2, то для управления структурой БД используется встроенный в него инструмент миграций. При чистой установке (и после каждого обновления) необходимо выполнить
./yii migrate --migrationPath=@yii/rbac/migrations/
./yii migrate
В докер контейнере это делается автоматически при старте контейнера.
Создаем базовую роль admin для RBAC (нужно, даже если включать RBAC планируется позже, — см. настройку авторизации):
./yii rbac/init
Должен быть включен модуль rewrite, а для каталога проекта разрешен AllowOverride All — иначе не сработает .htaccess, который переписывает запросы в web/.
Пример файла apache2
<VirtualHost *:443>
ServerName inventory.domain.local
DocumentRoot "/var/www/arms"
<Directory "/var/www/arms">
Options -Indexes +Includes
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/apache2/inventory.https_error_ssl.log"
ServerSignature Off
CustomLog "/var/log/apache2/inventory.https_access_ssl.log" combined
SSLEngine on
SSLCertificateFile "/etc/ssl/certs/inventory.cer"
SSLCertificateKeyFile "/etc/ssl/private/private.key"
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLOptions +ExportCertData
</VirtualHost>
Из демо БД, чтобы вручную не заводить кучу оборудования, ПО, производителей и т.п.
(а также категории оборудования и производители)
./yii sync/tech-models https://inventory.reviakin.net/web/api guest guest1
(а также само ПО и производители)
./yii sync/soft-lists https://inventory.reviakin.net/web/api guest guest1
./yii sync/lic-groups https://inventory.reviakin.net/web/api guest guest1
После установки переходим к настройке авторизации и параметров приложения.