ab198801c9a0d67b0c9a727cd03c0ab5f49ecad6
[wolnelektury.git] / deployment.py
1 #!/srv/library/wolnelektury/pythonenv/bin/python
2 from __future__ import with_statement
3
4 import shutil
5 import os
6 import sys
7
8 from string import Template
9
10 def render_template(source, dest, context={}):
11     print "Rendering template:",
12     with open(source, 'rb') as source_file:
13         t = Template(source_file.read())
14     with open(dest, 'wb') as dest_file:
15         dest_file.write(t.safe_substitute(context))
16     print "done."
17
18 def restart_wsgi():
19     print "Restarting wsgi application:",
20     os.system("touch %s" % WSGI_TARGET)
21     print "done."
22
23 def update_application():
24     print "Updating repository.",
25     os.system("cd %s; git pull" % PROJECT_ROOT)
26
27     print "Installing requirements"
28     os.system("%s install -r %s" % (PIP, os.path.join(PROJECT_ROOT, 'requirements.txt')))
29
30     print "Installing local requirements"
31     os.system("%s install -r %s" % (PIP, os.path.join(ROOT, 'etc', 'requirements.txt')))
32     print "done."
33
34 ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
35
36 PYTHON = os.path.join(ROOT, 'pythonenv', 'bin', 'python')
37 PIP = os.path.join(ROOT, 'pythonenv', 'bin', 'pip')
38 PYTHON_SITE = os.path.join(ROOT, 'pythonenv', 'lib', 'python2.6', 'site-packages')
39
40 PROJECT_NAME = 'wolnelektury'
41 PROJECT_ROOT = os.path.join(ROOT, 'application')
42
43 MEDIA_ROOT = os.path.join(ROOT, 'www', 'media')
44
45 ADMIN_EMAIL = 'lrekucki@gmail.com'
46
47 WSGI_TARGET = os.path.join(ROOT, 'www', 'wsgi', PROJECT_NAME + '.wsgi')
48 WSGI_DIR = os.path.dirname(WSGI_TARGET)
49
50 WSGI_USER = PROJECT_NAME
51 WSGI_PROCESSES = 5
52 WSGI_THREADS = 1
53
54 DOMAIN = 'lektury.staging.nowoczesnapolska.org.pl'
55
56 #
57 # Load local configuration
58 #
59 sys.path = [ os.path.join(ROOT, 'etc') ] + sys.path
60
61 from local_deployment import *
62
63 if __name__ == '__main__':
64     update_application()
65     render_template(os.path.join(PROJECT_ROOT, PROJECT_NAME + '.wsgi.tmpl'), WSGI_TARGET, context=globals())
66     render_template(os.path.join(PROJECT_ROOT, PROJECT_NAME + '.vhost.tmpl'), os.path.join(ROOT, 'etc', PROJECT_NAME + '.vhost'), context=globals())
67     restart_wsgi()