Распространенные ошибки и решения для наиболее полных проблем с минио во всей сети.

задняя часть полный стек
Распространенные ошибки и решения для наиболее полных проблем с минио во всей сети.

Эта статья участвовала в "Проект «Звезда раскопок»”, чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.

предисловие

  • онлайн музыкаТкни меня!
  • Исходный код музыкального блогаСейчас в сети!
  • Я организовывал свои собственныеонлайн музыка(Поскольку сервер был недавно изменен), я обнаружил, что загруженные файлы изображений очень беспорядочны, например: музыка загружается на минио (файловый сервер), изображения модуля ИТ-знаний загружаются в папку, указанную Node , а файлы других модулей находятся в другой папке Node.
  • Я думал о том, может ли всеми этими файлами управлять один человек.Я сначала подумал, что компания (dpf) построила файловый сервер во время моей предыдущей стажировки, и им было действительно удобно пользоваться, то есть сегодняшний главный герой -- Минио.
  • На самом деле, собственныйонлайн музыкаОн давно используется, но не сказано, что все файлы им управляются, а сейчас приложение развернуто на Docker, не знаю, почему не работает маппинг Node файлов, но Minio умеет мапить. Все помещаются в минио.
  • ПредыдущийПожалуйста, Minio для унифицированного управления файламиВ статье есть практичный код, но, похоже, чего-то не хватает?
  • о ~ Оказывается, есть немного менее распространенная сводка по обработке ошибок, нет, продолжение идет. Когда я только сменил сервер, я действительно столкнулся с трудной проблемой.
  • Вы готовы?

Еще раз с праздником.

Сначала сделаем снимок.

fbd57b4cd563eedf704d7ae9570938d.png

Minio имеет интуитивно понятный интерфейс, визуальный интерфейс, удобное управление, простой процесс загрузки и выгрузки, а также может устанавливать разрешения, время истечения срока действия и т. д.

Через три года использования обнаружилась яма

  • Невозможно скопировать linux из win для использования команд (всегда cvcv, что-то случилось?)

  • Проблема с новой версией, рекомендуется использоватьminio/minio:RELEASE.2021-06-17T00-10-46Z(Ищу Минио в воспоминаниях)

  • MINIO_ACCESS_KEY и MINIO_SECRET_KEY устарели?

  • URL-адрес, полученный после загрузки putObject, открывается в браузере для загрузки файла вместо прямого отображения изображения (после изображения putObject изображение не может быть загружено💔)

1. Есть ли проблема с резюме?

Сначала minio был развернут на окно на 47. Позже сервер 47 был заменен на среду docker, и minio тоже был заменен на docker.Позже я мигрировал на докер 39. (из-за истечения срока действия сервера)

Процесс тоже ухабистый, но именно из-за этих «ветра и дождя» мы можем увидеть «радугу».

Docker окружение на сервере 47 было пол года назад, на тот момент эксплуатация была следующая:

// 拉取minio镜像
docker pull minio/minio

// 跑起
docker run -p 9000:9000 --name minio -d 
-e "MINIO_ACCESS_KEY=admin" 
-e "MINIO_SECRET_KEY=123456" 
-v /home/minio:/data 
-v /home/minio/config:/root/.minio 
minio/minio  server /data

Эти параметры есть в предыдущей статьеПожалуйста, Minio для унифицированного управления файламиВ статье упоминалось~

Тогда он может работать нормально.

Несколько дней назад с 47 -> 39 сервера я тоже проделал ту же операцию, что и 47, и дернул тормоза напрямую.

сообщил:No such file or directory

Не паникуйте, если вы столкнулись с ошибкой, сначала найдите того, кто ее использовал.

cd7244b4e63aea1bc84e5bcb707bf3b.png

Хорошо, я все понял. В одиночку тоже хорошо.

Поэтому я снова погуглил, и один из них вдохновил меня.

2.png

Он имеет в виду следующее: сценарии, разработанные в win, необходимо форматировать.

Потому что моя строка длиннаяdocker run minio ...Команда скопирована из dos-документа, и при прямом копировании в linux могут возникнуть проблемы с кодом, поэтому я набрал ее еще раз с угадывающим отношением, и она оказалась действительно успешной!

996021dbbf8cc69cf61522bd14e1fda.png

Блин, это действительно яма для ленивых резюме.

2. Ищем Минио в воспоминаниях

