Файловый менеджер в панели управления можно настроить более тонко. Вы можете добавить новые диски или заменить существующую реализацию своей. Можно подключить FTP, SFTP, Яндекс Диск и др.
Замена существующего диска
По умолчанию, используется встроенный в GameAP Daemon файловый сервер. Мы заменим эту реализацию на FTP.
Перейдите в Администрирование -> Игровые серверы -> Выберите игровой сервер -> Редактировать -> Настройки
Вам нужно добавить свою конфигурацию диска для файлового менеджера.
Имя: file-manager
Значение: (смотрите примеры ниже)
Значение обязательно должно быть валидным json. Можете воспользоваться валидатором https://jsoneditoronline.org/
Примеры конфигурации дисков
FTP
{
"server": {
"driver": "ftp",
"host": "example.com",
"username": "gameap",
"password": "password",
"passive": true,
"ssl": false
}
}
SFTP
Потребуется установить thephpleague/flysystem-sftp пакет.
{
"server": {
"driver": "sftp",
"host": "example.com",
"port": 22,
"username": "root",
"password": "passwd",
"root": "/path/to/dir"
}
}
Файловый менеджер использует FlySystem, поэтому можно добавить всё, что поддерживает FlySystem (SFTP, S3, WebDav, Google Cloud Storage, Яндекс Диск и другие).
Добавление новых дисков
Пример выше заменит диск server
, который используется по умолчанию. Можно добавить новые диски, например backup
и т.п.
Файловый менеджер использует функционал фреймворка (https://laravel.com/docs/7.x/filesystem), который использует FlySystem. Его мы будем дальше настраивать.
Разрешённые диски
В первую очередь нужно настроить разрешения на использование дисков файловым менеджером.
По умолчанию, он может использовать лишь диск с названием server
. Можно добавить другие диски, например server-backup
, server-ftp
и т.п. (Рекомендую использовать префикс server-
в названии дисков)
Создайте новый конфигурационный файл в config/file-manager.php
<?php
return [
'diskList' => ['server', 'server-backup'],
'leftDisk' => null,
'rightDisk' => null,
'cache' => null,
'windowsConfig' => 2,
'middleware' => ['web', 'auth']
];
Список дисков указывается в параметре diskList
, примеры:
'diskList' => ['server'], // По умолчанию
'diskList' => ['server', 'server-backup'],
'diskList' => ['server', 'server-backup', 'server-ftp'],
После редактирования конфигурации потребуется очистить кеш:
cd /var/www/gameap
./artisan config:cache
Добавление нового диска
Теперь перейдите в Администрирование -> Игровые серверы -> Выберите игровой сервер -> Редактировать -> Настройки
Добавьте новый параметр file-manager
с примерно следующим содержимым:
{
"server-backup": {
"driver": "ftp",
"host": "example.com",
"username": "gameap",
"password": "password",
"passive": true,
"ssl": false
}
}
Новый диск вы можете увидеть в файловом менеджере:
Пример конфигурации игрового сервера с несколькими дисками:
{
"server-backup": {
"driver": "sftp",
"host": "example.com",
"port": 22,
"username": "root",
"password": "password",
"root": "/path/to/dir"
},
"server-yandex": {
"driver": "webdav",
"baseUri": "https://webdav.yandex.ru",
"userName": "my-yandex-login",
"password": "PaS$worD",
"pathPrefix": "backups"
}
}
Решение проблем
Я добавил конфигурацию в админских настройках, но диск не появился
- Проверьте файл
config/file-manager.php
, в списке diskList
должно быть указано имя диска.
- Возможно в значении вы указали невалидный json. Проверьте значение здесь https://jsonformatter.curiousconcept.com/
При попытке открыть диск ошибка "Class 'League\Flysystem\Sftp\SftpAdapter' not found"
Для некоторых систем требуется установить дополнительные пакеты.
Вот некоторый список пакетов для некоторых систем:
SFTP
league/flysystem-sftp
cd /var/www/gameap
composer require --no-dev league/flysystem-sftp
WebDav (Для Яндекс диска)
pbmedia/laravel-webdav
cd /var/www/gameap
composer require --no-dev pbmedia/laravel-webdav