通过 "forgot password" link 使用 Kiwi 的密码重置显示 500 Internal Server Error。这是 common.py 的设置问题吗?

Using Kiwi's password reset through the "forgot password" link displays 500 Internal Server Error. Is this an issue with settings at common.py?

最近我不得不更改另一个用户的密码,因为可能有错字。使用登录页面的 "forgot password" 显示 500 错误。查看 Kiwi 的仪表板、文档和 github 讨论,据说用户只能更改自己的密码。虽然我使用

解决了这个问题(无法更改密码)
docker exec -it kiwi_web /Kiwi/manage.py changepassword userNameHere 

,我想知道初始 500 错误的原因是 Kiwi 的 common.py 文件中的设置问题还是完全是其他原因。

尝试过

https://docs.djangoproject.com/en/2.2/topics/auth/default/
https://kiwitcms.readthedocs.io/en/latest/configuration.html
https://github.com/kiwitcms/Kiwi/issues/610
https://docs.djangoproject.com/en/2.0/topics/email/#quick-example

EMAIL_BACKEND = 'django_ses.SESBackend'
AWS_SES_ACCESS_KEY_ID = 'key'
AWS_SES_SECRET_ACCESS_KEY = 'key'
EMAIL_HOST = ''
EMAIL_PORT = 25
EMAIL_FROM = 'mail'
DEFAULT_FROM_EMAIL = 'kiwi@example.com'
EMAIL_SUBJECT_PREFIX = '[Kiwi-TCMS] '

预计能够使用针对用户设置的电子邮件地址的密码重置。

实际是500错误。

顺便说一句,这是新手。 提前致谢。

编辑:

这些日志?:

IP - - [09/Aug/2019:02:52:07 +0000] "GET /accounts/passwordreset/ HTTP/1.1" 200 1944 "https://kiwitcms.domain.com/accounts/login/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
IP  - - [09/Aug/2019:02:52:08 +0000] "GET / HTTP/1.1" 302 - "-" "ELB-HealthChecker/2.0"
IP  - - [09/Aug/2019:02:52:08 +0000] "POST /accounts/passwordreset/ HTTP/1.1" 500 8241 "https://kiwitcms.domain.com/accounts/passwordreset/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"

此外,即使在 product.py 的 DEBUG 为 True 之后,回溯似乎也不起作用。这是您指的错误吗?

换个角度的问题:安装Kiwi后密码重置功能是否可以使用,还是必须配置,如果可以,需要配置什么。

编辑 2: 这些日志是否相关? 使用 docker logs container | grep -i error

[Tue Aug 13 06:59:25.408480 2019] [ssl:warn] [pid 8] AH01909: RSA certificate configured for 172.22.0.3:8443 does NOT include an ID which matches the server name
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.22.0.3. Set the 'ServerName' directive globally to suppress this message
[Tue Aug 13 06:59:25.429943 2019] [lbmethod_heartbeat:notice] [pid 8] AH02282: No slotmem from mod_heartmonitor
[Tue Aug 13 06:59:25.430535 2019] [ssl:warn] [pid 8] AH01909: RSA certificate configured for 172.22.0.3:443 does NOT include an ID which matches the server name
[Tue Aug 13 06:59:25.430689 2019] [ssl:warn] [pid 8] AH01909: RSA certificate configured for 172.22.0.3:8443 does NOT include an ID which matches the server name
[Tue Aug 13 06:59:25.433497 2019] [mpm_prefork:notice] [pid 8] AH00163: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips mod_wsgi/4.6.7 Python/3.6 configured -- resuming normal operations
[Tue Aug 13 06:59:25.433519 2019] [core:notice] [pid 8] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'

我已经在本地测试了它,没有更改公共文件和产品文件,所以它不会被错误配置。在迁移数据库架构和创建超级用户之间,是否需要额外的步骤来配置电子邮件后端?

编辑 3: 终于得到了回溯以显示

的 oritgaon 示例
https://github.com/kiwitcms/Kiwi/issues/631

回溯:

内部文件“/venv/lib64/python3.6/site-packages/django/core/handlers/exception.py” 34.响应=get_response(请求)

文件“/venv/lib64/python3.6/site-packages/django/core/handlers/base.py”在_get_response 115. 响应 = self.process_exception_by_middleware(e, 请求)