Minio успешно работает на докере, и когда я хочу получить к нему доступ, доступ не работает.

2.1 Найдите проблему

Почему я не могу получить к нему доступ? Порт маппится, фаервол тоже закрыт, и зайти на него не возможно.Так же бывает странная ситуация, что я явно ввожу порт 9000, а он автоматически перескакивает на незнакомый мне порт 41757.

8dde74cb0a2f84977425ac1c20e0eb1.png

Я чувствую, что он не может получить доступ к моему 9000, поэтому он автоматически переходит на порт 41757.

2.2 Попробуйте найти проблему

Быстро проверьте журнал.

466da452de526c191b5f327842f4c22.png

❓ Будет ли новая версия отличаться?

2.3 Небольшая идея

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

Запросите версию службы minio:docker search minio

6fdc06bb41fe4d83bba3f1f00b73d591~tplv-k3u1fbpfcp-watermark.awebp.jpg

Новая версия обновляется слишком быстро, поэтому я нашел старую версию, предлагаю вам выбратьminio/minio:RELEASE.2021-06-17T00-10-46ZЭта версия, потому что в других версиях много ям.

Через вышеуказанные ямы мы обнаружили, что итерация обновления версии minio очень быстрая, а последняя версия стала до неузнаваемости, и я ее больше не знаю. Я проверил последнюю версию официального сайта.

8cfbbc6236484a339bf7ceb0340e1580~tplv-k3u1fbpfcp-watermark.awebp.jpg

Big and Small выпустили более 200 версий.

мы выбрали17 июня 2021 г..

2.4 Настоящий бой

Может быть, найди проблему, а потом попробуй.

2.4.1 Вытащите образ minio

docker pull minio/minio:RELEASE.2021-06-17T00-10-46Z

034e6ddea3c84a878ae470e17c5707f3~tplv-k3u1fbpfcp-watermark.awebp.jpg

2.4.2 Запуск

docker run -p 9000:9000 minio/minio:RELEASE.2021-06-17T00-10-46Z server /data


// 或者自定义账号密码

docker run -p 9000:9000 --name minio -d 
-e "MINIO_ACCESS_KEY=admin" 
-e "MINIO_SECRET_KEY=123456" 
-v /home/minio:/data 
-v /home/minio/config:/root/.minio 
minio/minio:RELEASE.2021-06-17T00-10-46Z  server /data

42543016e10fd8afb56011ac35d5927.png

Мяу, беги!

3.png

Конечно, это проблема версии.Обновление версии происходит слишком быстро.К счастью, старая версия нашлась.

3. Являются ли MINIO_ACCESS_KEY и MINIO_SECRET_KEY устаревшими?

Неспеша сегодня, я просто вспомнил, чтобы войти в minio, чтобы посмотреть, как мои музыкальные файлы в нем.

В итоге при входе выдает:Authentication failed, check your access credentials

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

警告:MINIO_ACCESS_KEY和MINIO_SECRET_KEY已弃用。

请使用MINIO_ROOT_USER和MINIO_ROOT_PASSWORD

когда ты говоришь бегиMINIO_ACCESS_KEY和MINIO_SECRET_KEYУстарело, используйте новыйMINIO_ROOT_USER和MINIO_ROOT_PASSWORDдля установки пароля учетной записи.

Поэтому я остановил свой сервис minio и планировал изменить команду запуска.

Новая команда:

docker run -p 9000:9000 --name minio -d 
-e "MINIO_ROOT_USER=admin" 
-e "MINIO_ROOT_PASSWORD=123456" 
-v /home/minio:/data 
-v /home/minio/config:/root/.minio 
minio/minio:RELEASE.2021-06-17T00-10-46Z  server /data

Но когда я запустил новую команду, было сообщено о другой ошибке.

«server» не является подкомандой minio. См. «minio --help».

41de059d693048313358b9ded813444.png

Это отображается, когда вы запускаете команду minio с аргументом, отличным от команды minio.

1d1148f017856f488b4f4dafcbfd821b.jpeg

Не сказатьMINIO_ACCESS_KEY和MINIO_SECRET_KEYУстарело, используйте новыйMINIO_ROOT_USER和MINIO_ROOT_PASSWORDУстановить пароль учетной записи?

Почему это не новый параметр команды minio.

