deploy: set secret_key on setup
[fnpdjango.git] / fnpdjango / deploy / __init__.py
index 9c7d762..fb093f8 100644 (file)
@@ -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)