X-Git-Url: https://git.mdrn.pl/fnpdjango.git/blobdiff_plain/c4ec253cd69546987dc20dec4c9be9e3867986f2..e3e64345fd5d77b43dd4067a1d7ae161d34f822d:/fnpdjango/deploy/__init__.py?ds=sidebyside diff --git a/fnpdjango/deploy/__init__.py b/fnpdjango/deploy/__init__.py index 9c7d762..fb093f8 100644 --- a/fnpdjango/deploy/__init__.py +++ b/fnpdjango/deploy/__init__.py @@ -12,8 +12,9 @@ Then set up some env properties: services: list of tasks to run after deployment """ -from fabric.api import * from os.path import abspath, dirname, exists, join +from django.utils.crypto import get_random_string +from fabric.api import * from fabric.contrib import files from fabric.tasks import Task, execute @@ -31,8 +32,8 @@ def setup(): run('mkdir -p %(app_path)s' % env, pty=True) run('%(virtualenv)s %(app_path)s/ve' % env, pty=True) - run('mkdir -p %(app_path)s/releases %(app_path)s/packages' % env, pty=True) - run('cd %(app_path)s/releases; ln -s . current; ln -s . previous' % env, pty=True) + run('mkdir -p %(app_path)s/releases %(app_path)s/packages %(app_path)s/log' % env, pty=True) + run('cd %(app_path)s/releases; ln -sfT . current; ln -sfT . previous' % env, pty=True) upload_samples() print "Fill out db details in localsettings.py and run deploy." @@ -107,8 +108,7 @@ class DebianGunicorn(Task): def run(self): print '>>> restart webserver using gunicorn-debian' - with path('/sbin'): - sudo('gunicorn-debian restart %s' % self.site_name, shell=False) + sudo('gunicorn-debian restart %s' % self.name, shell=False) class Apache(Task): def run(self): @@ -123,15 +123,14 @@ class Supervisord(Task): def run(self): print '>>> supervisord: restart %s' % self.name - with path('/sbin'): - sudo('supervisorctl restart %s' % self.name, shell=False) + sudo('supervisorctl restart %s' % self.name, shell=False) def check_setup(): require('app_path') try: run('[ -e %(app_path)s/ve ]' % env) except SystemExit: - print "Environment isn't ready. Run fab deploy.setup first." + print "Environment isn't ready. Run `fab setup` first." raise def upload_samples(): @@ -145,8 +144,8 @@ def upload_localsettings_sample(): require('app_path', 'project_name') template = '%(project_name)s/localsettings.py.template' if not exists(template): - template = join(dirname(abspath(__file__)), 'localsettings.py.template') - env.secret_key = '' # sth random + template = join(dirname(abspath(__file__)), 'templates/localsettings.py.template') + env.secret_key = get_random_string(50) files.upload_template(template, '%(app_path)s/localsettings.py.sample' % env, env) def upload_nginx_sample(): @@ -155,7 +154,7 @@ def upload_nginx_sample(): require('app_path', 'project_name') template = '%(project_name)s/nginx.template' if not exists(template): - template = join(dirname(abspath(__file__)), 'nginx.template') + template = join(dirname(abspath(__file__)), 'templates/nginx.template') files.upload_template(template, '%(app_path)s/nginx.sample' % env, env) def upload_gunicorn_sample(): @@ -164,7 +163,7 @@ def upload_gunicorn_sample(): require('app_path', 'project_name') template = '%(project_name)s/gunicorn.template' if not exists(template): - template = join(dirname(abspath(__file__)), 'gunicorn.template') + template = join(dirname(abspath(__file__)), 'templates/gunicorn.template') files.upload_template(template, '%(app_path)s/gunicorn.sample' % env, env) def upload_tar_from_git(): @@ -201,7 +200,7 @@ def symlink_current_release(): print '>>> symlink current release' require('release', provided_by=[deploy]) require('app_path') - with cd(env.path): + with cd(env.app_path): run('rm releases/previous; mv releases/current releases/previous') run('ln -s %(release)s releases/current' % env) @@ -209,7 +208,7 @@ def migrate(): "Update the database" print '>>> migrate' require('app_path', 'project_name') - with cd('%(app_path)s/releases/current/%(project_name)s' % env): + with cd('%(app_path)s/releases/current' % env): run('%(app_path)s/ve/bin/python manage.py syncdb --noinput' % env, pty=True) run('%(app_path)s/ve/bin/python manage.py migrate' % env, pty=True) @@ -217,5 +216,5 @@ def collectstatic(): """Collect static files""" print '>>> collectstatic' require('app_path', 'project_name') - with cd('%(app_path)s/releases/current/%(project_name)s' % env): + with cd('%(app_path)s/releases/current' % env): run('%(app_path)s/ve/bin/python manage.py collectstatic --noinput' % env, pty=True)