После проверки я не могу найти другого решения, просто думая о предыдущем2.4.2 ЗапускЗапустить службу minio также просто.

docker run -p 9000:9000 minio/minio:RELEASE.2021-06-17T00-10-46Z server /data

Затем запуск прошел успешно, поэтому я снова запустил предыдущую команду.

docker run -p 9000:9000 --name minio -d 
-e "MINIO_ACCESS_KEY=admin" 
-e "MINIO_SECRET_KEY=123456" 
-v /home/minio:/data 
-v /home/minio/config:/root/.minio 
minio/minio:RELEASE.2021-06-17T00-10-46Z  server /data

Он запущен, и на страницу управления minio также можно войти. Что, если MINIO_ACCESS_KEY и MINIO_SECRET_KEY устарели?

Необъяснимо сообщил об ошибке, но, к счастью, мой nginx настроил кеш ресурсов, и браузер может кэшировать ресурс (30 дней).

4.png

from disk cache, благо есть кэш-ресурсы, которые не вызовутмузыкальный модульизображения не могут быть загружены из-за проблем со службой minio.

Есть еще одно явление: интерфейс управления minio не может войти в систему (когда сообщается об ошибке), но доступ к ресурсам доступа все еще возможен, что указывает на то, что служба не приостановлена.

4. После того, как поставил изображение объекта, изображение не загружается💔

4.1 Найдите проблему

Сосредоточьтесь на JavaScriptputObjectметод, просто когда я использовал koa2 для загрузки файла по методу minio, я обнаружил, что после загрузки файла ссылка доступа к интерфейсу не может отображаться нормально.

4.2 Проверьте официальный пример

Сначала вставьте описание метода minio.

fd7c5f919860f961eccb37e3c5b031c.png

Посмотрите, как это вызывается в реальном коде.

Используйте официальный пример кода напрямую.

var Fs = require('fs')
var file = '/tmp/40mbfile'
var fileStream = Fs.createReadStream(file)
var fileStat = Fs.stat(file, function(err, stats) {
  if (err) {
    return console.log(err)
  }
  minioClient.putObject('mybucket', '40mbfile', fileStream, stats.size, function(err, objInfo) {
      if(err) {
          return console.log(err) // err should be null
      }
   console.log("Success", objInfo)
  })
})

Изображение было успешно загружено, и пример официального сайта меня не разочаровал, поэтому я вернулся к URL-адресу внешнего изображения.

Найден, но не отображается?

ca679607280d06c3c9693b0e10e3dba0.jpg

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

После добавления он все еще не отображается?

4.3 Загрузка изображений через JavaScript отличается от других значков изображений

Откройте интерфейс управления minio, чтобы убедиться, что он добавлен.

69820822d23134b1817cf0d6d8bcbc1.png

❓ Как я загрузил875.jpgотличается от других картинок?

🙋Другие картинки не серого цвета загружаются вручную по нажатию плюсика.

4.4 Скопируйте, как написана java (я писал это раньше, и я уверен, что это было успешно)

Заливать самому через коа2 серо, а у меня есть идея.Я раньше писал и заливал на java.музыкальный модульизputObjectКод метода, чтобы увидеть, как написана Java.

Java-код выглядит следующим образом:

MinioUtils.putObject(
    singerSong.getBucketName(), 
    objectName, 
    file.getInputStream(), 
    file.getSize(), 
    file.getContentType()
);

И приведенный выше JavaScript выглядит следующим образом:

minioClient.putObject(
    'mybucket', 
    '40mbfile', 
    fileStream, 
    stats.size
)

Напротив, JavaScript не передает тип файла, а Java передает.Неудивительно, что интерфейс управления minio не отображает тип файла.Оказалось, что это не я написал.

Я пропустил? Официальный сайт снова работает.

Твоя цель, мой код скопирован с официального сайта примера. Пример не передает тип файла.

Вы можете начать только с параметра метаданных на официальном сайте, который может быть типом файла.

7b6e769e0c0bf74c1887ee3eb64659e.png

Однако я не знаю, что такое метаданные, и на официальном сайте не сказано, как их передать.

🙋 Найдите способ решить проблему.

4.5 Передача меньшего количества параметров ContentType?

Есть человек вроде меня, который тоже нашел эту проблему.Он сказал, что зашел в класс метода и пригляделся.Хороший парень тайно изменил метод, но официальный сайт не изменился, поэтому он сказал, что достаточно передать больше параметров ContentType.

