django - 如何调试从计算机到服务器的连接,服务器端

标签 django apache centos7

我的 Centos 7 服务器正在运行 apache 2.4.6,并且正在使用 mod_wsgi 提供 django webapp。我的问题是我无法从另一台计算机的浏览器访问服务器 url。我没有从 apache 得到任何错误,它的启动和运行没有问题。我已在 http.conf 文件中将错误日志设置为“调试”,但仍然没有错误。我知道服务器实际上是通过 ping 连接到互联网的,我知道它正在通过运行监听端口:80
netstat -tunlp | grep 80 .

tcp        0      0 0.0.0.0:60080           0.0.0.0:*               LISTEN      3841/name-gu 
tcp6       0      0 :::80                   :::*                    LISTEN      13882/httpd  

我也暂时关闭了服务器端的所有防火墙

我的 settings.py 在 ALLOWED_HOSTS 下有 url、ip 地址和 localhost

我如何调试这个问题,以便我有一个可以查看的错误?

日志 :
让我知道是否需要更多信息
跑了tcpdump -nn tcp port 80在服务器计算机上
然后运行 ​​curl -v myurl.com在我的机器上并在我的服务器上获得这些结果:
13:11:52.225076 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [S], seq 3327782620, win 29200, options [mss 1460,sackOK,TS val 36451589 ecr 0,nop,wscale 7], length 0
13:11:52.225355 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [S.], seq 1689726058, ack 3327782621, win 28960, options [mss 1460,sackOK,TS val 73904848 ecr 36451589,nop,wscale 7], length 0
13:11:52.225960 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 36451590 ecr 73904848], length 0
13:11:52.226198 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [P.], seq 1:101, ack 1, win 229, options [nop,nop,TS val 36451590 ecr 73904848], length 100: HTTP: GET / HTTP/1.1
13:11:52.226448 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [.], ack 101, win 227, options [nop,nop,TS val 73904849 ecr 36451590], length 0
13:11:52.231414 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [P.], seq 1:286, ack 101, win 227, options [nop,nop,TS val 73904854 ecr 36451590], length 285: HTTP: HTTP/1.1 200 OK
13:11:52.232052 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [.], ack 286, win 237, options [nop,nop,TS val 36451596 ecr 73904854], length 0
13:11:52.232814 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [F.], seq 101, ack 286, win 237, options [nop,nop,TS val 36451597 ecr 73904854], length 0
13:11:52.233003 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [F.], seq 286, ack 102, win 227, options [nop,nop,TS val 73904856 ecr 36451597], length 0
13:11:52.233414 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [.], ack 287, win 237, options [nop,nop,TS val 36451597 ecr 73904856], length 0

最佳答案

首先,我将重点验证您是否可以访问 Apache 服务器上的某些静态测试页面,因为它只监听 。 IPv6 港口。 (这是您服务器上显示的最可疑的细节。也许您只为 IPv4 地址配置了 DNS,或者您还没有对 IPv6 地址进行 ping6。如果它是公共(public)服务器,那么它可能应该监听最后也在 IPv4 上。很明显,没有服务在监听 IPv4 tcp 端口 80,也没有代理。)如果不是问题,那么我将描述一种“调试”策略:
...很好,您检查了一些有用的特定事实,但最有效的策略是尝试 平分 “一半”大小的区域可能存在很大的问题,可以独立检查它们是否有效,以及如果该区域的任何东西被破坏,它将如何具体表现出来。
我会查看 访问日志 /var/log/httpd/access_log (CentOS 上的默认 Apache 日志)Apache 已收到请求,状态代码是什么,响应的大小为零或非零,Apache 和浏览器之间一切正常。通过一个请求先轻松测试服务器更有用来自同一服务器 ,在您开始怀疑防火墙等之前,例如通过命令行实用程序测试它wget -S -O - http://mysite.example.comcurl -i http://mysite.example.com .如果您通过浏览器检查任何内容,您应该使用 开发者工具 检查 (Ctrl+Shift+I),网络选项卡,查看问题是否仅与响应有关或仍与发送请求有关。
我最终还将验证来自 Python/Django 的日志记录是否有效,并且您正在查看正确的 Python日志 ,例如通过添加 log.info("something") models.py 末尾的命令,不仅您看不到任何错误。
文本“我无法从我的浏览器访问服务器 url”需要更多信息,这究竟是什么意思。从字面上看,这意味着问题与 Django/Python 无关,而是在 Apache 和浏览器之间,如果它真的无法开始连接并发送请求的 header 。缺少响应需要主要考虑 Django/Python。即使是未配置的 Apache 也会显示一个测试页面,并且可以通过 ip 地址访问,无需有效的 DNS:http;//numeric.ip.address。您可以验证您是否可以在同一域上临时配置一个简单的测试静态站点...
编辑 通过评论中的响应和建议以及在问题中添加格式化日志继续调试。逻辑过程比简历更重要。

关于django - 如何调试从计算机到服务器的连接,服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55188193/

相关文章:

python - 需要有关 Django 开发的 ide 选择的建议

apache - 无法同时使cxf和cxf-client工作

java - Tomcat6 Java Servlet 服务于 mysql 命令?

python - 使用 mod_wsgi 部署 Flask 应用程序

linux - Laravel 权限被拒绝 Centos 7

mysql - 我们如何设置 MariaDB 每天创建一个新的 requests.log 文件?

python - django 导入_导出 |数据未从数据库导出

Django admin : Filter by country. 仅显示非空国家/地区?

python - Django 和 Reportlab 问题

node.js - 在 Centos 7 上配置 Nginx 运行 Nodejs