2013-08-09 3 views
2

나는 병 평을 실행하려고하지만이 오류가 점점 오전 :오류 : [errno 13] Permission denied - 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 
>>> 

나는 "파이"로 로그인하고 있습니다. 루트 사용자로 로그인하면 문제가 해결됩니다. 내 질문에 병 py 및 python (어떤 폴더 및 어떤 사용 권한을) 실행할 필요가 사용 권한은 무엇입니까?

편집 :

이 중요하지만 내 파이썬 파일을 바탕 화면 디렉토리에있는 경우 확실하지. 또한 폴더/하위 폴더에 대한 쓰기 권한을 모두 읽기로 설정합니다.

+1

관련 항목 : http://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-privileged-ports-1024-on-l – geoffspear

+0

Doesn 정말 관련이없는 것처럼 보입니다. 개발 전용 시스템이 아니므로 필요한 권한을 변경하고 싶습니다. – DominicM

+0

1024보다 작은 포트를 사용하고자하며 루트가되고 싶지 않습니다. 나랑 관련된 것 같아. * 어깨를 으 * * – geoffspear

답변

3

1) 프로덕션 환경에서이 프로그램을 실행하려는 경우 Bottle의 내장 웹 서버를 사용하지 않아야합니다. 당신은 Bottle docs에서 아파치, Nginx에 등을 사용한다 :

The built-in default server is based on wsgiref WSGIServer. This non-threading HTTP server is perfectly fine for development and early production, but may become a performance bottleneck when server load increases. There are three ways to eliminate this bottleneck:

  • Use a different server that is either multi-threaded or asynchronous.
  • Start multiple server processes and spread the load with a load-balancer.
  • Do both.

2) 아시다시피] 당신은 포트 80에 바인딩 루트를해야; 그럴리 없어. sudo을 사용해 보셨습니까?

sudo /home/pi/Desktop/gggg.py 

당신은 안전하게 (당신이 생산을 위해 사용하게 될 겁니다이든 웹 서버)에만 gggg.py을 실행하는 사용자 "파이"를 허용의 sudoers를 구성 할 수 있습니다.

+0

프로덕션 사용은 단일 사용자가 될 것이므로 아파치를 사용하는 것이 가치 있다고 생각하지 않습니다. 나중에 Bottle에서 WebPy와 같은 것으로 이동할 수도 있습니다. Sudo는 좋은 해결책처럼 들리지만, 그 생각은하지 못했습니다.하지만 cron 작업으로 실행될 것이기 때문에 저에게 화를 내지 마십시오. 1024 개가 넘는 개발 포트에 대해서는 괜찮습니다. 감사합니다. – DominicM

+0

친절하고 기꺼이 도와주세요. 예, 앱이 단일 사용자이고 볼륨이 낮을 경우 (전체 웹 서버의 다른 기능은 필요하지 않음) 계획이 훌륭하게 들립니다. 건배. –

2

@Wooble 덕분에 권한 오류는 파일 시스템이 아닌 포트와 관련이 있다는 것을 깨달았습니다.

해결 방법은 1024 이상 포트를 사용하는 것입니다.이 포트는 완벽하게 작동하며 개발에 적합합니다. 현재 포트 200 사용 :

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

포트 80 권한 오류 솔루션을 찾고 있습니다.

관련 문제