Иконка ресурса

Использование DigitalOcean Spaces или Amazon S3 для хранения файлов в XF 2.x 2.2.1

Нет прав для скачивания
artscripts, про политику читал, не исключаю, что не все открыто и стоит по дефолту. Разрешение я давал тока на загрузку публичную по всему. Так что это отдельно надо проверять. Доменное имя прописал, скрин выше показал, тупо прописываю получается тока доменное имя и указываю нужный мне протокол https. Сами папки я не переносил ещё, я так понимаю нужно для этого применить , что в описании ниже, пока не пробовал. Но раз указали, что руками это лучше не делать, то хорошо, что не стал пробовать😅
Жаль нет внятной инструкции по настройке, приходится методом тыка проверять.
 
Последнее редактирование:
Sadorimatsu, Сначала нужно было перенести папки, потом уже прописывать в конфигурации данные все, поэтому у вас и не показывает ничего, папки сами переносите в бакет со всеми файлами. Закрываете форум от пользователей ( Переливайте из internal_data все папки (кроме temp, code_cache, addon_batch).) Все кроме папок кеша вообщем) Для перелива используйте файл менеджер s3 по сути любой, я использовал commander one

2022-09-09_08-21-23.png

проверяете что все работает, удаляете папки с хостинга (желательно сохраните их отдельно) открываете форум

Папки data и internal_data не удалять, а только содержимое

Ну и бекап всех файлов на всякий случай делаете для начала
 
Последнее редактирование:
artscripts, возник такой вопрос. Почему официально в мануале у яндекса на пишут адрес storage.yandexcloud.net, когда в конфиге для XF мы прописываем return 'https://ДОМЕН.website.yandexcloud.net/data/' . $externalPath;? Или такой путь только для XF и предусмотрен и цепляется за прописанный домен в бакете о которой вы ранее писали? И разве не считается в вашем конфиге ошибка региона 'region' => 'us-east-1',, когда пишут указывать ru-central1. Разве работа будет правильная без правильного указания? Или только с такими данными работает конфиг на XF? Чем-то это выражено? А то немного логику понять не могу, почему так получается.

P.S. На VPS достаточно удобным решением поставить S3cmd для копирования файлов напрямую в облако, я бы даже сказал без этого никуда. Руками делать это как посмотрел почти нереально 😅
 
Последнее редактирование:
Sadorimatsu, Приветствую, в конфиге мы должны принудительно указывать свой бакет, так настроен плагин, который вы установили. В мануале у Яндекса стоит общая документация, как ее использовать решает только тот кто пишет плагин.

По поводу региона, мне нужен регион отличный от России поэтому я его и указываю, вообще у яндекса если мне не изменяет память их 8 или 16, какой использовать решать только вам.
 
artscripts, т.е. мне как проживающему в РФ, лучше указывать регион ru-central1, я правильно понимаю? Остальное в принципе по дефолту. А что касаемо https://ДОМЕН.website.yandexcloud.net/data/ это требование от плагина, который мы ставим для поддержки S3 Amazon и потому прописывается именно так?

В принципе я всё настроил, файлы скопировал с VPS на бакет, вроде всё работает отлично. Мне на VPS стоит после копирования на бакет удалять файлы data и internal_data? Или можно не трогать? Если и можно, что удалить, то можете подсказать? Или что рекомендуется сделать?
 
Последнее редактирование:
Мне на VPS стоит после копирования на бакет удалять файлы data и internal_data?
Бездумно удалять не стоит -- тот же internal_data/code_cache принудительно с диска VPS используется, а не с S3-хранилища. Для скорости.
Удалите эту папку -- весь форум умрёт.
 
Sadorimatsu, Неправильно понимаете, не важно где вы живете, все зависит от задач. Что касаемо прописывание ссылки на бакет в конфиге, ну разве нет ничего проще проверить и поменять на все что хотите, результат увидите сразу.
По поводу папок кеша я вам написал в самом начале их не удалять
 