e89ec6f05611349a8dfa7f462bc2545.png

Поэтому я также посмотрел исходный код putObject:

66178a20bdb353b3c4f7a776e5c59a8.png

и не увидел параметр ContentType, который хотел увидеть.

4.6 Изменить исходный код?

Молодец, некоторые люди говорят, что прямое изменение исходного кода — это действительно выход, но это последнее средство, которое пришлось выбирать, давайте его искать.

4.7 Официальный пример сказал == Белый сказал?

Официальный github minio тоже нашел эту проблему, сказав, что ее можно решить, загрузив больше типов контента.Я также знаю, как загружать больше, так как это загружать?

не сказал.

В любом случае, тип файла не установлен, введите URL-адрес в браузере, и он будет загружен напрямую.Если тип правильный, его можно просмотреть, и он не будет загружен для вас, как только он придет.

85e46acf0a617bb1f12bbd48ac257a1.png

4.8 Объяснение параметров метаданных

пока не увидел это. Неважно, что вы говорите, важно то, что используются метаданные.

6aeff8905e1d0184a8393436004fcb4.png

Мое преобразование кода выглядит следующим образом:

var Fs = require('fs')
var file = '/tmp/40mbfile'
var fileStream = Fs.createReadStream(file)
var fileStat = Fs.stat(file, function(err, stats) {
  if (err) {
    return console.log(err)
  }
  minioClient.putObject(
  'mybucket', 
  '40mbfile', 
  fileStream, 
  stats.size, 
  {'Content-Type': type}, // 这个type从前端上传的file对象可以获得
  function(err, objInfo) {
      if(err) {
          return console.log(err) // err should be null
      }
       console.log("Success", objInfo)
  })
})

Это успешно, внешний интерфейс может отображаться нормально, и интерфейс управления minio также нормально отображает значок типа изображения.

В конце концов

Как можно увидеть радугу, не испытав ветра и дождя.

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

Помню, когда я был в стажёрской компании, старший брат из той же школы сказал мне: Код не рекомендует cvcv. Вам нужно играть с большим количеством рук, прежде чем вы сможете вспомнить. В процессе использования минио (1. Есть ли проблема с резюме?), я глубоко это понял, и я намеренно буду играть вручную в будущем развитии.

Действительно ли это самая стабильная версия при загрузке на основную стабильную версию? А, миньо. (2. Ищем Минио в воспоминаниях)

В этой реальной битве я также знаю важность кэширования.Если программа дает сбой, браузер также устанавливает 30-дневное время кэширования, которое не вызовет сразу визуальной ненависти у клиентов.Конечно, принудительное обновление так же, как если бы я не ничего не скажешь 😁. (3. Являются ли MINIO_ACCESS_KEY и MINIO_SECRET_KEY устаревшими?)

Существование проблемы не страшно.Страшно то, что вы действительно серьезно проверили проблему?Не меняйте исходный код, как только вы пришли.Может быть, то, как мы его используем, неправильно? (4. После установки образа putObject изображение не может быть загружено)

Если это полезно для вас, ваши лайки - это смазка для меня, чтобы двигаться вперед.

Связанная литература

Установка и использование Docker-minio

Докер устанавливает Minio и заливает последнюю версию пит

Heroku: deploying minio server with Dockerfile CMD failure

[ОШИБКА] Content-type не установлен при загрузке в minio #129

Изображения, загруженные в интерфейс minio, нельзя просмотреть в интерфейсе управления, но можно просмотреть изображения, загруженные непосредственно в интерфейсе управления.

VUE не может напрямую загружать файлы в MinIO, подсказывая, что _fs.default.stat не является функцией?

Рекомендовано в прошлом

Унифицированные файлы управления Minio (практика JS, JAVA)

Ты да сказал, что все мои коды не добавляют точки с запятой

Все, что сказал Лао Ши, является объектом, вы верите в это?

Vue-Cli3 создает библиотеку компонентов

Vue реализует динамическую маршрутизацию (и интервьюер выдает основные моменты проекта)

Операция Axios, которую вы не знаете в проекте (рукописные основные принципы, совместимость)

Документация по компонентам проекта сборки VuePress

развертывание koa2+vue+nginx

система управления фоном vue-typescript-admin-template

Оригинальная ссылка

nuggets.capable/post/701515…