'Criticism' is such a negative sounding word. :-( On Thursday, December 16, 2010 10:59:15 AM UTC+11, Craig Trader wrote: > > 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.d...@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 <dljo...@gmail.com> wrote: >>> >>>> On Dec 15, 8:08 am, mongoose <darr...@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 djan...@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> django-...@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...@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. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.