Последнее редактирование:
artscripts, всё же проверил конфиг и убедился, что в вашем ошибка есть в пути к бакету, вместо website.yandexcloud.net должно быть storage.yandexcloud.net. Если у вас всё работает как надо, значит у вас так задумано. По крайне мере стоило мне поправить на путь как официально у яндекса, то моя проблема с прогрузкой миниатюр пропала сразу же. Регион так же поменял для РФ. Всё работает отлично.

Создаем сервисный аккаунт с любым именем. Создать статичный ключ доступа, после идентификатор ключа и секретный ключ вбиваем в конфиг XF, они же вам будут нужны для установки S3cmd.
В графе "БАКЕТ" указываем название своего бакета, который вы укажите в Object Storage.
Код:
$s3 = function()
{
   return new \Aws\S3\S3Client([
      'credentials' => [
         'key' => 'Идентификатор ключа',
         'secret' => 'Секретный ключ'
      ],
      'region' => 'ru-central1',
      'version' => 'latest',
      'endpoint' => 'https://storage.yandexcloud.net'
   ]);
};
$config['fsAdapters']['data'] = function() use($s3)
{
   return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3(), 'БАКЕТ', 'data');
};
$config['externalDataUrl'] = function($externalPath, $canonical)
{
   return 'https://БАКЕТ.storage.yandexcloud.net/data/' . $externalPath;
};
$config['fsAdapters']['internal-data'] = function() use($s3)
{
   return new \League\Flysystem\AwsS3v3\AwsS3Adapter($s3(), 'БАКЕТ', 'internal_data');
};
Настройка S3cmd (Только для VPS или физ.сервера):
Закрываете форум от пользователей ( Переливайте из internal_data все папки (кроме temp, code_cache, addon_batch).) Все кроме папок кеша вообщем) Для перелива используйте файл менеджер s3 по сути любой.
проверяете что все работает, удаляете папки с хостинга (желательно сохраните их отдельно) открываете форум

Папки data и internal_data не удалять, а только содержимое
Ну и бекап всех файлов на всякий случай делаете для начала

На том и всё. Для новичков достаточно будет.

P.S. Единственный минус работы S3, то когда загружаешь файл и удаляешь его с XF, то на облаке файл остается нетронутым. Не сильно критично, но будет напрягать. Можно ли с этим что-то сделать?
 
Последнее редактирование:
Если у вас всё работает как надо, значит у вас так задумано.
Нет, просто Амазон, когда делал S3, сам же и развёл зоопарк в настройке этого самого S3, и при определенных регионах требуется своя настройка. И либы, заточенные дефолтно под S3, пытаются это учитывать, но у провайдеров поведение региона не всегда совпадает с поведением региона у Амазона. Отсюда и проблемы.
 
Нет, просто Амазон, когда делал S3, сам же и развёл зоопарк в настройке этого самого S3, и при определенных регионах требуется своя настройка. И либы, заточенные дефолтно под S3, пытаются это учитывать, но у провайдеров поведение региона не всегда совпадает с поведением региона у Амазона. Отсюда и проблемы.
Если это зависит от региона, от откуда тогда взяли website.yandexcloud.net? Почему-то информации в документации яндекса не нашёл этого пути. Или может это старые настройки, которые были и влияли на определенный регион? Каша какая-то получается.
 
Sadorimatsu, немного не так прочитал Ваш вопрос. Перечитал на всякий последние несколько сообщений, хотя ответ частично остаётся прежним.

Амазон действительно развёл зоопарк, и при подключении к серверу клиентом может понадобиться указать имя бакета прямо в адресе к серверу. А может понадобиться просто дописать после домена в URI.
Та ссылка, про которую Вы спрашиваете, передаётся браузеру для поиска аватарок и прочего. Ксен сам с ней непосредственно никак не взаимодействует.
 
