Question -- Running Programming Python Examples

C

chernevik

Here is a newbie question: how do I get the server examples in the
Preview chapter of "Progamming Python" (Lutz) to run? The code is
supposed to be a little webserver on which to run examples, but when I
run it it I get "permission denied". Running it as root gets "address
already in use".

Here is the code (it's example 2.32); comments are from Lutz, not me:

webdir = '.' # where your html files and cgi-bin script directory
live

port = 80 # default http://localhost/, else use http://localhost:xxxx/



import os, sys

from BaseHTTPServer import HTTPServer

from CGIHTTPServer import CGIHTTPRequestHandler



# hack for Windows: os.environ not propogated

[deleted, I'm running linux]
.. . .

os.chdir(webdir) # run in html
root dir

srvraddr = ("", port) # my hostname,
portnumber

srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler)

srvrobj.serve_forever() # run as
perpetual demon


END CODE


My other python scripts run fine.

I'm running linux (debian). I'm not running an webserver (that I know
of anyway).

I've fiddled with adding the subdirectory with the code to the python
path, but this doesn't seem to help either. I'm new to all this, but
I've been able to make the other stuff work, and I can't even find the
beginning of what I'm supposed to research to fix this.

Any help would be greatly appreciated, and thanks for your time and
patience.
 
E

Erik Max Francis

Here is a newbie question: how do I get the server examples in the
Preview chapter of "Progamming Python" (Lutz) to run? The code is
supposed to be a little webserver on which to run examples, but when I
run it it I get "permission denied". Running it as root gets "address
already in use".

The first error is because non-root users cannot bind to ports lower
than 1024. The second error means just what it says: The address is
already in use, so you can't bind to port 80. Something else is already
bound to it; probably you have an HTTP server already running as part of
your default software installation and don't realize it.

Choose another port.
 
G

Gary Herron

Here is a newbie question: how do I get the server examples in the
Preview chapter of "Progamming Python" (Lutz) to run? The code is
supposed to be a little webserver on which to run examples, but when I
run it it I get "permission denied". Running it as root gets "address
already in use".

Here is the code (it's example 2.32); comments are from Lutz, not me:

webdir = '.' # where your html files and cgi-bin script directory
live

port = 80 # default http://localhost/, else use http://localhost:xxxx/
There's the trouble. You need special permission to open any of the
ports up through 1023. As root, you have permission, but apparently
some process already has that port opened, almost certainly a web server
you start up at boot time, probably apache.

So either kill off the web server that has port 80 opened, or better
yet, just change the port to something else. A common choice is port
8080. This does not require superuser permission, and is probably free.
port = 8080

If you do that, then you access the server on port 8080 with url's that
look like this:

http://localhost:8080/what/ever/..., or
http://machine-name:8080/what/ever/...,

Gary Herron
import os, sys

from BaseHTTPServer import HTTPServer

from CGIHTTPServer import CGIHTTPRequestHandler



# hack for Windows: os.environ not propogated

[deleted, I'm running linux]
. . .

os.chdir(webdir) # run in html
root dir

srvraddr = ("", port) # my hostname,
portnumber

srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler)

srvrobj.serve_forever() # run as
perpetual demon


END CODE


My other python scripts run fine.

I'm running linux (debian). I'm not running an webserver (that I know
of anyway).

I've fiddled with adding the subdirectory with the code to the python
path, but this doesn't seem to help either. I'm new to all this, but
I've been able to make the other stuff work, and I can't even find the
beginning of what I'm supposed to research to fix this.

Any help would be greatly appreciated, and thanks for your time and
patience.
 
C

chernevik

That fixed it, and Gary's item on pointing my browser to the proper
port answered the next question percolating in my mind. It now runs
as advertised.

Thanks to you both!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,020
Latest member
GenesisGai

Latest Threads

Top