최근 2.5.0.beta7로 업데이트한 후 포럼의 모든 이미지가 깨졌습니다.
아바타도 기본 이미지로 대체되었습니다. 대시보드의 제 설정은 다음과 같습니다:
제 자산(Assets) 관련 스태프 게시물:
해당 이미지 중 하나: /original/2X/4/4064b1cc32199de63ad2fa2b5bd2a0c5b6872c6d.png
하지만 제 S3에는 해당 이미지가 없습니다: (이런 일이 왜 발생했나요?)
파비콘과 기타 로고도 없습니다: /original/1X/b32666bfe0e0eac40aacb178c7430c9f7873b397.png
하지만 제 S3에는 다음 파일들만 있습니다:
URL이 잘못되었고 original 폴더 안에 1X 폴더가 없다는 점을 주목해 주세요.
해당 게시물의 튜토리얼을 따라 해보았습니다:
For the past week or so (after the most recent upgrade?), I’ve noticed that some users’ uploaded images are broken. It is clear that they are pasting an image, as the code in their post looks like that, but the files are missing.
For example, this post (raw version has three broken images in it. I cannot imagine what the user could have done to break them. And stranger still, sometimes a post will have some images that work fine, but others that are missing. I’ve done find in the uploads direct…
하지만 아무것도 해결되지 않았습니다.
Benjamin_D
(Benjamin Decotte)
6월 25, 2020, 9:35오전
2
이 이미지가 버킷에 없으며 4061…41.png라는 점을 지적해도 될까요?
로컬에 존재합니까?
masterakay:
하지만 제 S3에는 다음이 있습니다:
실수였습니다. 표현을 잘못 선택했습니다. S3 버킷에 해당 항목이 없음을 확인했다는 뜻이었으며, 어떤 항목도 존재하지 않습니다.
로컬에서 이를 어떻게 확인합니까?
Benjamin_D
(Benjamin Decotte)
6월 25, 2020, 12:31오후
4
아, 실제로 더 말이 되네요
설정 환경에 따라 원하는 ssh 클라이언트로 로컬에서 확인해 볼 수 있습니다. 파일은 /var/discourse/shared/standalone/uploads/default/original/2X/ 경로에 있을 것입니다.
따라서 4064b…d.png 파일을 찾으려면 ls -R /var/discourse/shared/standalone/uploads/ | grep 4064b 명령을 실행해 보세요.
@masterakay 님과 같은 Discourse 인스턴스에 대해 이야기하고 있습니다.
우리는 2년 이상 전에 S3로 전환했으며, 로컬 업로드 디렉토리의 파일 중 2018년 이후의 것은 없습니다.
제 이해로는, 이미지는 “original” 폴더에 업로드되고, 처리(잘라내기, 크기 축소 등)된 후 “optimized” 폴더에 저장됩니다. Discourse가 이미지 업로드 시 사용하는 URL은 여전히 “/original/1X/” 폴더의 것입니다. 그런데 어찌된 일인지 업그레이드 후 “1X” 폴더가 사라졌습니다.
“default” 폴더에는 업로드된 파일(이미지 등)과 잘라낸 버전이 많이 포함되어 있습니다. 여기에는 약 10,000개의 파일이 있어 약 2.5GB를 차지합니다.
문제는 게시물의 이미지 URL이 항상 “original” 폴더를 가리키고 있다는 점입니다.
우리가 발견한 것은, 누락된 파일들이 “default” 폴더의 파일 부분집합이라는 것입니다.
새로 업로드하는 파일은 문제가 없이 "/original/2X/"에 저장됩니다.
누군가 “/original/1X/” 폴더가 어디로 사라졌는지, 그리고 이를 복원할 수 있는지 아이디어를 가지고 계신가요?
@sam @codinghorror 이 문제를 당신들에게까지 가져와서 정말 죄송합니다. 그런데 상황이 꽤 시급합니다. 우리는 학생이라, 학교에서 이미지 문제를 해결하라고 압박을 가하는데 정말 어찌할 바를 모르겠습니다.
Ryan_Nix
(Ryan Nix)
6월 30, 2020, 12:51오후
7
저도 같은 현상을 겪고 있으며, 최근 업데이트 이후에 갑자기 발생하기 시작했습니다.
https://discourse.sesp.northwestern.edu
schleifer
(Andrew Schleifer)
7월 2, 2020, 6:02오전
9
S3는 어떻게 설정하셨나요? app.yml에서 값을 설정하셨나요, 아니면 관리자 UI에서만 설정하셨나요? DISCOURSE_S3_BUCKET 또는 DISCOURSE_S3_BACKUP_BUCKET 값이 의도하지 않은 것으로 보입니다.
네, 제가 설명드린 것처럼 최근 업데이트까지 모든 것이 정상적으로 작동했습니다. 모든 단계를 따랐습니다.
특히, 다음과 같은 작업을 수행했습니다:
이 값들에 대해, app.yml에서 설정된 변수를 찾을 수 없는 것 같습니다. 이전에 이 설정은 필요하지 않았는데, 뭔가 변경된 건가요?
schleifer
(Andrew Schleifer)
7월 2, 2020, 9:35오전
11
그렇습니다. 코드에 문제가 있을 수 있지만, 무엇이 왜 그런지 우리는 알지 못합니다. 따라서 더 많은 정보가 필요합니다.
masterakay:
우리는 모든 단계를 따랐습니다.
S3를 설정하는 두 가지 다른 방법이 있습니다. app.yml에서 환경을 구성하거나 관리자 UI에서 값을 입력할 수 있습니다. 각 방법에서 변수 이름이 약간 다르게 표시됩니다.
링크하신 토픽은 관리자 UI에서 설정하는 방법을 설명하고 있습니다. 만약 사이트를 그렇게 설정했다면, **s3_upload_bucket**과 **s3_backup_bucket**의 값이 무엇인지 알려 주실 수 있나요?
Ryan_Nix
(Ryan Nix)
7월 2, 2020, 1:57오후
13
@schleifer 저도 마찬가지입니다. 해당 설정에서도 아무것도 변경하지 않았습니다. 또한 AWS 자격 증명이 정상적으로 작동하는지 확인했습니다.
schleifer
(Andrew Schleifer)
7월 2, 2020, 3:36오후
14
아, 그건 그거였군요.
해당 설정값이 같으면 안 되는데, 같은 값이어서 문제가 발생한 것입니다. 설정 관련 주제 에서 "업로드와 백업에 서로 다른 버킷을 반드시 사용해야 하나요?"라는 항목을 검색해 보세요.
유지보수 작업이 백업 버킷의 내용을 대상으로 실행되었는데, 값이 겹쳐서 업로드에까지 영향을 미쳤습니다.
@sam 님, 이건 문서가 아니라 코드에서 강제하는 것이 좋겠습니다.
사이트를 복구하려면 두 단계가 필요합니다:
첫째, 백업 접두사를 변경해야 합니다. 설정 주제에 설명된 대로 끝에 /backups를 추가하면 충분합니다.
둘째, S3 버킷의 모든 내용을 올바른 위치로 되돌려야 합니다. 최상위 “default” 폴더에 있는 모든 내용은 최상위 레벨로 다시 이동해야 합니다.
예를 들어, 그곳에 “default/originals” 폴더가 있을 텐데, 이 폴더를 한 단계 위로 이동해야 합니다.
버킷을 탐색하려면 AWS 웹 콘솔이나 기타 도구를 사용해야 합니다.
네, 정말 감사합니다! 말씀해 주신 단계를 시도해 보고, 만약 문제가 발생하면 다시 찾아올게요. 갑자기 이런 일이 생긴 이유가 있을까요?
Hey @schleifer , 말씀하신 내용이 이해됩니다. 그래서 버킷 이름에 backups 접두사를 추가했습니다.
기존 업로드 파일의 경우, 모든 업로드가 /default/ 폴더 안에 있으며(서브폴더가 아닙니다). 게시물(그리고 다른 모든 곳)의 이미지 URL은 /original/* 또는 /optimized/*를 사용합니다.
기본 폴더 안의 모든 것을 한 단계 위로(루트로) 이동하면, 이미지는 /*에 위치하게 됩니다.
그리고 아니요, defaults 안에 하위 폴더는 없고 업로드 파일만 있습니다. 표준 40자 해시 파일명을 가진 파일과 “_2_10x10” 같은 접미사가 붙은 파일(최적화 과정에서 생성된 것으로 추정됩니다)이 섞여 있는 것 같습니다.
이 문제를 어떻게 해결하는 것이 좋을까요? 모든 게시물에 새 링크를 적용하는 데는 시간이 걸릴 텐데, 이 파일명을 기준으로 파일을 올바른 폴더에 그룹화하는 방법이 있을까요?
@schleifer 이 건에 대해 업데이트가 있나요?
schleifer
(Andrew Schleifer)
7월 13, 2020, 10:06오전
19
그건… 예상치 못한 일이네요. 그러면 수동으로 다수 항목을 수정해야 할 것 같습니다.
가장 중요한 질문은 "새로운 업로드가 올바른 위치에 저장되고 있는가?"입니다.
그것이 사실이라면, 기존 업로드 파일을 알려진 위치로 이동하고 데이터베이스 항목을 조정하면 됩니다. /default/ 폴더에는 몇 개의 파일이 있나요?
다행히도 새로운 업로드가 서브폴더로 정상적으로 작동하고 있습니다. 게시물 내 링크도 올바른 위치를 가리키고 있습니다.
/default/ 폴더에는 10,000개 이상의 파일이 있습니다. 각 게시물을 수동으로 수정하는 것은 많은 작업이 될 것 같습니다. 이를 스크립트로 처리할 수 있는 방법이 있을까요? 모든 게시물에 정규식 치환을 적용하는 방식이 가능할까요?
schleifer
(Andrew Schleifer)
7월 14, 2020, 12:48오전
21
rithvikvibhu:
이걸 스크립트로 처리할 방법이 있나요?
네, 그런 계획입니다. 다음 단계는 모든 AWOL 파일을 알려진 위치에 두는 것입니다. 버킷 안에서 /original/ 아래에 어떤 하위 디렉터리가 있나요? /1X/가 있고, 다른 것들도 있을 수 있습니다.
이것은 전체 폴더 구조입니다. 새 업로드(정상 작동)는 /original/2X/*/.jpg에 저장됩니다.
/
|---backups
|---default
|---(다수의 백업 .tar.gz 파일)
|---default
|---(업로드된 10,719개의 파일: pdf, 이미지 등)
|---inventory
|---1/pesuioforum/{optimized,original}/[DATE]/manifest.{checksum,json}
|---optimized
|---1X
|---(2개 파일)
|---2X
|---{0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f}
|---(위 폴더 이름 문자로 시작하는 업로드된 파일) (총 1,055개 파일)
|---original
|---2X
|---(optimized/2X와 동일, 520개 파일)
|---tombstone
|---optimized
|---1X
|---(2개 파일)
|---original
|---2X
|---(optimized/2X와 동일, 1개 파일)
다음으로 해야 할 일은 모든 소재불명(AWOL) 파일을 알려진 위치에 두는 것입니다.
/default/에는 이미 모든 이미지가 있는 것 같습니다.