2010/1/3 Todd Blanchard <[email protected]>:
> Centos 5.3 at slicehost, TG2.1a3, apache2.  I got mod_wsgi installed
> and the simple test wsgi script file works.  Now I'm trying to launch
> my TG2 app using a virtualenv.  I've cloned the wsgi file and run it
> from the command line and had it dump sys.path and I get
>
> /home/tgdev/spacetime/lib/python2.6/site-packages/setuptools-0.6c11-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/pip-0.6.1-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/tg.devtools-2.1a3-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/repoze.who-1.0.18-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/
> repoze.what_quickstart-1.0.3_r6729-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/SQLAlchemy-0.5.6-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/
> sqlalchemy_migrate-0.5.4-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/TurboGears2-2.1a3-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/zope.interface-3.5.2-
> py2.6-linux-x86_64.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Paste-1.7.2-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/
> repoze.who_friendlyform-1.0b3-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/
> repoze.what.plugins.sql-1.0rc3_r6698-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/
> repoze.who.plugins.sa-1.0rc2-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/repoze.what-1.0.8-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/decorator-3.0.0-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/repoze.tm2-1.0a5-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/
> repoze.what_pylons-1.0-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/WebError-0.10.1-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/ToscaWidgets-0.9.8-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/WebFlash-0.1a9-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Genshi-0.5.1-py2.6-
> linux-x86_64.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Pylons-0.9.7-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/
> repoze.who_testutil-1.0rc1-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/transaction-1.0.0-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/simplejson-2.0.9-
> py2.6-linux-x86_64.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Pygments-1.1.1-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Tempita-0.4-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/WebOb-0.9.6.1-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/WebTest-1.1-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Mako-0.2.5-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/nose-0.11.1-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/FormEncode-1.2.2-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/PasteScript-1.7.3-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/PasteDeploy-1.3.3-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/WebHelpers-0.6.4-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Routes-1.10.3-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Beaker-1.5.1-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/tgext.geo-0.6-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/TileCache-2.10-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/mapfish-1.1-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/psycopg2-2.0.13-
> py2.6-linux-x86_64.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/GeoAlchemy-0.1-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/FeatureServer-1.12-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/tgext.admin-0.3.6-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/zope.sqlalchemy-0.4-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Babel-0.9.4-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/tgext.crud-0.3.3-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/sprox-0.6.6-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/geojson-1.0.1-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Shapely-1.0.14-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/tw.forms-0.9.8-
> py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/
> modwsgideploy-0.4.20dev-py2.6.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Cheetah-2.4.1-py2.6-
> linux-x86_64.egg
> /home/tgdev/spacetime/lib/python2.6/site-packages/Markdown-2.0.3-
> py2.6.egg
> /home/tgdev/spacetime/eagle
> /home/tgdev/spacetime/lib/python2.6/site-packages
> /var/www/wsgi-scripts
> /opt/python2.6/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
> /opt/python2.6/lib/python2.6/site-packages/virtualenv-1.4.3-py2.6.egg
> /opt/python2.6/lib/python26.zip
> /opt/python2.6/lib/python2.6
> /opt/python2.6/lib/python2.6/plat-linux2
> /opt/python2.6/lib/python2.6/lib-tk
> /opt/python2.6/lib/python2.6/lib-old
> /opt/python2.6/lib/python2.6/lib-dynload
> /opt/python2.6/lib/python2.6/site-packages
>
> which looks exactly right - virtualenv libs first, default system libs
> last.
>
> My wsgi file looks like:
>
> import os, sys
>
> APP_NAME = 'eagle'
> ENV_PATH = '/home/tgdev/spacetime'
> APP_PATH = ENV_PATH + '/eagle'
> PKG_PATH = ENV_PATH + '/lib/python2.6/site-packages'
>
> prev_sys_path = list(sys.path)
>
> import site
> site.addsitedir(APP_PATH)
> site.addsitedir(PKG_PATH)
> os.environ['PYTHON_EGG_CACHE'] = '/var/tmp/' + APP_NAME + '/python-
> eggs'
>
> new_sys_path = []
> for item in list(sys.path):
>    if item not in prev_sys_path:
>        new_sys_path.append(item)
>        sys.path.remove(item)
> sys.path[:0] = new_sys_path
>
> from paste.deploy import loadapp
>
> application = loadapp('config:' + APP_PATH + '/development.ini')
>
> and my virtual host config in apache looks like:
>
> WSGIPythonHome /opt/python2.6
>
> <VirtualHost *:80>
>
>    ServerName ***********
>    ServerAlias ***************
>    ServerAdmin *************
>
>    <Directory /var/www/static/eagle>
>    Options Indexes FollowSymLinks
>    AllowOverride None
>    Order allow,deny
>    Allow from all
>    </Directory>
>
>    DocumentRoot /var/www/static/eagle
>
>    Alias /robots.txt /var/www/static/eagle/robots.txt
>    Alias /favicon.ico /var/www/static/eagle/favicon.ico
>    Alias /css/ /var/www/static/eagle/css/
>    Alias /images/ /var/www/static/eagle/images/
>    Alias /media/ /var/www/static/eagle/media/
>
>
>    #WSGIDaemonProcess eagle processes=2 threads=15 display-name=%
> {GROUP}
>    #WSGIProcessGroup eagle
>
>    WSGIScriptAlias / /var/www/wsgi-scripts/eagle.wsgi
>
>    <Directory /var/www/wsgi-scripts>
>    Order allow,deny
>    Allow from all
>    </Directory>
>
> </VirtualHost>
>
> What I see in the error_log is
>
> [Sun Jan 03 05:17:54 2010] [error] [client 71.227.129.215] mod_wsgi
> (pid=15568): Target WSGI script '/var/www/wsgi-scripts/eagle.wsgi'
> cannot be loaded as Python module.
> [Sun Jan 03 05:17:54 2010] [error] [client 71.227.129.215] mod_wsgi
> (pid=15568): Exception occurred processing WSGI script '/var/www/wsgi-
> scripts/eagle.wsgi'.
> [Sun Jan 03 05:17:54 2010] [error] [client 71.227.129.215] Traceback
> (most recent call last):
> [Sun Jan 03 05:17:54 2010] [error] [client 71.227.129.215]   File "/
> var/www/wsgi-scripts/eagle.wsgi", line 22, in <module>
> [Sun Jan 03 05:17:54 2010] [error] [client 71.227.129.215]     from
> paste.deploy import loadapp
> [Sun Jan 03 05:17:54 2010] [error] [client 71.227.129.215]
> ImportError: No module named paste.deploy
>
> but I do not get that import error if I run the file from the command
> line.  What gives?

I can only guess that the virtual environment is not readable to the
user that Apache runs as.

In other words, be aware that Apache runs as a special user. That user
must have read/search access on directories and read access to files
in the directories. For directories this must be from '/' all the way
down to where actual Python code files are. Thus, if /home/tgdev has
permissions rwxr-x---, ie. not readable to others, will not be able to
read the code files.

So, check all your directory/file permissions properly.

Graham

--

You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.


Reply via email to