Проверил внимательно настройки и единственное место, где встречается website.yandexcloud.net, то в меню "Веб-сайт" на бакете облака.
Screen Shot 09-10-22 at 07.25 PM.PNG
Я пробовал прописать название бакета и website.yandexcloud.net, прописал для теста так же в конфиге, но миниатюры у меня сразу же перестали отображаться по прежнему, но файлы прогружались как положено. Мне так и непонятно, есть ли смысл вообще тут прописывать что, если это не работает, по крайне мере у меня. Даже просто отключил его, изменений в работе не увидел и вернул прежний свой конфиг, где всё в порядке. Может я что-то не так понял, может кто объяснить актуальность этой настройки?
 
Последнее редактирование:
Sadorimatsu, переадресацию в настройках бакена не трогайте, в данном случае, она вам вообще не нужна, все прописано в плагине.
Почему я в конфиге указываю бакет сразу, по другому Яндекс клоуд не может определить откуда что брать, конфигурации явно указывает в этом случае что папки находятся в бакете а не на сервере.

Если вы заметили мы не даем этому правилу указаний
Код:
$config['externalDataUrl'] = function($externalPath, $canonical)
{
   return 'https://бакет.website.yandexcloud.net/data/' . $externalPath;
};
аля ($s3(), 'бакет', 'internal_data')


мы сразу пишем путь, где брать

Я не говорю и не утверждаю, что это правильно, но оно работает и все отдает как надо, я не могу сомневаться в этом методе так как все с ним работаю
 
Последнее редактирование:
Если вы заметили мы не даем этому правилу указаний
Тут я согласен, но почему в вашем случае прописан путь website.yandexcloud.net, а не storage.yandexcloud.net. Вот что меня сбивает с толку. Потому что в моём случае у меня не работают миниатюры, когда при указании storage.yandexcloud.net всё в порядке. Влияние региона?🙄
 
Sadorimatsu, Мне сейчас сложно сказать, я не могу залезть сейчас не на сервер не на бакеты, но давайте в следующую пятницу как вернусь к компьютеру мы протестируем все вместе с вами.
 
artscripts, давайте, а то мне самому интересно, почему такая разница. Потому что вбиваем ваш путь website.yandexcloud.net с указанием моего бакета. В принципе всё работает, но тупо не отображаются миниатюры, как я выше вам показал. С чем связано, я так и не понял)) По факту в Яндексе мы ничего в бакете не настраиваем кроме указания имени и создания ключа. В принципе и всё. В конфиге прописываем ключи, регион, название бакета и этот путь. В целом то и все. Я сперва думал, что у меня миниатюры не сработали, потому что до того момента не перекинул файлы, но даже после добавления их на облако, ничего не поменялось, но стоило мне поменять путь с website.yandexcloud.net на storage.yandexcloud.net, то всё работает как надо. Почему у вас иначе? Вот что интересно😄

И вопрос, это проблема у всех S3, если удаляешь вложение в XF, то с БД он удаляется, всё хорошо, но вот с облака вложение так и остается. С этим как-то можно бороться? Или приходится вручную удалять? Не сильно критично, но всё же.
 
Sadorimatsu, а вы удалили это все с сервера? возможно вам показывает так как конфигурация не правильная и он с Серва все берет. Но в любом случае давайте я напишу как приеду 16 числа и мы потестим с вами все
 
artscripts, после переноса файлов на облако, я с VPS ничего так и не удалял, да и вижу, что он больше не хватает файлы с сервера, так что и трогать не вижу необходимости, пусть остается. В облаке все файлы кэша и temp удалены. Даже когда они были, они на это не влияли, проверял специально.
 
Sadorimatsu, удалять не обязательно, можно проверить работу переименовав папку типо internal_data2. и запостить какой нить айтач и все станет ясно, к сожалению сейчас мне не реально с вами дискутировать, я от компов далеко.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу