Thank you Graham for your reply. You are definitely right about the permissions. Apache User and Group directives are both set to 'apache'. My wsgi (django) application is in the /home/intrack which is the 'intrack' user.
I added the WSGIDaemonProcess directive: # WSGIDaemonProcess user=intrack group=intrack python-path=/home/intrack/ intrack_pythonenv/lib/python2.5/site-packages processes=2 threads=25 # WSGIScriptAlias / /var/www/wsgi_scripts/InTrack.wsgi That still gave me a same error "ImportError: No module named django.core.handlers.wsgi" Question: who is the .wsgi script ran by? Apache special user? or the one defined on WSGIDaemonProcess (in my case 'intrack' user)? Also, am I on the right track here using WSGIDaemonProcess to set the user I wish to run the application as? (I have fully tested the django application using the 'intrack' user. By the way, /home/intrack has the django app and the python virtual environment.) I started the httpd service as root by the way. Is perhaps the WSGIDaemonProcess not using the intrack user to run the python process? -Alen On Apr 15, 12:35 pm, Graham Dumpleton <graham.dumple...@gmail.com> wrote: > 2009/4/15 Alen Ribic <alen.ri...@gmail.com>: > > > > > I've seen a few posts related to Django, virtualenv and mod_wsgi > > however still can't solve my problem. > > > I keep getting "ImportError: No module named > > django.core.handlers.wsgi" in my apache error log no matter what I > > try. > > Read: > > http://code.google.com/p/modwsgi/wiki/ApplicationIssues#Access_Rights... > > Apache runs as a special user . If you are using embedded mode, or > daemon mode but haven't set 'user' option to be your account, then may > not be able to read directories/files if permissions on them aren't > correct. > > Try your command line test, but become the user that Apache runs as > first. If that fails you know this is the problem. > > In your command line test from your account, also do: > > import django > print django.__file__ > > Ensure that that is the version you want used. Then check that all the > files readable to others and that directories readable and searchable > to others. For directories, this includes directories back up the > hierarchy to root of file system. > > Graham > > > > > Here is the wsgi script: > > > #### intrack.wsgi ############################################ > > import os, sys, site > > > import logging > > > #create logger > > logger = logging.getLogger("intrack_wsgi") > > > logger.setLevel(logging.DEBUG) > > > fh = logging.FileHandler("/tmp/InTrackWSGI.log") > > fh.setLevel(logging.DEBUG) > > > formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s > > - %(message)s") > > > fh.setFormatter(formatter) > > logger.addHandler(fh) > > > sys.path.append('/home/intrack/intrack_pythonenv/projects') > > sys.path.append('/home/intrack/intrack_pythonenv/projects/InTrack') > > os.environ['DJANGO_SETTINGS_MODULE'] = 'InTrack.settings' > > > ALLDIRS = ['/home/intrack/intrack_pythonenv/lib/python2.5/site- > > packages'] > > > # Remember original sys.path. > > prev_sys_path = list(sys.path) > > > # Add each new site-packages directory. > > for directory in ALLDIRS: > > site.addsitedir(directory) > > > # Reorder sys.path so new directories at the front. > > new_sys_path = [] > > for item in list(sys.path): > > #logger.debug("sys.path item: %s" % item) > > if item not in prev_sys_path: > > new_sys_path.append(item) > > sys.path.remove(item) > > sys.path[:0] = new_sys_path > > > logger.debug(sys.path) > > logger.debug("exec_prefix: %s" % sys.exec_prefix) > > logger.debug("version: %s" % sys.version) > > > import django.core.handlers.wsgi > > > application = django.core.handlers.wsgi.WSGIHandler() > > > #### end - intrack.wsgi ############################################ > > > #### apache wsgi.conf > > ################################################# > > WSGIScriptAlias / /var/www/wsgi_scripts/InTrack.wsgi > > #### end - apache wsgi.conf > > ############################################ > > > #### apache error log ############################################ > > [Wed Apr 15 12:04:29 2009] [error] [client 10.10.0.47] Traceback (most > > recent call last): > > [Wed Apr 15 12:04:29 2009] [error] [client 10.10.0.47] File "/var/ > > www/wsgi_scripts/InTrack.wsgi", line 44, in <module> > > [Wed Apr 15 12:04:29 2009] [error] [client 10.10.0.47] import > > django.core.handlers.wsgi > > [Wed Apr 15 12:04:29 2009] [error] [client 10.10.0.47] ImportError: No > > module named django.core.handlers.wsgi > > [Wed Apr 15 12:04:32 2009] [error] [client 10.10.0.47] mod_wsgi > > (pid=3610): Target WSGI script '/var/www/wsgi_scripts/InTrack.wsgi' > > cannot be loaded as Python module. > > [Wed Apr 15 12:04:32 2009] [error] [client 10.10.0.47] mod_wsgi > > (pid=3610): Exception occurred processing WSGI script '/var/www/ > > wsgi_scripts/InTrack.wsgi'. > > [Wed Apr 15 12:04:32 2009] [error] [client 10.10.0.47] Traceback (most > > recent call last): > > [Wed Apr 15 12:04:32 2009] [error] [client 10.10.0.47] File "/var/ > > www/wsgi_scripts/InTrack.wsgi", line 44, in <module> > > [Wed Apr 15 12:04:32 2009] [error] [client 10.10.0.47] import > > django.core.handlers.wsgi > > [Wed Apr 15 12:04:32 2009] [error] [client 10.10.0.47] ImportError: No > > module named django.core.handlers.wsgi > > #### end - apache error log > > ############################################ > > > #### wsgi script log ############################################ > > 2009-04-15 12:14:13,938 - intrack_wsgi - DEBUG - ['/home/intrack/ > > intrack_pythonenv/lib/python2.5/site-packages', '/usr/local/lib/ > > python25.zip', '/usr/local/lib/python2.5', '/usr/local/lib/python2.5/ > > plat-linux2', '/usr/local/lib/python2.5/lib-tk', '/usr/local/lib/ > > python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/ > > home/intrack/intrack_pythonenv/projects', '/home/intrack/ > > intrack_pythonenv/projects/InTrack', '/home/intrack/intrack_pythonenv/ > > projects', '/home/intrack/intrack_pythonenv/projects/InTrack', '/home/ > > intrack/intrack_pythonenv/lib/python2.5/site-packages'] > > 2009-04-15 12:14:13,939 - intrack_wsgi - DEBUG - exec_prefix: /usr/ > > local > > 2009-04-15 12:14:13,939 - intrack_wsgi - DEBUG - version: 2.5.4 > > (r254:67916, Apr 14 2009, 15:48:34) > > [GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] > > #### end - wsgi script log > > ############################################ > > > I tried this, from the command shell, running the /usr/local/bin/ > > python (which is the version of python that the wsgi module is running > > as per the log above '/usr/local') and then I manually set the > > sys.path to: > > ['/home/intrack/intrack_pythonenv/lib/python2.5/site-packages', '/usr/ > > local/lib/python25.zip', '/usr/local/lib/python2.5', '/usr/local/lib/ > > python2.5/plat-linux2', '/usr/local/lib/python2.5/lib-tk', '/usr/local/ > > lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', > > '/home/intrack/intrack_pythonenv/projects', '/home/intrack/ > > intrack_pythonenv/projects/InTrack', '/home/intrack/intrack_pythonenv/ > > projects', '/home/intrack/intrack_pythonenv/projects/InTrack', '/home/ > > intrack/intrack_pythonenv/lib/python2.5/site-packages'] > > Exactly as what the log says in the wsgi script that it has the > > sys.path set to and guess what? The "import django.core.handlers.wsgi" > > works 100%. > > > So why is it that when wsgi module runs in apache that it doesn't > > pickup the django.* when whats in the sys.path works correctly if ran > > manually from interpreter? > > > I would gladly appreciate if someone could shed some light on this. > > > Regards, > > -Alen > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "modwsgi" group. To post to this group, send email to modwsgi@googlegroups.com To unsubscribe from this group, send email to modwsgi+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/modwsgi?hl=en -~----------~----~----~----~------~----~------~--~---