文件“/venv/lib64/python3.6/site-packages/django/core/handlers/base.py”在_get_response 113. 响应 = wrapped_callback(请求, *callback_args, **callback_kwargs)

文件“/venv/lib64/python3.6/site-packages/django/views/generic/base.py”在视图中 71. return self.dispatch(请求,*args,**kwargs)

_wrapper 中的文件“/venv/lib64/python3.6/site-packages/django/utils/decorators.py” 45. return bound_method(*args, **kwargs)

_wrapped_view 中的文件“/venv/lib64/python3.6/site-packages/django/utils/decorators.py” 142. 响应 = view_func(请求, *args, **kwargs)

调度文件“/venv/lib64/python3.6/site-packages/django/contrib/auth/views.py” 220.return super().dispatch(*args, **kwargs)

调度文件“/venv/lib64/python3.6/site-packages/django/views/generic/base.py” 97. return 处理程序(请求,*args,**kwargs)

post 中的文件“/venv/lib64/python3.6/site-packages/django/views/generic/edit.py” 142.returnself.form_valid(表格)

form_valid 中的文件“/venv/lib64/python3.6/site-packages/django/contrib/auth/views.py” 233.form.save(**选择)

保存文件“/venv/lib64/python3.6/site-packages/tcms/kiwi_auth/forms.py” 95.extra_email_context,

保存文件“/venv/lib64/python3.6/site-packages/django/contrib/auth/forms.py” 295.电子邮件,html_email_template_name=html_email_template_name,

send_mail 中的文件“/venv/lib64/python3.6/site-packages/django/contrib/auth/forms.py” 250.email_message.send()

发送文件“/venv/lib64/python3.6/site-packages/django/core/mail/message.py” 291.returnself.get_connection(fail_silently).send_messages([self])

send_messages 中的文件“/venv/lib64/python3.6/site-packages/django/core/mail/backends/smtp.py” 103.new_conn_created=self.open()

打开文件“/venv/lib64/python3.6/site-packages/django/core/mail/backends/smtp.py” 63. self.connection = self.connection_class(self.host, self.port, **connection_params)

init 中的文件“/opt/rh/rh-python36/root/usr/lib64/python3.6/smtplib.py” 251.(代码,消息)= self.connect(主机,端口)

连接中的文件“/opt/rh/rh-python36/root/usr/lib64/python3.6/smtplib.py” 336. self.sock = self._get_socket(主机,端口,self.timeout)

_get_socket 中的文件“/opt/rh/rh-python36/root/usr/lib64/python3.6/smtplib.py” 307.self.source_address)

create_connection 中的文件“/opt/rh/rh-python36/root/usr/lib64/python3.6/socket.py” 724.引发错误

create_connection 中的文件“/opt/rh/rh-python36/root/usr/lib64/python3.6/socket.py” 713.sock.connect(sa)

异常类型:/accounts/passwordreset/ 处的 OSError 异常值:[Errno 99] 无法分配请求的地址

仅供参考,我已打开功能请求以添加故障排除命令。您可以在这里投票:https://github.com/kiwitcms/Kiwi/issues/1070

遇到此问题的任何人,请先通过 https://kiwitcms.readthedocs.io/en/latest/installing_docker.html

显示回溯:

  • 在 Kiwi 目录下创建 local_settings.py 并键入:

    调试 = 真

  • 保存

  • 在 docker-compose.yml 中:根据 https://github.com/kiwitcms/Kiwi/issues/631 添加下面的行到 volumes

    ./local_settings.py:/venv/lib64/python3.6/site-packages/tcms/settings/local_settings.py

  • 运行 "docker-compose down" 然后 "docker-compose up -d".

启用电子邮件注册和密码重置:

  • 我使用的配置需要启用 2FA 的 gmail 帐户以及设置的应用程序密码。
  • 在local_settings.py中:添加下面的代码。

    EMAIL_HOST = 'smtp.gmail.com'

    EMAIL_PORT = '587'

    EMAIL_HOST_USER = 'yourGmailAccountHere'

    EMAIL_HOST_密码='yourAppPasswordHere'

    EMAIL_USE_TLS = 真

  • 保存并重新组合。

总结:我安装 Kiwi 需要配置电子邮件设置才能使密码重置和注册电子邮件正常工作。