LSudo
(Fun with tacos)
2024 年9 月 25 日 22:34
1
嘿,各位朋友,
有个有趣的问题想请教大家。事情是这样的:
使用 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 安装了 discourse
使用 doctor 测试了邮件,工作正常,收到了邮件。
尝试激活管理员账户,sidekiq 显示了这个(已隐藏 token):
{“type”=>“signup”, “user_id”=>1, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}
不确定为什么 to_address 会是 nil。
非常欢迎任何提示、建议或意见!
simon
2024 年9 月 25 日 23:26
2
我大概能找到,但你知道触发邮件的 Sidekiq 作业叫什么名字吗?
Fun with tacos:
任何技巧、建议或意见都将非常受欢迎!
如果你因为没有收到激活邮件而无法访问网站,你可以使用 rake admin:create 创建一个管理员用户和密码。完整说明请参见:https://meta.discourse.org/t/create-an-admin-account-from-the-console/17274。这样你应该就能登录网站了。
不过,听起来你仍然需要解决邮件发送问题。
6 个赞
LSudo
(Fun with tacos)
2024 年9 月 26 日 08:34
3
抱歉回复延迟。触发它的作业是:Jobs::CriticalUserEmail
所以我严格按照指南操作。在注册管理员帐户时,没有发送电子邮件,并且 Jobs::CriticalUserEmail 包含 {“type”=>“signup”, “user_id”=>1, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}。
我确实强制创建了管理员帐户,以便查看存在哪些问题。结果如下:
Doctor 可以正常工作并收到电子邮件
Digest 测试可以正常工作并收到 HTML 和纯文本格式的电子邮件
任何注册都没有发送电子邮件,并且管理员部分中的电子邮件日志甚至没有显示已发送电子邮件的消息。
每当用户尝试注册时,结果都相同:
Jobs::CriticalUserEmail 包含 {“type”=>“signup”, “user_id”=>2, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}。
/var/discourse/shared/standalone/log/rails/production.log 的末尾显示(已编辑):
Processing by UsersController#check_username as JSON
Parameters: {"username"=>"bobo", "email"=>"REDACTED"}
Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 636)
Started GET "/session/csrf" for REDACTEDPUBLICIP at 2024-09-26 08:13:03 +0000
Processing by SessionController#csrf as JSON
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 270)
Started POST "/u" for REDACTEDPUBLICIP at 2024-09-26 08:13:03 +0000
Processing by UsersController#create as */*
Parameters: {"name"=>"JJ", "email"=>"REDACTED", "password"=>"[FILTERED]", "username"=>"bobo", "password_confirmation"=>"[FILTERED]", "challenge"=>"REDACTED", "timezone"=>"Europe/London"}
Completed 200 OK in 335ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 23323)
Started POST "/login" for REDACTEDPUBLICIP at 2024-09-26 08:13:04 +0000
Processing by StaticController#enter as HTML
Parameters: {"username"=>"bobo", "password"=>"[FILTERED]", "redirect"=>"/u/account-created"}
Redirected to https://REDACTEDDOMAIN/u/account-created
Completed 302 Found in 1ms (ActiveRecord: 0.0ms | Allocations: 507)
Started GET "/u/account-created" for REDACTEDPUBLICIP at 2024-09-26 08:13:04 +0000
Processing by UsersController#account_created as HTML
Rendered layout layouts/application.html.erb (Duration: 14.0ms | Allocations: 4624)
Completed 200 OK in 21ms (Views: 15.1ms | ActiveRecord: 0.0ms | Allocations: 6821)
Started GET "/sidekiq/queues/critical" for REDACTEDPUBLICIP at 2024-09-26 08:13:15 +0000
日志中显示了注册参数的准确电子邮件,但 sidekiq 仍然报告“to_address”=>nil
1 个赞
simon
2024 年9 月 26 日 19:27
4
Fun with tacos:
每当用户尝试注册时,结果都一样:
Jobs::CriticalUserEmail 包含 {“type”=>“signup”, “user_id”=>2, “email_token”=>“REDACTED”, “to_address”=>nil, “current_site_id”=>“default”}。
您的网站的错误日志页面(位于 /logs)上是否有任何错误?您可以从管理侧边栏点击“安全/错误日志”条目进入该页面。
1 个赞
simon
2024 年9 月 26 日 19:56
6
您是否可以在 /sidekiq 访问 Sidekiq Web 界面?如果可以,该页面是否报告了任何错误?
1 个赞
simon
2024 年9 月 26 日 20:28
8
尝试点击“Enqueued”选项卡。它是一个链接。
1 个赞
LSudo
(Fun with tacos)
2024 年9 月 26 日 20:38
9
我收到这个:
这就是我发现 address_to=nil 的地方。
simon
2024 年9 月 26 日 21:23
10
Redis 和/或 Sidekiq 似乎有问题。论坛上还有几位成员可能对如何调试此问题有所想法。
此时,我很想 SSH 登录到服务器并运行:
cd /var/discourse
./launcher rebuild app
此时这样做不会有坏处。
1 个赞
LSudo
(Fun with tacos)
2024 年9 月 26 日 21:31
11
是的,我已经这样做了好几次,所以我才来问。
我进行过重建。我甚至进行过全新的安装。
似乎每次安装都会发生这种情况。无论如何。我现在真是束手无策了。
我非常感谢您为我提供的帮助。
1 个赞
simon
2024 年9 月 27 日 17:33
12
3 个赞
LSudo
(Fun with tacos)
2024 年9 月 27 日 21:21
13
我可以告诉你我使用的确切过程。也许我所做的过程中有什么是错误的。我愿意完全承认我在这里犯了错误!
拥有域名。它是 discourse.domain.dev(域名已明显 redaction)
设置了电子邮件帐户。我有一个 mailgun 帐户,所以我设置了一个全新的用户用于 SMTP。电子邮件是 discourse@discourse.domain.dev
拥有服务器。它是最新的 Ubuntu(Jammy Jellyfish)
apt install docker.io - 无
Git 已安装
用户是 root
使用 git clone https://github.com/discourse/discourse_docker.git /var/discourse 克隆
导航到 cd /var/discourse
chmod 700 containers
仍然是 root 用户
运行 ./discourse-setup
按要求填写信息:discourse.domain.dev
Discourse 管理员电子邮件:my@personal.email
SMTP:smtp.eu.mailgun.org
SMTP 端口:587
用户名:noreply@discourse.domain.dev
用户密码:REDACTED
通知电子邮件:noreply@discourse.domain.dev
Let’s Encrypt 电子邮件:my@personal.email
Maxmind ID:已填入
Max Mind 许可证:已填入
验证了设置的输入数据。
按 Enter。
等待。
又等了一会儿
泡了杯茶
引导过程的最后一行:
+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=8 -e UNICORN_SIDEKIQS=1 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_HOSTNAME=discourse.domain.dev -e DISCOURSE_DEVELOPER_EMAILS=my@personal.email -e DISCOURSE_SMTP_ADDRESS=smtp.eu.mailgun.org -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=noreply@discourse.domain.dev -e DISCOURSE_SMTP_PASSWORD=b7fc73b0905b5ffb5f70300f1f796000-1b5736a5-0a60075a -e DISCOURSE_SMTP_DOMAIN=discourse.example.com -e DISCOURSE_NOTIFICATION_EMAIL=noreply@discourse.domain.dev -e LETSENCRYPT_ACCOUNT_EMAIL=my@personal.email -e DISCOURSE_MAXMIND_ACCOUNT_ID=REDACTED -e DISCOURSE_MAXMIND_LICENSE_KEY=REDACTED -h devsite -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address REDACTGED local_discourse/app /sbin/boot
REDACTEDLONGSTRING
运行 ./discourse-doctor。由于无法连接到 redis 而失败。
运行 ./launcher rebuild app,未更改配置中的任何内容
它已构建。一切正常。唯一的区别是最后的 redaction 长字符串。
运行 ./discourse-doctor。我收到了来自它的测试电子邮件。
网站已上线,因此我创建了管理员用户帐户。
点击注册
它说它正在发送通知电子邮件。
未收到。
通过 ./discourse-docter 查看,看到这个:
Discourse version at discourse.domain.dev: NOT FOUND
Discourse version at localhost: NOT FOUND
运行 ./launcher enter app
运行 rake admin:create
输入电子邮件:my@personal.email
重置密码,因为用户已存在
显示“您的帐户现在拥有管理员权限!”
登录到域上的站点
转到 discourse.domain.dev/logs - 看到“Sidekiq heartbeat test failed, restarting`
转到 discourse.domain.dev/sidekiq:看到:
转到查看 Enqueued
点击“critical”并展开内容,再次看到“to_address”=nil
停止,并寻求帮助。
这是今天在全新机器上完全重做。这些是我之前使用的确切步骤。请,如果我搞砸了,请告诉我!
系统设置:
CPU:4 核
RAM:16 GB
操作系统:Ubuntu LTS 64 位 24.04
存储:NVMe 500G
Postgres 版本:13.16-1
Redis:7.0.7
Ruby:3.3.4
1 个赞