Python Web Server (PWS) v.2.4

Installation and Startup
1. Create a directory on your home computer that will be the equivalent of the public_html directory at school.  For the sake of these instructions, I'll refer to it as webdir, but you can call yours anything you want, like "web_project" or even "public_html".
2. Download this .zip file: pws-24.zip
3a. (for Windows): Unzip the contents of that file into the webdir directory.  Examine that directory to make sure that it now has another subdirectory called ServerTests.  If it doesn't, then start again.
3b. (for Mac and Unix):
-
copy the downloaded .zip file into the webdir directory

- open a Terminal window and cd  to the webdir directory

-
Execute the following command to unzip the files:
unzip pws-24.zip

- make sure that it created the subdirectory called ServerTests. If not, try again to unzip all the .zip files into this webdir directory.

- Execute the following command to set execution permissions for the *.py and *.sh files:
sh permissions.sh
5. Starting the pws server manually from a terminal or cmd window:
Execute the following command:
python -m stuy_server --cgi --bind 127.0.0.1
or
5a: Windows: double-click on the webserver.bat file in the webdir directory.
or
5b. Mac & Unix: execute the sh webserver.sh command
6. Shutting the pws server down: When the webserver starts up, it will create a new window displaying the work that it's doing.  To shut it down, hit Ctrl-C in the web server's window, or just close that window if repeatedly pressing Ctrl-C doesn't work.

Be sure to shut the server down when not in use!
 
 

Usage

1. Once pws is running, you can open a browser and use it to go to address:
http://localhost:8000
...then you should immediately see a webpage telling you that the server is running, and allow you to test it.  If that doesn't work, check the steps 1-5 in the installation instructions to the left.

In particular, for the Mac/Unix, make sure that all Python programs in each of the directories that were downloaded have their execution permissions set.
Directories:  The webdir directory is equivalent to your public_html directory at school. 

To show you the equivalencies in addresses, let's suppose your school account is pbrooks and you have a program called fred.py in your public_html directory.  The URL to address that program would be:

http://lisa.stuy.edu/~pbrooks/fred.py
or
http://moe.stuy.edu/~pbrooks/fred.py

If you put the fred.py file into your webdir directory at home and bring up the pws webserver, you can access that program (but only on your own computer) with the url:

http://localhost:8000/fred.py

If you'd rather put your project files into a directory of their own (say, "my_project"), create a subdirectory of webdir called my_project and also, at school, create a subdirectory of public_html called my_project, and if you've placed your fred.py file into both of these subdirectories, then you can access the one at home:

http://localhost:8000/my_project/fred.py

and the one at school:

http://lisa.stuy.edu/~pbrooks/my_project/fred.py

Using subdirectories of webdir:

If you'd rather put your project files into a directory of their own (say, "my_project"), create a subdirectory of webdir called "my_project" (or some other name) and also, at school, create a subdirectory of public_html called "my_project", and if you've placed your fred.py file into both of these subdirectories, then you can access the one at home:

http://localhost:8000/my_project/fred.py

and the one at school:

http://lisa.stuy.edu/~pbrooks/my_project/fred.py

Important Note - Problem and Workaround:
There's a peculiarity of the PythonWebServer.  When the webserver executes one of your Python programs, that Python program will think that it's connected to the webdir directory, no matter where the Python file is actually located. For instance, if your Python program fred.py is located in the webdir/my_project directory, when fred.py starts executing, it will think it's connected to the webdir directory and not the webdir/my_project directory.

This will be a problem if there are files in the same directory as fred.py, such as harry.csv and when fred.py runs, it will try to open that file with the command:

       f = open("harry.csv", "r")'

This will fail because even though fred.py and harry.csv are both in the same directory, fred.py thinks it's in the webdir directory because of the way the webserver executes fred.py.

Workaround:
You will see a Python file called StuyTools.py in the webdir directory.  Copy StuyTools.py into the same directory as your fred.py file and put the following two lines of code near the top of your fred.py file so that they execute first:
 
import StuyTools
StuyTools.PWS_startup()

This will automatically change the directory that fred.py thinks it's connected to, to the same directory that fred.py is in.