6

我正在尝试运行此处给出的基于 Python 的简单 Web 服务器。

我收到以下错误消息:

Traceback (most recent call last):
  File "webserver.py", line 63, in <module>
    main()
  File "webserver.py", line 55, in main
    server = HTTPServer(('', 80), MyHandler)
  File "/usr/lib/python2.5/SocketServer.py", line 330, in __init__
    self.server_bind()
  File "/usr/lib/python2.5/BaseHTTPServer.py", line 101, in server_bind
    SocketServer.TCPServer.server_bind(self)
  File "/usr/lib/python2.5/SocketServer.py", line 341, in server_bind
    self.socket.bind(self.server_address)
  File "<string>", line 1, in bind
socket.error: (13, 'Permission denied')

据我了解,我的防火墙阻止访问套接字?我对吗?如果是这种情况,我该如何更改权限?更改这些权限是否危险?

4

2 回答 2

11

如果你想绑定到<1024的端口号,你需要是root。这不是防火墙问题;它是由操作系统强制执行的。这是来自 w3.org 的参考,以及特定于 Unix的常见问题解答条目。

于 2010-02-23T22:51:18.807 回答
2

如果要在 1024 以下的端口上运行,则需要 root。您可以通过切换到另一个用户来打开套接字并放弃对程序其余部分的 root 权限。

大多数情况下,在端口 80 上运行真正的网络服务器(比如 nginx)并将请求代理到您可以在高编号端口(例如 8080)上运行的程序更容易。这样,您就不必担心在进程以 root 身份运行期间搞砸了,因为它永远不会以 root 身份运行。

如果只是为了测试,在 8080 端口上运行服务器并连接到http://localhost:8080/

于 2010-02-24T00:31:30.947 回答