2011-11-13 9 views
6

मैं Web.py के साथ एक वेबसाइट बनाने की कोशिश कर रहा हूं लेकिन यह मुझे पोर्ट 80 पर सॉकेट बनाने की अनुमति नहीं दे रहा है लेकिन यह हर दूसरे बंदरगाह पर काम करता है।क्यों वेब.py मुझे पोर्ट 80 पर सर्वर चलाने की अनुमति नहीं दे रहा है?

मेरे पास पोर्ट अग्रेषित है और यह सब समस्या नहीं है।

python main.py 80 

लेकिन मैं त्रुटि मिलती है जब मैं इस कार्य करें:

http://0.0.0.0:80/ 
Traceback (most recent call last): 
    File "main.py", line 43, in <module> 
    app.run() 
    File "/usr/local/lib/python2.7/dist-packages/web/application.py", line 311, in run 
    return wsgi.runwsgi(self.wsgifunc(*middleware)) 
    File "/usr/local/lib/python2.7/dist-packages/web/wsgi.py", line 54, in runwsgi 
    return httpserver.runsimple(func, validip(listget(sys.argv, 1, ''))) 
    File "/usr/local/lib/python2.7/dist-packages/web/httpserver.py", line 148, in runsimple 
    server.start() 
    File "/usr/local/lib/python2.7/dist-packages/web/wsgiserver/__init__.py", line 1753, in start 
    raise socket.error(msg) 
socket.error: No socket could be created 

मेरी कोड अब तक है:

import MySQLdb 
import web 
import hashlib as h 


urls = (

'/', "index", "/register/?", "register", "/login/?", "login", "/thankyou/?", "thankyou" 

) 

app = web.application(urls, globals()) 
render = web.template.render("templates/") 
db = web.database (dbn="mysql", user="root", pw="461408", db="realmd") 

class index(): 
    def GET(self): 
     return render.index() 
class register(): 
    def GET(self): 
     return render.register() 
    def POST(self): 
     i = web.input() 
     user = h.sha1(i.username).hexdigest() 
     pw = h.sha1(i.password).hexdigest() 

     n = db.insert("account", username=user, password=pw) 




if __name__ == '__main__': 
    app.run() 
कर सकते हैं

कोई मदद कृपया?

+2

आप अन्य सेवा पोर्ट 80 पर सुन रहा है? अपाचे की तरह? – Will

+0

"... यह हर दूसरे बंदरगाह पर काम करता है।" वास्तव में? –

+4

क्या आपने पोर्ट 81 की कोशिश की है? शायद एक अनुमति त्रुटि। लिनक्स पर (कम से कम), आपको उस तरह के कम बंदरगाह पर सुनने के लिए रूट होना चाहिए। (मुझे लगता है)। –

उत्तर

12

आपके पास पोर्ट 80 पर कुछ और काम कर रहा है। इसे जांचने के लिए netstat -ln | grep 80 कमांड को आज़माएं।

वैकल्पिक रूप से, आप telnet localhost 80 आज़मा सकते हैं, और यदि कनेक्शन अस्वीकार कर दिया गया है तो उस बंदरगाह का उपयोग करने के लिए स्पष्ट होना चाहिए।

4

ब्राउज़र में 127.0.0.1 पर जाएं। पोर्ट 80 का उपयोग कर पहले से ही एक प्रक्रिया है, और उस बंदरगाह का उपयोग http के लिए किया जाना चाहिए, इसलिए यह देखने का सबसे आसान तरीका है कि इसका उपयोग क्या हो रहा है।

0

मैं अपने रास्पबेरीपी पर एक ही समस्या में भाग गया। ठीक करने के लिए मैंने आदेश से पहले सूडो को जोड़ा। प्रयास करें: sudo अजगर main.py 80

+1

साइट पर आपका स्वागत है, एडी। आपका उत्तर डुप्लिकेट करता है जो पहले से ही अनुमतियों के संबंध में लिखा गया है, हालांकि ... आपके द्वारा प्रदत्त सूडो वाक्यविन्यास का अर्थ है 'जैसे आप रूट थे'। रास्पियन पर –

6

मैं सफलतापूर्वक बंदरगाह 80

sudo python index.py 80 

में इस आदेश का उपयोग करके सेवा को प्रारंभ लेकिन जब मैं शॉर्टकट कुंजी (नियंत्रण + स) का उपयोग सेवा बंद करने के लिए, वहाँ होगा एक त्रुटि हो

^CTraceback (most recent call last): 
    File "application.py", line 206, in <module> 
    app.run() 
    File "/Library/Python/2.7/site-packages/web.py-0.37-py2.7.egg/web/application.py", line 313, in run 
    return wsgi.runwsgi(self.wsgifunc(*middleware)) 
    File "/Library/Python/2.7/site-packages/web.py-0.37-py2.7.egg/web/wsgi.py", line 54, in runwsgi 
    return httpserver.runsimple(func, validip(listget(sys.argv, 1, ''))) 
    File "/Library/Python/2.7/site-packages/web.py-0.37-py2.7.egg/web/httpserver.py", line 159, in runsimple 
    server.stop() 
    File "/Library/Python/2.7/site-packages/web.py-0.37-py2.7.egg/web/wsgiserver/__init__.py", line 1932, in stop 
    self.requests.stop(self.shutdown_timeout) 
    File "/Library/Python/2.7/site-packages/web.py-0.37-py2.7.egg/web/wsgiserver/__init__.py", line 1471, in stop 
    worker.join(remaining_time) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 680, in join 
    self.__block.release() 
thread.error: release unlocked lock 
^C^CException KeyboardInterrupt in <module 'threading' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.pyc'> ignored 

जब ऐसा होता है, मैं सभी अजगर प्रक्रियाओं को बंद ...

killall -9 python 

यह ऊपर की समस्याओं को हल कर सकते हैं, लेकिन नहीं

+0

या "सुडो मारॉल -9 पायथन" ... – 576i

0

सिफारिश यह सच है कि आप की कोशिश कर रहे हो सकता है एक अनधिकृत उपयोगकर्ता के रूप में web.py लॉन्च करें?

कोशिश:

sudo python ./bin/blah.py