Graham ...

I appreciate the criticism -- I had to build for both mod_python and
mod_wsgi and there was some bleed through.

- Craig -

On Wed, Dec 15, 2010 at 17:11, Graham Dumpleton
<graham.dumple...@gmail.com>wrote:

>
>
> On Wednesday, December 15, 2010 11:10:06 PM UTC+11, Craig Trader wrote:
>
>> Here's how I solved this problem for my own applications.  Note that I use
>> VirtualEnv to ensure that each application gets exactly the Python
>> environment I want it to have.  If you don't use VirtualEnv, it will make
>> the WSGI startup script simpler.  Assume that my application is installed
>> with the following layout:
>>
>> /data/web/foo/ -- base directory for foo (and the root of a VirtualEnv
>> environment)
>>     bin/ -- VirtualEnv scripts, including 'python' symlink
>>     lib/ -- Python libraries, including Django
>>     apache/apache.wsgi -- Apache WSGI startup script
>>     site/foo -- where the Foo site is installed (containing applications
>> like bar, baz, etc.)
>>     site/foo/static -- where static content is stored
>>
>> First, the Apache virtual host configuration:
>>
>> <VirtualHost *:80>
>>   ServerName foo.example.com
>>   ServerAdmin f...@example.com
>>
>>   ServerSignature email
>>
>>   LogLevel debug
>>
>>   WSGIProcessGroup  foo
>>   WSGIDaemonProcess foo processes=2 threads=5 home=/data/web/foo
>> display-name=foo
>>
>>   DocumentRoot /var/www
>>
>>   WSGIScriptAlias / /data/web/foo/apache/django.wsgi
>>   <Directory /data/web/foo/apache>
>>     Order allow,deny
>>     Allow from all
>>   </Directory>
>>
>>   Alias /static/ /data/web/foo/site/foo/static/
>>   <Directory /data/web/foo/site/foo/static/>
>>     SetHandler None
>>
>
> Don't need this SetHandler directive. That was need for mod_python but not
> with mod_wsgi.
>
>
>>     Order allow,deny
>>     Allow from all
>>   </Directory>
>> </VirtualHost>
>>
>> And now the WSGI startup script (most of this is just to make VirtualEnv
>> work):
>>
>> import os, sys, site
>>
>> here = os.path.abspath( os.curdir )
>>
>
> From here:
>
>
>>
>> ALLDIRS = [
>>     os.path.join( here, 'site' ),
>>     os.path.join( here, 'lib', 'python2.6', '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):
>>     if item not in prev_sys_path:
>>         new_sys_path.append(item)
>>         sys.path.remove(item)
>> sys.path[:0] = new_sys_path
>>
>
> to here, should be able to be simplified to:
>
>   activate = os.path.join(here, 'bin', 'activate_this.py')
>   execfile(activate, dict(__file__=activate))
>
>   sys.path.insert(0, os.path.join(here, 'site'))
>
> I no longer object to the activate_this.py script even though it modifies
> sys.prefix. Although technically that could be problematic, hasn't shown
> itself to be in practice.
>
> Graham
>
>
>>
>> os.environ['DJANGO_SETTINGS_MODULE'] = 'foo.settings'
>>
>> import django.core.handlers.wsgi
>> application = django.core.handlers.wsgi.WSGIHandler()
>>
>> In my settings.py file, I have the following:
>>
>> import os, sys
>>
>> SITEDIR = os.path.dirname( os.path.dirname( os.path.abspath( __file__ ) )
>> )
>>
>> MEDIA_ROOT = os.path.join( SITEDIR, 'foo', 'static' )
>> MEDIA_URL = '/static/'
>> ADMIN_MEDIA_PREFIX = '/media/'
>>
>> ROOT_URLCONF = 'foo.urls'
>>
>> TEMPLATE_DIRS = (
>>     os.path.join( SITEDIR, 'foo', 'templates' ),
>> )
>>
>> INSTALLED_APPS = (
>>     'django.contrib.auth',
>>     'django.contrib.contenttypes',
>>     'django.contrib.sessions',
>>     'django.contrib.sites',
>>     'django.contrib.messages',
>>     'django.contrib.admin',
>>     'foo.bar',
>>     'foo.baz',
>> )
>>
>> My urls.py file looks like this:
>>
>> from django.conf import settings
>> from django.conf.urls.defaults import *
>> from django.contrib import admin
>> from django.shortcuts import render_to_response
>>
>> # Uncomment the next two lines to enable the admin:
>> admin.autodiscover()
>>
>> def home( *args, **options ):
>>     return render_to_response( 'index.html' )
>>
>> urlpatterns = patterns( '',
>>     url( r'^$', home, name='site_index' ),
>>         ( r'^admin/', include( admin.site.urls ) ),
>>         ( r'^foo include( 'stackexchange.foo.urls' ) ),
>>         ( r'^bar include( 'stackexchange.bar.urls' ) ),
>>         ( r'^static/(?P<path>.*)$', 'django.views.static.serve',
>>             {'document_root': settings.MEDIA_ROOT } ),
>>  )
>>
>> You only need the 'static' definition for when you're testing using
>> 'runserver'; Apache intercepts all of the /static/ URLs before Django sees
>> them in production.
>>
>> I hope this helps.
>>
>> - Craig -
>>
>> On Wed, Dec 15, 2010 at 03:17, NoviceSortOf <dljons...@gmail.com> wrote:
>>
>>> On Dec 15, 8:08 am, mongoose <darren...@gmail.com> wrote:
>>> > > I'm trying to run projects on the back of it. For examplehttp://
>>> baseurl.com/mongoose/
>>> > > The projects run but the URL don't work properly because they all
>>> > > reference the base url. So for 'About Me' page it points tohttp://
>>> baseurl.com/aboutinsteadofhttp://baseurl.com/mongoose/about
>>> >
>>> > > Is this something i need to change in django or apache? Is what I'm
>>> > > trying to do even possible?
>>>
>>> I wrestled with something like this - as we needed a static homepage
>>> based on a django backend for one site.
>>>
>>> Per my recollection what I did was.
>>>
>>> * Apache httpd.conf required a location match adjustment something
>>> like.
>>>
>>> <LocationMatch "\.(jpg|gif|png|php|html)$">
>>>      SetHandler None
>>> </LocationMatch>
>>>
>>> * My url.py file needed this line
>>>      (r'^$', direct_to_template,{'template': 'index.html'}),
>>>
>>> * As well I landed up having to put the index.html into both
>>>  full static form in the .com root as well in the django template
>>> folder.
>>>  This was neccesary so people could load into the site as
>>>  "www.somewhere.com"
>>>   and while once in the django backend
>>>  "www.somewhere.com/index.html" would load for further
>>>   navigating.
>>>
>>> I hope that makes sense, there was a downside to this in that
>>> our web provider Verio's site management front end does not work
>>> with us resetting the SetHandler in the root. In any case
>>> most management of this site is done on the command line level.
>>>
>>> Not a perfect solution but one that works, I'm open for other
>>> suggestions.
>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Django users" group.
>>> To post to this group, send email to django...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> django-users...@googlegroups.com.
>>>
>>> For more options, visit this group at
>>> http://groups.google.com/group/django-users?hl=en.
>>>
>>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to