- Совместимость с XenForo
- XF 2.1
- XF 2.2
- Видимый копирайт
- Нет
Совместимость с версиями XenForo
Загрузка совместима только с XenForo версии 2.1 и выше.
Зачем нужно это руководство?
Начиная с версии XenForo 2.0.0, мы поддерживаем удаленное хранение файлов с использованием абстрактной файловой системы Flysystem. Она называется абстрактной файловой системой, поскольку добавляет уровень абстракции между кодом и файловой системой. Это означает, что он предоставляет согласованный API для выполнения операций с файловой системой, так что независимо от того, является ли файловая система локальной файловой системой на основе диска или распределенной и удаленно доступной файловой системой, наш код вызывает одни и те же функции, а Flysystem заботится обо всем остальном.
Как бы это ни было полезно, это не самая очевидная и простая настройка, поэтому данное руководство и прилагаемое дополнение помогут вам в этом.
Итак, если вы планируете использовать функцию загрузки видео в XF 2.1 или более поздней версии и вас беспокоят повышенные требования к дисковому пространству, это поможет.
Сделайте необходимые файлы доступными
Хотя вы можете загрузить файлы и настроить такие функции, как автозагрузка, самостоятельно, вы, вероятно, предпочтете просто загрузить дополнение, прикрепленное к этому ресурсу. Вы можете установить дополнение обычным способом.
Перед началом работы
Если вы настраиваете это на существующем сайте, вам нужно будет вручную переместить существующие файлы. Об этом есть раздел в конце. Пока вы перемещаете существующие файлы, настраиваете и тестируете, мы рекомендуем сначала закрыть форум.
Настройка DigitalOcean Spaces
Сначала мы рассмотрим этот процесс, поскольку он наиболее прост в настройке. Если вы предпочитаете использовать Amazon S3, перейдите к разделу "Настройка Amazon S3" ниже.
Теперь нам нужно создать некоторые учетные данные API. Для этого:
Настройка XF для использования DigitalOcean Spaces
Теперь нам нужно настроить XF для использования DigitalOcean Spaces для хранения файлов. Мы начнем с того, что обычно помещается в каталог данных в первую очередь. Обычно это включает миниатюры вложений и аватары.
Откройте свой файл
Сначала нам нужно настроить клиент Amazon S3 (DigitalOcean Spaces API совместим с Amazon AWS SDK).
Мы сделаем это с помощью закрытия, чтобы мы могли повторно использовать тот же код, и нам нужно будет ввести его только один раз:
Обратите внимание, что ключ и секрет - это то, что вы записали после настройки "Ключа доступа Spaces" ранее. Регион можно определить по URL-адресу конечной точки, который вы указали ранее. Это часть после первой. в URL-адресе, в моем случае это ams3. Конечная точка - это тот же URL-адрес конечной точки, за исключением уникального имени, которое вы выбрали.
Далее нам нужно настроить адаптер Flysystem для использования клиента S3:
Наконец, нам нужно убедиться, что перед URL-адресами аватара и миниатюр вложений указан правильный URL-адрес. Для этого снова требуется URL-адрес конечной точки, который вы указали ранее:
На данный момент все должно работать с точки зрения новых загрузок. Не пугайтесь, если заметите, что отсутствуют аватары и миниатюры; если у вас есть существующие файлы, их нужно будет переместить вручную, что мы рассмотрим позже.
Сначала нам нужно проверить, работает ли настройка. Просто перейдите и загрузите новый аватар. Теперь аватар будет храниться и обслуживаться удаленно!
Если вы сейчас проверите свою учетную запись DigitalOcean Spaces, вы увидите, что были созданы новые папки с вашим новым аватаром:
Успех!
Но мы только на полпути к этому!
Теперь нам нужно добавить поддержку каталога internal_data. Как правило, это вложения и любой другой материал, который должен быть "приватным". Вернемся к config.php и добавляемый код очень похож:
Теперь попробуйте загрузить вложение к сообщению, и, как и раньше, вы увидите дополнительные файлы и папки в вашем файловом браузере Spaces.
Настройка Amazon S3
Настройка XF для использования Amazon S3
Теперь нам нужно настроить XF для использования Amazon S3 в качестве хранилища файлов. Мы начнем с того, что обычно помещается в каталог данных в первую очередь. Обычно это включает миниатюры вложений и аватары.
Откройте свой файл
Мы сделаем это с помощью замыкания, чтобы мы могли повторно использовать один и тот же код, и нам нужно будет ввести его только один раз:
Обратите внимание, что ключ и секрет - это то, что вы указали ранее при настройке пользователя IAM. Регион можно определить по URL-адресу конечной точки S3.
Далее нам нужно настроить фактический адаптер Flysystem для использования клиента S3:
Наконец, нам нужно убедиться, что перед URL-адресами аватара и миниатюр вложений указан правильный URL-адрес:
На данный момент все должно работать с точки зрения новых загрузок. Не пугайтесь, если заметите, что отсутствуют аватары и миниатюры; если у вас есть существующие файлы, их нужно будет переместить вручную, что мы рассмотрим позже.
Сначала нам нужно проверить, работает ли конфигурация. Просто перейдите и загрузите новый аватар. Теперь аватар будет храниться и обслуживаться удаленно!
Если вы сейчас проверите свой браузер файлов bucket, вы увидите, что были созданы новые папки, содержащие ваш новый аватар:
Успех!
Но мы только на полпути к этому!
Теперь нам нужно добавить поддержку каталога
Теперь попробуйте загрузить вложение к сообщению, и, как и раньше, вы увидите дополнительные файлы и папки в вашем браузере файлов bucket.
Загрузка совместима только с XenForo версии 2.1 и выше.
Зачем нужно это руководство?
Начиная с версии XenForo 2.0.0, мы поддерживаем удаленное хранение файлов с использованием абстрактной файловой системы Flysystem. Она называется абстрактной файловой системой, поскольку добавляет уровень абстракции между кодом и файловой системой. Это означает, что он предоставляет согласованный API для выполнения операций с файловой системой, так что независимо от того, является ли файловая система локальной файловой системой на основе диска или распределенной и удаленно доступной файловой системой, наш код вызывает одни и те же функции, а Flysystem заботится обо всем остальном.
Как бы это ни было полезно, это не самая очевидная и простая настройка, поэтому данное руководство и прилагаемое дополнение помогут вам в этом.
Итак, если вы планируете использовать функцию загрузки видео в XF 2.1 или более поздней версии и вас беспокоят повышенные требования к дисковому пространству, это поможет.
Сделайте необходимые файлы доступными
Хотя вы можете загрузить файлы и настроить такие функции, как автозагрузка, самостоятельно, вы, вероятно, предпочтете просто загрузить дополнение, прикрепленное к этому ресурсу. Вы можете установить дополнение обычным способом.
Перед началом работы
Если вы настраиваете это на существующем сайте, вам нужно будет вручную переместить существующие файлы. Об этом есть раздел в конце. Пока вы перемещаете существующие файлы, настраиваете и тестируете, мы рекомендуем сначала закрыть форум.
Настройка DigitalOcean Spaces
Сначала мы рассмотрим этот процесс, поскольку он наиболее прост в настройке. Если вы предпочитаете использовать Amazon S3, перейдите к разделу "Настройка Amazon S3" ниже.
- Перейдите на страницу DigitalOcean Cloud и зарегистрируйтесь или войдите в систему.
- На данном этапе, если вы новичок в DigitalOcean, вам может потребоваться настроить выставление счетов.
- Теперь вы сможете создать новый проект.
- Нажмите на ссылку "Начать использовать Spaces".
- Выберите регион, в котором расположен ваш центр обработки данных (я выбрал Амстердам).
- Оставьте выбранным параметр "Ограничить список файлов".
- Выберите уникальное имя (я выбрал "xftest")
- Нажмите "Создать пробел"
Теперь нам нужно создать некоторые учетные данные API. Для этого:
- Нажмите "Управление" на левой боковой панели.
- Нажмите "API".
- В разделе "Ключи доступа к Spaces" нажмите "Создать новый ключ".
- Введите имя для ключа (опять же, я выбрал "xf-тест") и сохраните.
Настройка XF для использования DigitalOcean Spaces
Теперь нам нужно настроить XF для использования DigitalOcean Spaces для хранения файлов. Мы начнем с того, что обычно помещается в каталог данных в первую очередь. Обычно это включает миниатюры вложений и аватары.
Откройте свой файл
src/config.php
.Сначала нам нужно настроить клиент Amazon S3 (DigitalOcean Spaces API совместим с Amazon AWS SDK).
Мы сделаем это с помощью закрытия, чтобы мы могли повторно использовать тот же код, и нам нужно будет ввести его только один раз:
PHP:
$s3 = function()
{
return new \Aws\S3\S3Client([
'credentials' => [
'key' => 'ABC',
'secret' => '123'
],
'region' => 'ams3',
'version' => 'latest',
'endpoint' => 'https://ams3.digitaloceanspaces.com'
]);
};
Обратите внимание, что ключ и секрет - это то, что вы записали после настройки "Ключа доступа Spaces" ранее. Регион можно определить по URL-адресу конечной точки, который вы указали ранее. Это часть после первой. в URL-адресе, в моем случае это ams3. Конечная точка - это тот же URL-адрес конечной точки, за исключением уникального имени, которое вы выбрали.
Далее нам нужно настроить адаптер Flysystem для использования клиента S3:
PHP:
$config['fsAdapters']['data'] = function() use($s3)
{
return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3(), 'xftest', 'data');
};
Наконец, нам нужно убедиться, что перед URL-адресами аватара и миниатюр вложений указан правильный URL-адрес. Для этого снова требуется URL-адрес конечной точки, который вы указали ранее:
PHP:
$config['externalDataUrl'] = function($externalPath, $canonical)
{
return 'https://xftest.ams3.digitaloceanspaces.com/data/' . $externalPath;
};
На данный момент все должно работать с точки зрения новых загрузок. Не пугайтесь, если заметите, что отсутствуют аватары и миниатюры; если у вас есть существующие файлы, их нужно будет переместить вручную, что мы рассмотрим позже.
Сначала нам нужно проверить, работает ли настройка. Просто перейдите и загрузите новый аватар. Теперь аватар будет храниться и обслуживаться удаленно!
Если вы сейчас проверите свою учетную запись DigitalOcean Spaces, вы увидите, что были созданы новые папки с вашим новым аватаром:
Успех!

