From 5fb584c0d51860d952e5e13169a1d14b5bd25ef7 Mon Sep 17 00:00:00 2001 From: Sanj Date: Wed, 29 Jun 2011 19:55:47 +0530 Subject: [PATCH] inital project layout --- README | 21 +++++++++++++++++++++ fabfile.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 3 +++ wsgi/django.wsgi | 27 +++++++++++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 README create mode 100644 fabfile.py create mode 100644 requirements.txt create mode 100644 wsgi/django.wsgi diff --git a/README b/README new file mode 100644 index 0000000..ac381f0 --- /dev/null +++ b/README @@ -0,0 +1,21 @@ +campchat + +Get: + bzr branch PUBLIC_URL campchat + cd campchat + virtualenv . + pip -E . install -r requirements.txt + +Develop: + create campchat/local_settings.py + + . bin/activate + cd campchat + python manage.py shell + + python manage.py runserver + +Deploy: + create campchat/local_settings.py + + create /etc/apache2/sites-availavle/sitename.conf diff --git a/fabfile.py b/fabfile.py new file mode 100644 index 0000000..27fb031 --- /dev/null +++ b/fabfile.py @@ -0,0 +1,46 @@ +#this is a fabfile, use it with fab from http://fabfile.org/ +# +# initial setup: +# fab production setup +# +# deploy changes: +# fab production deploy +# + +from os.path import join +from fabric.api import run, local, sudo, put, env + +env.project_name = 'campchat' + +def production(): + env.hosts = ['%(project_name)s@camp.r-w-x.org'%env, ] + env.project_root = '/srv/(project_name)]s'%env + +def bzr_push(): + local('bzr push bzr+ssh://%(host)s%(project_root)s'%env) + +def bzr_update(): + run('cd %(project_root)s;bzr update'%env) + +def virtual_run(cmd, *a, **kw): + cmd = 'cd %s; source bin/activate; %s' % (env.project_root, cmd) + run(cmd, *a, **kw) + +def update_requirements(): + run('pip -E %(project_root)s install -r %(project_root)s/requirements.txt'%env) + +def setup(): + """ + Setup a fresh virtualenv + """ + local('bzr push --use-existing-dir bzr+ssh://%(host)s%(project_root)s'%env) + run('cd %(project_root)s; test -e .bzr/checkout || bzr checkout'%env) + run('virtualenv %(project_root)s'%env) + put(join('settings', '%(host)s.py'%env), join(env.project_root, env.project_name, 'local_settings.py')) + update_requirements() + +def deploy(): + bzr_push() + bzr_update() + virtual_run('python %(project_name)s/manage.py syncdb;python %(project_name)s/manage.py migrate'%env) + run('touch %(project_root)s/wsgi/django.wsgi'%env) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..b139f49 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +-e svn+http://code.djangoproject.com/svn/django/branches/releases/1.1.X/#egg=django +-e bzr+http://code.0xdb.org/python-oxdjango/#egg=python-oxdjango +South diff --git a/wsgi/django.wsgi b/wsgi/django.wsgi new file mode 100644 index 0000000..ef31241 --- /dev/null +++ b/wsgi/django.wsgi @@ -0,0 +1,27 @@ +# django.wsgi for campchat +import os +import sys +import site + +project_module = 'campchat' + +root_dir = os.path.normpath(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) + +#using virtualenv's activate_this.py to reorder sys.path +activate_this = os.path.join(root_dir, 'bin', 'activate_this.py') +execfile(activate_this, dict(__file__=activate_this)) + +sys.path.append(root_dir) +sys.path.append(os.path.join(root_dir, project_module)) + +#reload if this django.wsgi gets touched +from oxdjango import monitor +monitor.start(interval=1.0) + +monitor.track(os.path.abspath(os.path.dirname(__file__))) + +os.environ['DJANGO_SETTINGS_MODULE'] = project_module + '.settings' + +import django.core.handlers.wsgi + +application = django.core.handlers.wsgi.WSGIHandler()