2

我正在尝试运行 bottle py 但收到此错误:

Traceback (most recent call last):
  File "/home/pi/Desktop/gggg.py", line 176, in <module>
    run(host='somehost', port=81)
  File "/usr/lib/python2.7/dist-packages/bottle.py", line 2426, in run
    server.run(app)
  File "/usr/lib/python2.7/dist-packages/bottle.py", line 2123, in run
    srv = make_server(self.host, self.port, handler, **self.options)
  File "/usr/lib/python2.7/wsgiref/simple_server.py", line 144, in make_server
    server = server_class((host, port), handler_class)
  File "/usr/lib/python2.7/SocketServer.py", line 419, in __init__
    self.server_bind()
  File "/usr/lib/python2.7/wsgiref/simple_server.py", line 48, in server_bind
    HTTPServer.server_bind(self)
  File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bind
    SocketServer.TCPServer.server_bind(self)
  File "/usr/lib/python2.7/SocketServer.py", line 430, in server_bind
    self.socket.bind(self.server_address)
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 13] Permission denied
>>> 

我以“pi”身份登录。以 root 用户身份登录可以解决问题。我的问题是瓶子 py 和 python 需要运行哪些权限(哪些文件夹和哪些权限)?

编辑:

不确定是否重要,但我的 python 文件在桌面目录中。我还将文件夹/子文件夹的权限设置为所有人读写。

4

2 回答 2

3

1) 如果你打算在生产环境中运行它,你不应该使用 Bottle 的内置网络服务器。您应该使用 Apache、nginx 等。来自Bottle 文档

内置的默认服务器基于 wsgiref WSGIServer。这种非线程 HTTP 服务器非常适合开发和早期生产,但当服务器负载增加时可能会成为性能瓶颈。有三种方法可以消除这个瓶颈:

  • 使用多线程或异步的不同服务器。
  • 启动多个服务器进程并使用负载均衡器分散负载。
  • 两者都做。

2) [如您所知,] 您必须是 root 才能绑定到端口 80;没办法。你考虑过使用sudo吗?

sudo /home/pi/Desktop/gggg.py

您可以配置 sudoers 以安全地允许用户“pi”仅执行 gggg.py(或您最终将用于生产的任何网络服务器)。

于 2013-08-09T19:24:44.140 回答
2

感谢@Wooble,我意识到权限错误与端口而不是文件系统有关。

一种可行的解决方法是使用 1024 以上的端口,它可以完美运行并且适合开发。现在使用端口 200:

run(host='someIP', port=2000)

不过,我仍在寻找端口 80 权限错误解决方案。

于 2013-08-09T18:00:38.513 回答