Теперь нам нужно добавить поддержку каталога internal_data. Как правило, это вложения и любой другой материал, который должен быть "приватным". Вернемся к config.php и добавляемый код очень похож:
PHP:
$config['fsAdapters']['internal-data'] = function() use($s3)
{
return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3(), 'xftest', 'internal_data');
};
Теперь попробуйте загрузить вложение к сообщению, и, как и раньше, вы увидите дополнительные файлы и папки в вашем файловом браузере Spaces.

Настройка Amazon S3
- Перейдите на страницу консоли управления AWS и зарегистрируйтесь или войдите в систему.
- В разделе "Сервисы AWS" введите "S3", чтобы перейти к "Консоли S3".
- Нажмите "Создать корзину".
- Выберите имя корзины (я выбрал xf test).
- Выберите регион (я выбрал EU London).
- Принимайте любые дополнительные параметры по умолчанию, пока корзина не будет создана.
- Теперь вам нужно перейти в консоль "IAM".
- Нажмите "Добавить пользователя".
- Выберите имя пользователя (да, я снова использовал xf test
).
- Установите тип доступа "Программный".
- Чтобы задать разрешения, перейдите на вкладку "Напрямую подключать существующие политики", а затем нажмите кнопку "Создать политику".
- Я являюсь пользователем, и различные политики и разрешения могут быть довольно сложными. Мы можем немного упростить задачу, хотя у вас могут быть другие требования. На этой странице есть вкладка под названием "JSON". Вставьте туда следующее, заменив ВАШЕ имя корзины на то, которое вы выбрали ранее:
JSON:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectAcl",
"s3:putObject",
"s3:putObjectAcl",
"s3:ReplicateObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::YOUR-BUCKET-NAME",
"arn:aws:s3:::YOUR-BUCKET-NAME/*"
]
}
]
}
- Нажмите "Просмотреть политику", дайте ей название и сохраните.
- Вернитесь на предыдущую страницу "Добавить пользователя", нажмите кнопку "Обновить" и найдите политику, которую вы только что создали.
- Нажмите "Далее", а затем "Создать пользователя".
Настройка XF для использования Amazon S3
Теперь нам нужно настроить XF для использования Amazon S3 в качестве хранилища файлов. Мы начнем с того, что обычно помещается в каталог данных в первую очередь. Обычно это включает миниатюры вложений и аватары.
Откройте свой файл
src/config.php
.Мы сделаем это с помощью замыкания, чтобы мы могли повторно использовать один и тот же код, и нам нужно будет ввести его только один раз:
PHP:
$s3 = function()
{
return new \Aws\S3\S3Client([
'credentials' => [
'key' => 'ABC',
'secret' => '123'
],
'region' => 'eu-west-2',
'version' => 'latest',
'endpoint' => 'https://s3.eu-west-2.amazonaws.com'
]);
};
Обратите внимание, что ключ и секрет - это то, что вы указали ранее при настройке пользователя IAM. Регион можно определить по URL-адресу конечной точки S3.
Далее нам нужно настроить фактический адаптер Flysystem для использования клиента S3:
PHP:
$config['fsAdapters']['data'] = function() use($s3)
{
return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3(), 'xftest', 'data');
};
Наконец, нам нужно убедиться, что перед URL-адресами аватара и миниатюр вложений указан правильный URL-адрес:
PHP:
$config['externalDataUrl'] = function($externalPath, $canonical)
{
return 'https://xftest.s3.eu-west-2.amazonaws.com/data/' . $externalPath;
};
На данный момент все должно работать с точки зрения новых загрузок. Не пугайтесь, если заметите, что отсутствуют аватары и миниатюры; если у вас есть существующие файлы, их нужно будет переместить вручную, что мы рассмотрим позже.
Сначала нам нужно проверить, работает ли конфигурация. Просто перейдите и загрузите новый аватар. Теперь аватар будет храниться и обслуживаться удаленно!
Если вы сейчас проверите свой браузер файлов bucket, вы увидите, что были созданы новые папки, содержащие ваш новый аватар:
Успех!

Теперь нам нужно добавить поддержку каталога
internal_data
. Как правило, это вложения и любой другой материал, который должен быть "приватным". Вернемся к config.php и добавляемый код очень похож:
PHP:
$config['fsAdapters']['internal-data'] = function() use($s3)
{
return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3(), 'xftest', 'internal_data');
};
Теперь попробуйте загрузить вложение к сообщению, и, как и раньше, вы увидите дополнительные файлы и папки в вашем браузере файлов bucket.
