【问题标题】:why am I getting network error for my Django website?为什么我的 Django 网站出现网络错误?
【发布时间】:2020-12-04 22:11:42
【问题描述】:

我的 django 网站已与默认 SQLite DB 集成。昨天,我尝试将其迁移到 Postgres,但是由于某些密码问题,迁移失败。然后我试图通过取消注释 settings.py 中的 SQLite 部分来回退到 SQLite。但它也失败了。我想我破坏了我的数据库。为了解决这个问题,我使用以下 CLI 命令删除了 SQLite 中的所有内容:

python manage.py migrate my-app-name zero

然后我使用 makemigratons 然后迁移。所以,这里的一切似乎都很顺利。但是,现在我遇到了与我的网站的连接问题。它不是从网络浏览器启动的。

我不知道我是否把整个环境弄乱了。

我的网站托管在 Ubuntu 服务器上的 AWS 上,它已启动并运行 gunicorn 和 nginx。最初我收到以下错误:

A communication error occurred: The Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests

我检查了 journalctl 日志,发现如下内容:

nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument

为了解决这个问题,我关注了网络link。但是,它不起作用。我不确定这是否与我的情况有关。

接下来,我重新启动了我的 AWS 实例,只是想看看这是否有任何积极影响。但现在,我明白了

Hmmm… can't reach this page 

在我的网络浏览器上。

我尝试查看 nginx 服务器日志,它只有以下三行

2020/08/14 16:27:23 [alert] 3246#3246: *22 open socket #12 left in connection 5
2020/08/14 16:27:23 [alert] 3246#3246: *23 open socket #13 left in connection 6
2020/08/14 16:27:23 [alert] 3246#3246: aborting

然后我还检查了系统日志,看看它是否有一些重要信息。我确实通过"tail -f" 实时日志注意到了一些东西,我看到如下:

S=0x00 SYN URGP=0
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]: 2020-08-15 04:20:43 INFO Backing off health check to every 600 seconds for 1800 seconds.
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]: 2020-08-15 04:20:43 ERROR Health ping failed with error - EC2RoleRequestError: no EC2 instance role found
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]: caused by: EC2MetadataError: failed to make EC2Metadata request
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]: #011status code: 404, request id:
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]: caused by: <?xml version="1.0" encoding="iso-8859-1"?>
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]: #011"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]:  <head>
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]:   <title>404 - Not Found</title>
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]:  </head>
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]:  <body>
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]:   <h1>404 - Not Found</h1>
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]:  </body>
Aug 15 04:20:43 primarySNS amazon-ssm-agent.amazon-ssm-agent[898]: </html>

看了上面的内容,现在我感觉我的 AWS 实例出了点问题。但我不确定需要做什么。

注意:在我尝试不成功的数据库迁移之前,该网站已启动并运行。

请帮忙,如果需要更多信息,请告诉我。

谢谢,

卷曲错误信息:

    "curl: (7) Failed to connect to schoolnskill.com port 80: Connection timed out

curl localhost messages:
curl localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>

【问题讨论】:

  • 错误提示“未找到 EC2 实例角色”?您是否已删除该角色或未附加该角色?
  • 这就是讽刺。除了重新启动我的 EC2 实例外,我没有在我的 AWS 仪表板上做任何事情。请您建议我如何以及在 AWS 中检查什么?我不是很熟悉它
  • 经过进一步阅读,该实例适用于您的 SSM 代理。它默认安装。如果你不使用它,那很好。如果你 ssh 进入实例,你可以从内部curl你的网站或启动它吗?
  • 我按照你说的“curl schoolnskill.com”做了。但什么也没有发生。点击“enter”后,它只保留在 CLI 中,甚至不会返回到 CLI。我必须 ctrl + c。
  • 一段时间后我看到连接超时错误。更新了原来的帖子。 "

标签: django amazon-web-services ubuntu nginx webserver


【解决方案1】:

基于聊天讨论。

连接问题是由实例上的ufw 防火墙 引起的。防火墙阻止到端口 80 的传入连接。

临时解决方案是禁用ufw 以启用连接并进一步处理应用程序。

【讨论】:

    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    相关资源
    最近更新 更多