From dbf34eb74a0a56d45df473319db35a6349d6c092 Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Wed, 4 Jan 2012 18:57:38 +0000 Subject: [PATCH] Remove unneeded scripts, updated fabric file --- app/manage.py | 2 +- bin/setup-env.sh | 4 - fabfile.py | 277 ++++++++++++++++++----------------------------- 3 files changed, 109 insertions(+), 174 deletions(-) delete mode 100755 bin/setup-env.sh diff --git a/app/manage.py b/app/manage.py index 83d5ca1..701f1ba 100755 --- a/app/manage.py +++ b/app/manage.py @@ -3,7 +3,7 @@ import sys import os.path pwd = os.path.dirname(os.path.abspath(__file__)) -activate_this = os.path.join(pwd,'..', 'env','bin','activate_this.py') +activate_this = os.path.join(pwd,'..', '.env','bin','activate_this.py') try: execfile(activate_this, dict(__file__=activate_this)) except IOError: diff --git a/bin/setup-env.sh b/bin/setup-env.sh deleted file mode 100755 index 1939d8b..0000000 --- a/bin/setup-env.sh +++ /dev/null @@ -1,4 +0,0 @@ -rm -rf ./env -virtualenv --distribute --no-site-packages env -. ./env/bin/activate -pip install -r requirements.txt diff --git a/fabfile.py b/fabfile.py index 2b2e47e..83ec5fd 100644 --- a/fabfile.py +++ b/fabfile.py @@ -2,229 +2,168 @@ from __future__ import with_statement import time import os import os.path -from fabric.api import * -from fabric.contrib.files import * +from fabric.api import cd, run, require, prefix, env, task, local +from fabric.contrib.files import exists from fabric.utils import warn from hashlib import sha1 +env.shell = '/bin/bash -l -c' +env.workers = [] env.repo = 'git://dev.pleaseignore.com/dreddit-auth.git' +@task(alias='prod') def production(): - "Use the production enviroment on Web1" + """Use the production enviroment on Web1""" env.hosts = ['dreddit@web1.pleaseignore.com'] - env.path = '/home/dreddit/apps' - env.user = 'auth' - env.vhost = '/auth' + env.path = '/home/dreddit/apps/dreddit-auth' env.config = 'conf.production' - env.uwsgiconfig = os.path.join(env.path, '..', 'etc', 'uwsgi', 'dreddit-auth.ini') - env.password = sha1('%s-%s' % (env.user, env.vhost)).hexdigest() - + env.uwsgiconfig = os.path.join(env.path, '..', '..', 'etc', 'uwsgi', 'dreddit-auth.ini') env.celeryconf = '-l INFO --settings=%(config)s --pidfile=logs/%%n.pid --logfile=logs/%%n.log -n auth.pleaseignore.com bulk default fastresponse -Q:bulk bulk -Q:fastresponse fastresponse -c 5 -c:bulk 3 -c:fastresponse 3 -B:default --scheduler=djcelery.schedulers.DatabaseScheduler' % env - + +@task def test(): - "Use the test enviroment on Web2" + """Use the test enviroment on Web2""" env.hosts = ['dreddit@web2.pleaseignore.com'] - env.path = '/home/dreddit/apps' - env.user = 'auth' - env.vhost = '/auth' + env.path = '/home/dreddit/apps/dreddit-auth' env.config = 'conf.test' env.uwsgiconfig = os.path.join(env.path, '..', 'etc', 'uwsgi', 'dreddit-auth.ini') - env.password = sha1('%s-%s' % (env.user, env.vhost)).hexdigest() + -def deploy(): - """ - Do a fresh deployment to a new or clean server - """ - setup() - - -def setup(): - """ - Deploy the files to the server and setup virtualenv and a simple - SQlite DB setup - """ +@task +def deploy(tag=None): + """Deploy current HEAD in "master", or a tag is provided""" require('hosts') require('path') - deploy_repo() - + git_update_repo(tag) setup_virtualenv() - - -def push(): - """ - Push the latest revision to the server and update the enviroment - """ - require('hosts') - require('path') - - stop() - update_repo() - setup_virtualenv() - migrate() - start() - - -def setup_virtualenv(): - """ - Generate the virtualenv enviroment - """ - require('path') - - with cd('%(path)s/dreddit-auth/' % env): - run('./bin/setup-env.sh' % env) - - -def setup_db(): - """ - Setup a simple SQlite DB using the default settings - """ - require('path') - - with cd('%(path)s/dreddit-auth/' % env): - run('env/bin/python app/manage.py syncdb --settings=%(config)s --noinput --migrate' % env) - - -def deploy_repo(): - """ - Do the initial repository checkout - """ - require('hosts') - require('path') - - run('mkdir -p %(path)s' % env) - with cd(env.path): - run('git clone %(repo)s' % env) - - with cd('%(path)s/dreddit-auth/' % env): - run('mkdir logs') - - -def update_repo(): - """ - Pulls the latest commits to the repository - """ - require('hosts') - require('path') - - with cd('%(path)s/dreddit-auth/' % env): - run('git pull') - + sync_db() deploy_static() -def reset_repo(): - """ - Does a hard reset on the remote repo - """ - require('hosts') - require('path') +@task +def restart(): + """Restart UWSGI and Celeryd""" + restart_uwsgi() + clear_logs() + restart_celeryd() - with cd('%(path)s/dreddit-auth/' % env): + +@task(alias='update') +def git_update_repo(tag): + """Update the server's repo from master""" + with cd('%(path)s' % env): run('git reset --hard') + run('git fetch --all') + if tag: + run('git checkout %s' % tag) + else: + run('git checkout master') + + +@task(alias='virtualenv') +def setup_virtualenv(): + """Sets up and updates the virtualenv install""" + require('path') + with cd('%(path)s' % env): + if not exists('.env'): + run('virtualenv --no-site-packages .env') + with prefix('source %(path)s/.env/bin/activate' % env): + run('pip install -r requirements.txt') -def migrate(): - """ - Do any South database migrations - """ +@task(alias='dbsync') +def sync_db(): + """Syncs the DB and completes any migrations""" require('hosts') require('path') - with cd('%(path)s/dreddit-auth/' % env): - run('env/bin/python app/manage.py migrate --settings=%(config)s' % env) + with cd('%(path)s' % env): + with prefix('source %(path)s/.env/bin/activate' % env): + #run('app/manage.py syncdb --settings=%(config)s' % env) + update_permissions() + run('app/manage.py migrate --settings=%(config)s' % env) +@task(alias='static') +def deploy_static(): + """Deploys the static files to the defined location""" + with cd('%(path)s' % env): + with prefix('source %(path)s/.env/bin/activate' % env): + run('app/manage.py collectstatic --settings=%(config)s -v0 --noinput' % env) + + +@task +def clear_logs(): + """Clears any old celeryd logs""" + with cd('%(path)s' % env): + run('rm ./logs/*.log') + + +@task +def update_permissions(): + """Updates permissions that syncdb would of missed""" + with cd('%(path)s' % env): + with prefix('source %(path)s/.env/bin/activate' % env): + run('app/manage.py updatepermissions --settings=%(config)s' % env) + + +@task def start_celeryd(): - """ - Start the celeryd server - """ + """Start the celeryd server""" require('hosts') require('path') - with cd('%(path)s/dreddit-auth/' % env): - run('. env/bin/activate; app/manage.py celeryd_multi start %(celeryconf)s' % env) - + clear_logs() + with cd('%(path)s' % env): + with prefix('source %(path)s/.env/bin/activate' % env): + run('app/manage.py celeryd_multi start %(celeryconf)s' % env) +@task def stop_celeryd(): - """ - Stop any running FCGI instance - """ + """Stop the celeryd server""" require('hosts') require('path') require('config') - with cd('%(path)s/dreddit-auth/' % env): - run('. env/bin/activate; app/manage.py celeryd_multi stop %(celeryconf)s' % env) + with cd('%(path)s' % env): + with prefix('source %(path)s/.env/bin/activate' % env): + run('app/manage.py celeryd_multi stop %(celeryconf)s' % env) -def kill_celeryd(): - """ - Kills all Celeryd instances - """ - with cd('%(path)s/dreddit-auth/' % env): - run("ps auxww | grep celeryd | awk '{print $2}' | xargs kill -9") - +@task def restart_celeryd(): - """ - Restart the celery daemon - """ - with cd('%(path)s/dreddit-auth/' % env): - run('. env/bin/activate; app/manage.py celeryd_multi restart %(celeryconf)s' % env) + """Restart the celery daemon""" + with cd('%(path)s' % env): + with prefix('source %(path)s/.env/bin/activate' % env): + run('app/manage.py celeryd_multi restart %(celeryconf)s' % env) + +@task def show_celeryd(): - with cd('%(path)s/dreddit-auth/' % env): - run('. env/bin/activate; app/manage.py celeryd_multi show %(celeryconf)s' % env) - - -def start_uwsgi(): - """ - Start uWSGI - """ - pass + with cd('%(path)s' % env): + with prefix('source %(path)s/.env/bin/activate' % env): + run('app/manage.py celeryd_multi show %(celeryconf)s' % env) +@task def restart_uwsgi(): """ Restart the uWSGI daemon """ run('touch %(uwsgiconfig)s' % env) +###### Local Tasks -def start(): - """ - Start uWSGI and Celery - """ - start_uwsgi() - start_celeryd() +@task +def runserver(port=3333): + with prefix('. .env/bin/activate'): + local('app/manage.py runserver %s' % port, capture=False) + +@task +def test(): + with prefix('. .env/bin/activate'): + local('app/manage.py test --noinput --failfast') -def stop(): - """ - Stop Celery - """ - stop_celeryd() - info('Can\'t stop uWSGI') - -def restart(): - """ - Restart uWSGI and Celery - """ - stop_celeryd() - time.sleep(5) - restart_uwsgi() - start_celeryd() - -def clear_logs(): - with cd('%(path)s/dreddit-auth/' % env): - run('rm ./logs/*.log') - -def deploy_static(): - with cd('%(path)s/dreddit-auth/' % env): - run('./app/manage.py collectstatic --settings=%(config)s -v0 --noinput' % env) - -def update_permissions(): - with cd('%(path)s/dreddit-auth/' % env): - run('./app/manage.py updatepermissions --settings=%(config)s' % env) -