1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
#!/bin/bash
set -e
UNIT_NAME=`echo $JUJU_UNIT_NAME | cut -d/ -f1`
VCS=$(config-get vcs)
REPOS_URL=$(config-get repos_url)
REQUIREMENTS=$(config-get requirements)
SITE_USERNAME=$(config-get site_username)
SITE_DOMAIN=$(config-get site_domain)
SITE_PASSWORD=$(config-get site_password)
SITE_ADMIN_EMAIL=$(config-get site_admin_email)
SITE_SECRET_KEY=$(config-get site_secret_key)
AUTH_URL=$(config-get auth_url)
API_KEY=$(config-get api_key)
SWIFT_CONTAINER_NAME=$(config-get swift_container_name)
SWIFT_USERNAME=$(config-get swift_username)
SWIFT_VERSION=$(config-get swift_version)
SWIFT_PREFIX=$(config-get swift_prefix)
SWIFT_USERNAME=$(config-get swift_username)
name=`basename $0`
juju-log "Executing $name"
juju-log "django: Repos with $VCS and url: $REPOS_URL"
cd /srv/${UNIT_NAME}
case $VCS in
hg)
hg pull ${REPOS_URL}
hg update ${REPOS_URL}
;;
git)
git pull ${REPOS_URL}
;;
bzr)
bzr pull ${REPOS_URL}
;;
svn)
svn co ${REPOS_URL}
;;
esac
cat > /srv/${UNIT_NAME}/initial_data.json << EOF
[
{
"pk": 1,
"model": "sites.site",
"fields": {
"domain": "$SITE_DOMAIN",
"name": "$SITE_DOMAIN"
}
},
{
"pk": 1,
"model": "auth.user",
"fields": {
"username": "$SITE_USERNAME",
"first_name": "",
"last_name": "",
"is_active": true,
"is_superuser": true,
"is_staff": true,
"last_login": "2010-10-14 23:45:54",
"groups": [],
"user_permissions": [],
"password": "$SITE_PASSWORD",
"email": "$SITE_ADMIN_EMAIL",
"date_joined": "1990-01-01 00:00"
}
}
]
EOF
cat > /srv/${UNIT_NAME}/prod_settings.py << EOF
# Settings for production server
import os
PROJECT_ROOT = os.path.dirname(__file__)
ADMINS = (
('$SITE_USERNAME', '$SITE_ADMIN_EMAIL'),
)
MANAGERS = ADMINS
DEBUG = False
LOCAL = False
SERVE_MEDIA = False
SEND_BROKEN_LINK_EMAILS = True
SECRET_KEY = '$SITE_SECRET_KEY'
MEDIA_ROOT = os.path.join(PROJECT_ROOT, "site_media", "media")
MEDIA_URL = "$AUTH_URL/$SWIFT_VERSION/$SWIFT_PREFIX$SWIFT_USERNAME/$SWIFT_CONTAINER_NAME/"
STATICFILES_STORAGE = 'cumulus.storage.CloudFilesStorage'
STATICFILES_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static")
STATIC_ROOT = STATICFILES_ROOT
STATICFILES_URL = "$AUTH_URL/$SWIFT_VERSION/$SWIFT_PREFIX$SWIFT_USERNAME/$SWIFT_CONTAINER_NAME/./"
STATIC_URL = STATICFILES_URL
ADMIN_MEDIA_PREFIX = '$AUTH_URL/$SWIFT_VERSION/$SWIFT_PREFIX$SWIFT_USERNAME/$SWIFT_CONTAINER_NAME/admin/'
DEFAULT_FILE_STORAGE = 'cumulus.storage.CloudFilesStorage'
CUMULUS = {
'API_KEY': '$API_KEY',
'AUTH_URL': '$AUTH_URL',
'CONTAINER': '$SWIFT_CONTAINER_NAME',
'USE_SSL': False,
'USERNAME': '$SWIFT_USERNAME',
'USE_SWIFT_BACKEND' : True,
}
try:
from db_settings import *
except ImportError:
pass
EOF
python manage.py collectstatic -v 0 --noinput || true
chown www-data /srv/${UNIT_NAME}/ -R
chmod g+rw /srv/${UNIT_NAME}/ -R
# Trigger the wsgi server reload
for relid in `relation-ids wsgi` ; do
relation-set -r $relid wsgi_timestamp=`date +%s`
done
|