음, 아니야. 내 여유 공간이 18TB나 돼… ㅋㅋㅋ.
알겠습니다. 다음을 사용했습니다:
./launcher rebuild app
아직도 다음과 같은 메시지가 표시됩니다:
I, [2022-04-29T16:46:00.618865 #1] INFO -- : > cd /var/www/discourse && [ ! -d 'node_modules' ] || su discourse -c 'yarn install --production && yarn cache clean'
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
그리고 다음으로 종료됩니다:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 720 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
29d02d2c0c6e0dde4f6d7b625db30c7b69626a80ec8100a44e8caf88565d1c7e
다음과 같은 오류가 발생하는데, /home/discourse는 777 권한으로 설정되어 있습니다. 이게 무슨 일인지요???
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
node:fs:1336
handleErrorFromBinding(ctx);
^
Error: EACCES: permission denied, mkdir '/home/discourse/.config/configstore'
You don't have access to this file.
또한 다음과 같은 오류도 보이는데, 다시 말하지만 제 /home/discourse는 777 권한으로 설정되어 있고, 심지어 그것조차 접근을 허용하지 않습니다. 소유권과 접근 권한은 어떻게 설정되어야 하는가요? discourse 사용자는 컨테이너 내부에만 존재합니다.
I, [2022-04-29T16:45:47.705749 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle install --deployment --retry 3 --jobs 4 --verbose --without test development'
[DEPRECATED] The `--deployment` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local deployment 'true'`, and stop using this flag
[DEPRECATED] The `--without` flag is deprecated because it relies on being remembered across bundler invocations, which bundler will no longer do in future versions. Instead please use `bundle config set --local without 'test development'`, and stop using this flag
`/home/discourse` is not writable.
제가 볼 수 있는 유일한 다른 오류는 포트 6379에 관한 것입니다. 포트 개방 관련해서 놓친 것이 있을까요?
130:M 29 Apr 2022 16:45:10.722 # Warning: Could not create server TCP listening socket *:6379: bind: Address already in use
130:M 29 Apr 2022 16:45:10.722 # Failed listening on port 6379 (TCP), aborting.
Updating files: 100% (31051/31051), done.
그 작업이 완료된 후, 포럼이停止되어 있었기 때문에 discourse-doctor를 실행했습니다. 아래에 나와 있는 내용과 달리 포럼은 다시 시작되었습니다:
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 722 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
bootstrap failed with exit code 1
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.
922dd1e5bd9c3ec682864fff915eb2c12f4bf88805d555bc78f067ac2910540a
==================== END REBUILD LOG ====================
Failed to rebuild app.
Checking your domain name . . .
Connection to discussion.scottibyte.com succeeded.
You should probably remove any non-standard plugins and rebuild.
Attempting to restart existing container. . .
x86_64 arch detected.
starting up existing container
+ /usr/bin/docker start app
app
ce202d9cd2ce local_discourse/app "/sbin/boot" 12 days ago Up Less than a second 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp app
Restarted the container.
==================== PLUGINS ====================
- git clone https://github.com/discourse/docker_manager.git
No non-official plugins detected.
See https://github.com/discourse/discourse/blob/main/lib/plugin/metadata.rb for the official list.
discourse-doctor는 다음 오류들을 발견했습니다:
d.indkey, pg_get_indexdef(d.indexrelid), t.oid,
pg_catalog.obj_description(i.oid, 'pg_class') AS comment
FROM pg_class t
INNER JOIN pg_index d ON t.oid = d.indrelid
INNER JOIN pg_class i ON d.indexrelid = i.oid
LEFT JOIN pg_namespace n ON n.oid = i.relnamespace
WHERE i.relkind IN ('i', 'I')
AND d.indisprimary = 'f'
AND t.relname = 'user_search_data'
AND n.nspname = ANY (current_schemas(false))
ORDER BY i.relname
2022-04-29 16:59:55.223 UTC [720] discourse@discourse LOG: duration: 174.472 ms execute <unnamed>: INSERT INTO "user_search_data" ("raw_data","user_id","locale","version","search_data") VALUES ('system system', -1, 'en', 3, '''system'':1A,2B ') ON CONFLICT ("user_id") DO UPDATE SET "raw_data"=excluded."raw_data","locale"=excluded."locale","version"=excluded."version","search_data"=excluded."search_data" RETURNING "user_id"
I, [2022-04-29T16:59:55.668214 #1] INFO -- :
I, [2022-04-29T16:59:55.668479 #1] INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile'
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
node:fs:1336
handleErrorFromBinding(ctx);
^
Error: EACCES: permission denied, mkdir '/home/discourse/.config/configstore'
You don't have access to this file.
at Object.mkdirSync (node:fs:1336:3)
at AsyncFunction.module.exports.sync (/var/www/discourse/app/assets/javascripts/node_modules/make-dir/index.js:114:6)
at Configstore.set all [as all] (/var/www/discourse/app/assets/javascripts/node_modules/configstore/index.js:59:12)
at Configstore.set (/var/www/discourse/app/assets/javascripts/node_modules/configstore/index.js:91:12)
at clientId (/var/www/discourse/app/assets/javascripts/node_modules/ember-cli/lib/cli/index.js:55:17)
at module.exports (/var/www/discourse/app/assets/javascripts/node_modules/ember-cli/lib/cli/index.js:105:13)
at Object.<anonymous> (/var/www/discourse/app/assets/javascripts/node_modules/ember-cli/bin/ember:34:1)
at Module._compile (node:internal/modules/cjs/loader:1103:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10)
at Module.load (node:internal/modules/cjs/loader:981:32) {
errno: -13,
syscall: 'mkdir',
code: 'EACCES',
path: '/home/discourse/.config/configstore'
}
error Command failed with exit code 1.
즉, discourse-doctor 실행 후 포럼은 다시 가동되었지만, 제가 처음에 게시한 것과 정확히 같은 오류들이 여전히 남아 있습니다. 그래픽은 필수 요건이므로, 이 버전에서는 더 이상 그래픽이 작동하지 않는다고 생각하고 있습니다. 이 오류는 2.9.0 beta3에서 시작되었고, 현재 저는 2.9.0 beta 4를 사용하고 있습니다. 이 난관을 해결하거나 다운그레이드할 방법이 있을까요?
@JammyDodger 결국 핵심은 이것입니다:
$ yarn install --production
Error: EACCES: permission denied, open '/home/discourse/.config/yarn'
/home/discourse 안에 .config 디렉터리가 없다는 점에 유의하세요. 그래서 저는 .config를 생성했습니다.
Discourse-Doctor를 실행한 후 포럼이 다시 온라인으로 돌아오는 이유는 기존에 재빌드되기 전 버전의 사이트가 재시작되기 때문입니다. 따라서 사이트는 온라인 상태가 되지만, 불행히도 처음부터 다시 시작하게 됩니다.
최근 백업이 있다면, 새로운 드롭렛을 생성하여 새 인스턴스를 설정하고 거기에 사이트를 복원하는 것이 더 빠를 수 있습니다.
비슷한 오류에 대해 사이트를 검색해 보았지만, 개인적으로 해당 오류를 겪어본 적이 없어 답변을 충분히 이해하지 못해 조언을 드리기 어렵습니다.
@pfaffman 님은 이런 문제에 보통 잘 알고 계십니다. 이런 방식으로 해결이 될까요, 아니면 전혀 관련이 없는 문제일까요?
그래서 마지막 수단으로 관리자 GUI에서 백업을 수행했습니다. 로그에는 백업이 성공적으로 완료되었다고 표시되어 있었습니다. 백업 파일을 다운로드하려고 했지만, 포럼이 백업 링크가 포함된 이메일을 보냈고, 링크를 클릭하니 다운로드가 된 것처럼 보였지만 실제로는 아무 파일도 다운로드되지 않았습니다. 제 포럼에는 백업 목록이 표시되지만, 어떤 것도 다운로드할 수 없습니다. 최악의 경우 처음부터 Discourse를 설치하고 백업을 업로드하는 방법도 고려해 보았습니다. 하지만 현재 포럼에서 백업을 다운로드할 수 없고, 로그에도 오류가 표시되지 않습니다. 이 제품 덕분에 저는 완전한 초보자 취급을 받는 것 같아 기분이 좋지 않습니다. 저는 초보자가 아니거든요.
지시하신 대로 컨테이너 안에서 chown을 실행했습니다. 백업 링크에 대한 이메일을 받았고, 링크를 클릭했습니다. Ubuntu 데스크톱에서 다운로드 폴더를 지정했는데, 즉시 응답이 오고 아무것도 다운로드되지 않습니다. 이제 2년간의 포럼 노트를 잃고 유튜브 채널을 통째로 버릴 준비가 되어 있는 지경입니다. 이 제품은 복구, 백업, 복원 시도 모두에 저항합니다.
더 위험한 변경 사항은 더 많은 지식을 가진 사람이 구체적인 조언을 해줄 때까지 보류하는 것이 좋다고 생각합니다. 정말 답답한 상황이라는 것은 이해하지만, 무리한 행동을 하면 후회할 수 있습니다.
서버에 대한 여러 개의 신뢰할 수 있는 이미지 백업이 있으며, 언제든 복원할 수 있습니다. 문제는 현재 서버의 데이터가 필요하지만, Discourse가 생성한 백업 사본을 제공하지 않는다는 점입니다. 다음으로 어떻게 해야 할지 모르겠습니다. 모든 그래픽을 스크린샷으로 저장하고 텍스트를 복사한 뒤, 제대로 작동하는 phpBB에서 모든 것을 다시 만드는 것도 고려하고 있습니다.
그러니 제 문제는 백업 업로드가 아닙니다. 포럼에서 백업을 다운로드하는 것이 문제입니다. 그래서 런처 문제를 해결해 보려고 컨테이너 안의 /home/discourse 디렉터리의 소유자를 root에서 discourse로 chown으로 변경했습니다. 다시 런처를 실행해 보니…
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
warning Cannot find a suitable global folder. Tried these: "/usr/local, /home/discourse/.yarn"
warning Skipping preferred cache folder "/home/discourse/.cache/yarn" because it is not writable.
warning Selected the next writable cache folder in the list, will be "/tmp/.yarn-cache-1000".
이 제품은 수백 개의 오류로 가득 차 있으며, 한두 개를 수정해도 전혀 개선되지 않습니다. 2주 전까지는 정상적으로 작동했는데 갑자기 스스로 망가져 버렸고, 이 엉망진창을 고칠 곳이 없습니다.
좋네요.
그 안전망이 마음에 들고, 실험에 따른 위험을 인지하고 감수할 수 있다면 말이죠. 저는 자가 호스팅을 하는데, 중요하게 생각하는 콘텐츠가 있을 때 가이드 없이 '계획 밖’으로 벗어나는 것은 꽤 긴장되는 일입니다.
현재 서버 설정과 지금까지 서버를 어떻게 유지보수해 왔는지에 대해 좀 더 자세히 알려주실 수 있을까요? 그러면 이런 문제가 어떻게 발생했는지 파악하는 데 도움이 될 수 있고, 커뮤니티에서 비슷한 문제를 경험한 다른 사람들에게도 공감을 줄 수 있을 것입니다. 어떤 서버와 사양을 사용하시나요? 표준 설치 가이드를 따랐다고 하셨지만, 일부 루틴 명령에 대해 불분명하다고 하셨는데, 서버에 중요한 업데이트를 놓쳤거나 다른 문제가 있었던 것은 아닌지 궁금합니다.
웹 인터페이스를 통해 다운로드하는 대신 scp 또는 rsync를 사용하여 다른 곳으로 복사할 수 있습니다.
여기서 무슨 일이 일어나고 있는지 이해가 되지 않습니다.
UX 업그레이드에서 언급된 /home/discourse는 컨테이너 내부에 있으므로, 로컬 파일 시스템에서 해당 파일들을 볼 것으로 예상하지 않습니다.
하지만 컨테이너 내부와 외부의 차이는 이해하고 계신 것 같습니다.
해당 컨테이너를 직접 보고 있지 않으므로, 재빌드(rebuild)에는 아무런 변화가 없을 것입니다.
git pull을 수행해 보셨나요?
master 브랜치가 아니라 main 브랜치에 계신가요?
좋습니다. @JammyDodger 님, 큰 진전이 있었네요. 도움을 주셔서 감사합니다. 1월에 백업했던 Discourse 서버를 복원했습니다. 완벽하게 실행되었고, "git pull"로 최신 버전으로 업그레이드한 후 앱을 다시 빌드했습니다. 좋은 소식은 이제 오류가 전혀 없다는 것입니다.
드디어 기존 서버에서 백업을 내보내고 가져오는 데 성공했습니다. 모든 데이터가 포럼에 있고 포럼에도 오류가 없습니다.
불행히도, 여전히 그래픽이 포함된 게시물을 편집하거나 그래픽이 포함된 새 게시물을 만들 수 없습니다. 500 오류가 발생하거나 단순히 "게시물을 생성할 수 없습니다"라는 메시지가 표시됩니다. https://discussion.scottibyte.com/ 에서 직접 시도해 보셔도 됩니다. 좋은 소식은 텍스트만 있는 게시물은 문제없이 작성할 수 있고, 최신 버전으로 업데이트되어 오류가 없다는 것입니다.
내 문제는 이미지 업로드 캐시에 Discourse가 접근하지 못해서 발생하는 것 같습니다. 이미지와 함께 게시물을 만들거나 이미지가 포함된 기존 게시물을 수정할 때 모두 이런 문제가 발생하고 있습니다. 또한 현재 2.9.0.beta4로 완전히 업그레이드되어 있습니다. beta1에서는 이런 문제를 확인하지 못했고, beta3 또는 beta4에서 발생했을 것으로 추정됩니다. 이미지가 포함된 기존 게시물을 수정할 때, 수정 내용을 저장하려고 하면 500 오류가 발생합니다. 이미지가 포함된 새 게시물을 만들면 다음과 같은 오류가 나타납니다:
이미지 없이 텍스트와 하이퍼링크만 있는 게시물을 수정하거나 생성하는 경우에는 문제가 없이 정상적으로 동작합니다.
Hi @vmsman ![]()
문제 관련 게시글을 여러 곳에 나눠 올리기보다는 하나의 토픽으로 정리해 주실 수 있을까요? 누군가 도움을 줄 수 있다면, 모든 관련 정보가 한 곳에 모여 있어 추적하기가 훨씬 쉬워집니다. ![]()
좋은 소식입니다.
이제 정상 작동하는 백업 덕분에 새 인스턴스를 생성하여 거기에서 설치할 수 있을까요?
그래서, 저는 완전히 업그레이드했습니다. 재구축 관련 버그는 모두 사라졌고, 백업도 복원했습니다. 그런데도 여전히 이미지를 업로드할 수 없습니다.
결국 서버를 처음부터 새로 구축했습니다. 에러는 없었습니다. 백업을 복원했는데도, 그래픽이 포함된 게시물을 편집할 때 여전히 같은 500 에러가 발생합니다. 이미지로 게시물을 만드는 것도 불가능합니다. 백업을 복원하기 전에 초기 설치 상태에서 게시물을 만들어 봤는데도 그래픽이 작동하지 않았습니다. Discourse 2.9.0.beta4에서 무언가 변경된 것 같습니다. beta2에서는 모든 것이 정상적으로 작동했습니다. 네트워크 관련 문제일 수밖에 없다는 결론에 도달했습니다. 제 Discourse와 다른 호스팅 앱들은 모두 NginX Proxy Manager 뒤에 위치해 있는데, 다른 앱들은 모두 정상적으로 작동합니다. 테스트로 NginX Proxy Manager를 제거하고 서버를 직접 노출해 봤더니 에러가 사라졌습니다. 따라서 beta4가 네트워크 측면에서 다른 방식으로 작동하고 있다는 결론을 내릴 수밖에 없습니다.
뭔가 좋은 방향인 것 같습니다.
제목을 한 번 더 수정해서 더 많은 답변을 받아볼 수 있는지 확인해 보겠습니다.
표준 설치 방식밖에 잘 모르기 때문에, NginX Proxy 관련 지식은 거의 전무합니다. ![]()







