bifterx
(rob Dennis)
1
你好,
我有点抓狂了。
我按照标准安装说明操作,已经设置了 Mailjet 等,但每次启动引导都失败。
这是我的配置,我就是看不出哪里出了问题。
有什么建议吗?
谢谢
这样看起来对吗?
主机名 : forum.mydomain.com
邮箱 : forumadmin@mydomain.com
SMTP 地址 : in-v3.mailjet.com
SMTP 端口 : 587
SMTP 用户名 : b91xxxxxxd3222d809xxxxxxe3de52d
SMTP 密码 :xxxxxx5b75ecdf24f31c2axxxxxx6903
Let's Encrypt : 密码(密钥)
然后
失败
--------------------
Pups::ExecError: /bin/bash -c "if [[ ! \"$LETSENCRYPT_ACCOUNT_EMAIL\" =~ ([^@]+)@([^\.]+) ]]; then echo \"LETSENCRYPT_ACCOUNT_EMAIL 不是有效的邮箱地址\"; exit 1; fi" 执行失败,返回状态为 #<Process::Status: pid 5329 exit 1>
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn'
执行失败,参数如下:{"cmd"=>["if [ -z \"$LETSENCRYPT_ACCOUNT_EMAIL\" ]; then echo \"LETSENCRYPT_ACCOUNT_EMAIL 环境变量是必需的但尚未设置。\"; exit 1; fi", "/bin/bash -c \"if [[ ! \\\"$LETSENCRYPT_ACCOUNT_EMAIL\\\" =~ ([^@]+)@([^\\.]+) ]]; then echo \\\"LETSENCRYPT_ACCOUNT_EMAIL 不是有效的邮箱地址\\\"; exit 1; fi\""]}
xxxxxxxxxxxxxxxxxxxxxxe6e31b17b7exxxxxxxxxxxxxxxxxx856eb0
** 启动引导失败 ** 请向上滚动查看之前的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
Stephen
(Stephen)
2
为什么 Let’s Encrypt 字段中的电子邮件会是密码或私钥?它应该是一个电子邮件地址。
bifterx
(rob Dennis)
3
脚本不允许我为 LETS ENCRYPT 输入任何内容。
一旦我输入 SMTP 用户名和密码,它就会立即开始运行。
bifterx
(rob Dennis)
4
是的,看起来是 Let’s Encrypt 相关的问题。但如前所述,安装脚本没有提供输入电子邮件地址的机会。一旦收到 SMTP 密码,程序似乎就直接跳过了该步骤,并弹出一个错误。
您可以在这里看到具体情况…
您的 Discourse 主机名?[forum.uaptn.com]:
管理员账户的电子邮件地址?[forumadmin@uaptn.com]: xxxxxxxxe@protonmail.com
SMTP 服务器地址?[in-v3.mailjet.com]:
SMTP 端口?[587]:
SMTP 用户名?[b91xxxxxxxxxxxxxxxxxxde52d]:
SMTP 密码?[1d2xxxxxxxxxxxxxxxxxxxxxxxxxxxx903]:
./discourse-setup: 第 438 行:[: 参数过多
正在检查您的域名...
连接到 forum.uaptn.com 成功。
这些信息看起来正确吗?
主机名 : forum.uaptn.com
电子邮件 : xxxxxxxxx@protonmail.com
SMTP 地址 : in-v3.mailjet.com
SMTP 端口 : 587
SMTP 用户名 : b91xxxxxxxxxxxxxxxxxxxxxe52d
SMTP 密码 : 1d2cxxxxxxxxxxxxxxxxxxx5086903
Let's Encrypt : 密码(密钥)
按回车键继续,按'n'重试,按 Ctrl+C 退出:
在此处输入电子邮件地址,而不是秘密密码。
该电子邮件地址将用于在 Let’s Encrypt 创建账户,以便为 Discourse 获取 SSL 证书。
pfaffman
(Jay Pfaffman)
6
我不明白你为何无法输入 Let’s Encrypt 的邮箱地址。你是否多粘贴了一个换行符?
bifterx
(rob Dennis)
8
不是那样。脚本只是略过了 Let’s Encrypt 部分,一旦我输入密码,它就弹出“第 438 行:[: 参数过多”的错误并继续执行。
您的密码包含特殊字符吗?尝试输入一个不含特殊字符的假密码(例如 123456),查看系统是否会要求输入 Let’s Encrypt 的邮箱地址。
bifterx
(rob Dennis)
10
不,它不是,那是从 Mailjet 直接生成的密码,不过我会试试输入一个假的。
也许脚本没有询问是因为它已经在你的 app.yml 中了,然后由于 此问题 而报错(因为 app.yml 文件中的邮箱地址本身就有误)。
尝试手动修改文件中的邮箱地址,看看是否有效(nano containers/app.yml)。
报错的那一行 会检查 Let’s Encrypt 邮箱是否为空,如果非空则显示并询问你是否要更改。但由于该条件未将变量用双引号包裹,app.yml 中的值会被展开,从而导致 参数过多 的错误。
我认为如果 Discourse 团队将变量用双引号包裹,应该能避免此类情况,不过这种情况应该很少见(可能仅在首次运行设置时,值被错误设置)。
bifterx
(rob Dennis)
13
成功了
- 也就是说,在手动修改 app.yml 后,它为我提供了该步骤
希望引导过程顺利
非常感谢。