django教程返回'ERR_EMPTY_RESPONSE'

时间:2015-08-09 05:23:47

标签: django ubuntu-10.04

我在虚拟环境中关注django教程:版本1.8,Ubuntu 10.04,python 3.4。我似乎在我的Ubuntu服务器上创建了一个django项目(yatest)就好了,我启动了开发服务器:

(v1)cj@drop1:~/www/yatest$ python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
August 09, 2015 - 04:37:33
Django version 1.8.3, using settings 'yatest.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

但是当我浏览http://myserver:8000时,我得到的回复是'ERR_EMPTY_RESPONSE'。

在创建应用程序之前,这是本教程的第一部分。在本教程的早期阶段,它没有提到我可以检查的任何错误日志。我的telnet客户端没有说任何崩溃,'ctl-c'将关闭服务器进程而没有任何投诉。

使用netstat -lntp我验证没有其他进程正在使用端口8000.我没有安装Apache。我确实安装了gunicorn和nginx但是在教程中它们都已停止并且尚未使用。

我对linux很新;我可以使用一些帮助找到错误日志或其他调试工具来解决这个问题。我不怀疑我错过了一些基本的操作系统设置或启用TCP访问的东西等。

由于 克拉克

3 个答案:

答案 0 :(得分:3)

发现我的错误。在专用服务器上启动dev django服务器时,必须在命令中包含专用服务器的地址。在与浏览器相同的计算机上启动dev服务器时,不需要这样做。而不是

$python manage.py runserver
你必须跑步 $python manage.py runserver <server ip>:8000

所以这是我在堆栈交换上的不光彩的开始。你什么也没看到! :P

答案 1 :(得分:0)

如果您不想麻烦确定服务器IP(即使用容器时),则可以收听0.0.0.0:8000

import UIKit

class ChooseProductViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

var productName: String? = ""
var workModel: ActualValues?
var closureBlock2: (() -> Void)?
@IBOutlet weak var checkButton: UIButton!


let productList : [String] = ["Almond 20g",
                              "Almond 40g",
                              "Baharat Spice Mix 2g",
                              "Baharat Spice Mix 4g",
]

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return productList.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let myCell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
    myCell.textLabel?.text = productList[indexPath.row]
return myCell
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
}



@IBAction func checkButton(_ sender: UIButton) {
    workModel?.product = productName
    closureBlock2?()
    self.dismiss(animated: true, completion: nil)
}



func configureProduct(model: ActualValues) {
    workModel = model
}


}

答案 2 :(得分:0)

如果您在虚拟环境中本地运行,则需要指定端口和地址:

python manage.py runserver 127.0.0.1:8000

对于容器,最简单的方法是监听所有地址:

python manage.py runserver 0.0.0.0:8000

对于在docker环境中使用PyCharm的任何人来说,值得一提的是PyCharm将覆盖您的docker-compose配置以更改runserver命令以绑定到Host选项中指定的端口在您的Run/Debug Configurations窗口中。

如果要使用调试器等,请确保将主机设置为0.0.0.0,并将端口设置为8000