[Medusa-dev] help getting started

douglas savitsky dsavitsk at mail.e-coli.net
Fri Dec 20 17:55:42 EST 2002


Hi all, 

These are very newbie questions on getting up and running with medusa.  If people can help me get a foothold, I will be happy to write up a "getting started with medusa" document to post somewhere.  

In general, I am trying to run 2 websites www.a.com and www.b.com on a single server (on FreeBSD 4.7 fwiw), but they should stay invisible to each other.  a.com should be rooted at /usr/www/a and b.com in /usr/www/b.  I would also like to use a directory for each for scripts (/usr/www/a/bin and /usr/www/b/bin most likely.)

Here is where I am starting as far as an edit of the "start_medusa.py" script:

import os
import sys
import asyncore

from medusa import http_server
from medusa import monitor
from medusa import filesys
from medusa import default_handler
from medusa import status_handler
from medusa import resolver
from medusa import logger


HOSTNAME1 = 'www.a.com'
HOSTNAME2 = 'www.b.com'
IP_ADDRESS  = ''
PUBLISHING_ROOT1 = '/home/www/a'
PUBLISHING_ROOT2 = '/home/www/b'
HTTP_PORT = 80
MONITOR_PORT = 9999

rs = resolver.caching_resolver('127.0.0.1')
lg = logger.syslog_logger('/dev/log')
lg = status_handler.logger_for_status(lg)
fsa = filesys.os_filesystem(PUBLISHING_ROOT1)
fsb = filesys.os_filesystem(PUBLISHING_ROOT2)

dha = default_handler.default_handler(fsa)
hsa = http_server.http_server(IP_ADDRESS, HTTP_PORT, rs, lg)
hsa.install_handler(dha)

dhb = default_handler.default_handler(fsb)
hsb = http_server.http_server(IP_ADDRESS, HTTP_PORT, rs, lg)
hsb.install_handler(dhb)

if os.name == 'posix':
    from medusa import unix_user_handler
    uh = unix_user_handler.unix_user_handler('public_html')
    hsa.install_handler(uh)

ms = monitor.secure_monitor_server('password', '', MONITOR_PORT)

status_objects = [hsa, hsb, ms, rs, lg]

sh = status_handler.status_extension(status_objects)
hs.install_handler(sh)

if os.name == 'posix':
    if hasattr (os, 'seteuid'):
        import pwd
        [uid, gid] = pwd.getpwnam ('nobody')[2:4]
        os.setegid(gid)
        os.seteuid(uid)

asyncore.loop()

The things that I know are totally wrong are that there is no association from HOSTNAME* to PUBLISHING_ROOT* (and maybe more to the point, is this the proper way to set up 2 distinct domain names), and I don't know how to start adding a scripts directory, or indeed how to structure scripts (that is, can they simply return a string, or is there more to it).

I guess there are 3 other questions, 
1. how does one allow directory browsing?  this seems to not happen by default. Is it simply adding another handler?

2. is there support for server side includes, or will i need to make everything a script to append some generic headers,

and 3. are there problems with blocking during script execution, and are threads the proper way to solve this if it is a problem.

Thanks for any help to this long and not very interesting list of questions.

-doug



More information about the Medusa-dev mailing list