我尝试以 root 用户身份运行 \"bundle exec rake s3:upload_assets\",但出现以下错误:Could not locate Gemfile or .bundle/ directory.
我也尝试在不使用 root 用户的情况下运行,使用 \"sudo -E -u discourse bundle exec rake s3:upload_assets\",但出现以下错误:sudo: unknown user discourse\nsudo: error initializing audit plugin sudoers_audit
- 我在以下目录中执行了这两个命令:
/var/discourse
- 这是一个常规安装,未使用 docker 或其他任何东西。
如何修复此问题以便我能够运行它?
谢谢。
pfaffman
(Jay Pfaffman)
3
您需要将其在容器内运行。
cd /var/discourse
./launcher enter app
然后运行该命令。
1 个赞
{“translation”: "[引用=“joshhabka, 第1帖, 主题: 361173”]
sudo -E -u discourse bundle exec rake s3:upload_assets
[/引用]
谢谢!这让我更进一步,现在遇到这个错误:
root@redacted:/var/www/discourse# sudo -E -u discourse bundle exec rake s3:upload_assets
/ root 不是可写的。
Bundler 会临时使用 `/tmp/bundler20250409-510203-w6snye510203` 作为你的主目录。
错误:确保在 config/discourse.conf 或环境变量中配置了 S3
我确实在 Discourse 站点设置中配置了一切。 我没有使用 Docker,所以我不需要环境变量,对吧?"}
我在 app.yml 中尝试添加环境变量,重建,然后重新进入应用并运行命令,结果如下:
`/root` 不可写。
Bundler 将暂时使用 `/tmp/bundler20250409-1393-48ek5u1393` 作为您的主目录。
正在安装 CORS 规则...
正在尝试在存储桶 biohacking-forum 中应用 ASSETS S3 CORS 规则集。
rake 中止!
Seahorse::Client::NetworkingError: 响应体为空或不完整 (Seahorse::Client::NetworkingError)
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/plugins/response_target.rb:24:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `block in call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in `in_span'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in `span_wrapper'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.219.0/lib/seahorse/client/request.rb:72:in `send_request'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:6359:in `get_bucket_cors'
/var/www/discourse/lib/s3_helper.rb:401:in `fetch_bucket_cors_rules'
/var/www/discourse/lib/s3_helper.rb:168:in `ensure_cors!'
/var/www/discourse/lib/s3_cors_rulesets.rb:60:in `sync'
/var/www/discourse/lib/tasks/s3.rake:183:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => s3:upload_assets => s3:ensure_cors_rules
(运行带有 --trace 参数的任务可查看完整跟踪)
pfaffman
(Jay Pfaffman)
7
您确实需要环境变量,这就是为什么在为上传配置 S3 兼容对象存储提供商中将其记录下来的原因,以及为什么错误消息会告诉您这样做。
所有 S3 变量都应移至隐藏设置,因为在设置中配置它们弊大于利。
抱歉,我忘了您没有使用 Docker。但是,是的,您仍然需要在环境变量中设置它们。我在开发环境中这样做,以便从 S3 恢复数据库。
如果您不是为开发环境执行此操作,那么您很可能犯了一个大错误。
@Eviepayne
通过执行以下操作已修复 - 存在两个错误。
首先,我通过执行以下操作修复了第二个错误:
rails c
Upload.find(386).destroy!
exit
这修复了损坏的帖子(格式错误的文本或类似内容)
然后屏幕上的红色错误是由于使用了随机子域(由 cloudflare 提供)并将其上传到该子域。我必须将文件上传到新域(包括我的连接域)
使用:
sudo -E -u discourse bundle exec rake s3:upload_assets
然后:
sudo -E -u discourse bundle exec rake uploads:migrate_to_s3
然后论坛正常加载,右键单击并在新标签页中打开图像显示它们托管在 R2 上。然后我进行了备份。
最后,我使用以下命令清理了所有内容:
sudo -E -u discourse bundle exec rake uploads:clean_up
这释放了文件的相应存储空间(请注意,在迁移之前,我仍然拥有文件(操作系统级别)和 discourse 级别的本地备份)。
现在一切都完美运行!
3 个赞
system
(system)
关闭
9
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.