Guest User

Untitled

a guest
May 18th, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. #!/usr/bin/env python
  2. from fabric.api import *
  3. from fabric.contrib.files import append
  4.  
  5. #I've made the assumption that you have git installed
  6.  
  7.  
  8.  
  9.  
  10. env.projectname = 'name_project' #name of your project
  11.  
  12.  
  13.  
  14. def local():
  15. """your local setup"""
  16. env.hosts = ['localhost']
  17. env.user = 'username'
  18. env.password = 'password'
  19. env.workspace = '/Users/%(user)s/Sites' % env #name of workspace dir
  20. env.path = '%(workspace)s/%(projectname)s' % env
  21. env.activate_path = '%(workspace)s/%(projectname)s/bin/activate' % env
  22. env.apache_path = '%(path)s/apache' % env
  23. env.httpd = '/private/etc/apache2/httpd.conf' #path to where your apache's httpd.conf is located
  24. env.ip = '127.0.0.1'
  25.  
  26.  
  27. def setup():
  28. """docstring for setup"""
  29. require('hosts', provided_by=[local])
  30. require('path')
  31. with cd(env.workspace):
  32. run('virtualenv --no-site-packages %(projectname)s' % env)
  33. sudo('easy_install pip', pty=True)
  34. run('source %(activate_path)s; pip install django' % env)
  35. with cd(env.path):
  36. run('source %(activate_path)s; django-admin.py startproject %(projectname)s' % env)
  37. run ('mkdir %(path)s/apache' % env )
  38. run('mkdir %(apache_path)s/logs; touch %(apache_path)s/%(projectname)s.conf; touch %(apache_path)s/%(projectname)s.wsgi' % env)
  39. write_wsgi()
  40. write_conf()
  41. get_monitor()
  42. enable_site()
  43.  
  44. def write_wsgi():
  45. """docstring for write_wsgi"""
  46. file = open("%(apache_path)s/%(projectname)s.wsgi" % env, "w")
  47. file.write("import os, sys\nsys.path = ['%(path)s'] + sys.path\n\n\nos.environ['DJANGO_SETTINGS_MODULE'] = '%(projectname)s.settings'\n \n\nimport django.core.handlers.wsgi\napplication = django.core.handlers.wsgi.WSGIHandler()" % env)
  48. file.close()
  49.  
  50. def write_conf():
  51. """docstring for write_conf"""
  52. file = open("%(apache_path)s/%(projectname)s.conf" % env, "w")
  53. file.write("WSGIPythonHome '%(path)s'\nWSGIRestrictStdout Off\nWSGIDaemonProcess %(projectname)s\nWSGIProcessGroup %(projectname)s\n\n<VirtualHost *:80>\n ServerName %(projectname)s.local\n Alias /site_media/ '%(path)s/%(projectname)s/site-media'\n<Directory '%(path)s/%(projectname)s/site-media'> Order allow,deny\n Options Indexes\n Allow from all\n\n</Directory>\n\n\n\nAlias /media/ '%(path)s/lib/python2.6/site-packages/django/contrib/admin/media/'\n<Directory '%(path)s/python2.6/site-packages/django/contrib/admin/media/'>\n Order allow,deny \n Options Indexes \n Allow from all \n</Directory>\n\nWSGIScriptAlias / '%(apache_path)s/%(projectname)s.wsgi\n\n<Directory '%(apache_path)s'>\n Allow from all\n</Directory>\nErrorLog %(apache_path)s/logs/%(projectname)s-error_log\nTransferLog %(apache_path)s/logs/%(projectname)s-access_log\n</VirtualHost>" % env)
  54. file.close()
  55.  
  56. def enable_site():
  57. """this enable your site using httpd.conf"""
  58. append('#enabling %(projectname)s\nInclude %(apache_path)s/%(projectname)s.conf\n' % env,'%(httpd)s' % env, use_sudo=True)
  59. append('%(ip)s %(projectname)s.local' % env, '/etc/hosts', use_sudo=True)
  60.  
  61.  
  62. def get_monitor():
  63. """download and enable auto restart of wsgi"""
  64. run('cd %(path)s;git clone git://gist.github.com/258020.git gist-258020' % env)
  65. run('cd %(path)s/gist-258020; mv monitor.py %(path)s/%(projectname)s/; rm -rf %(path)s/gist-258020' % env)
  66. append("\nimport %(projectname)s.monitor\n%(projectname)s.monitor.start(interval=1.0)" % env,"%(apache_path)s/%(projectname)s.wsgi" % env)
Add Comment
Please, Sign In to add comment