pfaffman
(Jay Pfaffman)
1
构建失败是由于这个原因。我删除了 ENV 变量并在没有它的情况下重新构建。然后进入容器内部进行调试。在那里,我将密钥添加到了 discourse.conf,但仍然失败。
(谢天谢地,我在告诉客户他们给了我一个无效密钥之前就做了这件事!)
我向 rake 任务添加了一个 puts 来打印它尝试下载数据库的 URL,如下所示:
url =
"https://download.maxmind.com/app/geoip_download?license_key=#{GlobalSetting.maxmind_license_key}&edition_id=#{name}&suffix=tar.gz"
gz_file =
FileHelper.download(
url,
max_file_size: 100.megabytes,
tmp_file_name: "#{name}.gz",
validate_uri: false,
follow_redirect: false,
)
if gz_file.nil?
puts "no gzfile"
end
puts "Got file #{gz_file} for #{url}"
filename = File.basename(gz_file.path)
现在我得到这个:
root@web-only:/var/www/discourse# rake maxminddb:get
插件名称是 'discourse-topic-voting',但插件目录名为 'discourse-voting'
正在下载 MaxMindDb 的 GeoLite2-City...
no gzfile
Got file for https://download.maxmind.com/app/geoip_download?license_key=VALID_KEY_IS_HERE&edition_id=GeoLite2-City&suffix=tar.gz
rake aborted!
NoMethodError: undefined method `path' for nil:NilClass (NoMethodError)
filename = File.basename(gz_file.path)
^^^^^
/var/www/discourse/lib/discourse_ip_info.rb:52:in `mmdb_download'
/var/www/discourse/lib/tasks/maxminddb.rake:9:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `each'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => maxminddb:get
(通过运行任务并添加 --trace 来查看完整跟踪)
有另一个主题,问题是站点被 Maxmind 阻止了,所以我尝试了,并且成功地从服务器上的容器内使用 wget 下载了该 URL。
在我看来,FileHelper.download 并不是一个真正的 Helper,而是默默地返回 nil 而不是文件。文件只有 44MB,所以不是这个问题。当我使用 wget 检查完整的标头时,我没有看到重定向。
有什么关于这可能是什么原因的想法吗?
有没有理由不捕获此错误并允许构建使用无效密钥完成?也许只是打印一个警告?
1 个赞
follow_redirect: true 是否效果更好?
根据最近的更改,MaxMind 更改了下载 URL,但只要您允许重定向,就可以保留原始 URL。
2 个赞
mcdanlj
(Michael K Johnson)
3
我想知道是否有什么误会,这个并非真的从5月1日开始。
2 个赞
pfaffman
(Jay Pfaffman)
4
我的天哪。是的。我不知道为什么我没有直接更改它,并且认为它没有重定向。
4 个赞
Firepup650
(Firepup Sixfifty)
6
尝试将论坛的 maxmind 密钥重新投入使用,但我们在尝试重建时仍然收到原始错误。
1 个赞
您能检查一下您是否使用了最新版本的 Discourse 吗?它对 Jay 有效;我看不出有什么理由它对您无效,尤其是当它遵循 MaxMind 的建议时。
1 个赞
你说得对。不过,你永远不知道。
显示的哈希版本是什么?至少我们可以快速检查一下。
我重新阅读了 MaxMind 的公告,但除了更改 URL 或允许重定向之外,我没有看到任何其他内容。
1 个赞
mcdanlj
(Michael K Johnson)
10
您是在运行 tests-passed 还是 latest-release?
Firepup650
(Firepup Sixfifty)
11
我们已进入 tests-passed 状态,至少据我所知是这样。
Firepup650
(Firepup Sixfifty)
13
崩溃的构建日志结束:
正在下载 MaxMindDB...
正在压缩 Javascript 并生成 Source Maps
I, [2024-03-26T13:27:38.305597 #1] INFO -- : 正在终止异步进程
I, [2024-03-26T13:27:38.307312 #1] INFO -- : 正在向 HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 42 发送 INT
I, [2024-03-26T13:27:38.307891 #1] INFO -- : 正在向 exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 111 发送 TERM
111:signal-handler (1711459658) 收到 SIGTERM,正在调度关闭...
2024-03-26 13:27:38.307 UTC [42] LOG: 收到快速关机请求
2024-03-26 13:27:38.314 UTC [42] LOG: 正在中止任何活动事务
2024-03-26 13:27:38.321 UTC [42] LOG: 后台工作进程“逻辑复制启动器”(PID 51) 已退出,退出代码为 1
2024-03-26 13:27:38.322 UTC [46] LOG: 正在关闭
111:M 26 Mar 2024 13:27:38.353 # 用户请求关机...
111:M 26 Mar 2024 13:27:38.353 * 正在退出前保存最终 RDB 快照。
2024-03-26 13:27:38.415 UTC [42] LOG: 数据库系统已关闭
111:M 26 Mar 2024 13:27:39.896 * DB 已保存到磁盘
111:M 26 Mar 2024 13:27:39.896 # Redis 现在可以退出了,再见...
失败
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' 失败,返回 #<Process::Status: pid 3889 exit 1>
失败位置:/usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
使用参数 {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]} 执行失败
引导失败,退出代码为 1
** 引导失败 ** 请向上滚动查找更早的错误消息,可能不止一个。
./discourse-doctor 可能会帮助诊断问题。
fe4eec7726fdbe08aaa2691e806bb17423a8f4eaedb8414397e3097d725e04c7
提交:<Commits · discourse/discourse · GitHub;
事后补充说明,我没有链接到发生此问题的网站,因为其中一名工作人员正在测试一个内核 bug 在同一服务器上的另一个容器中,并意外导致整个服务器崩溃,因此链接到网站根本无济于事。
1 个赞
Firepup650
(Firepup Sixfifty)
16
我确认,问题不再出现。我们的论坛现在可以正常重建。
4 个赞