# Install fabric so that the KarmaWorld fabfile may be run.
# build a shell script that installs prereqs, configures the database, sets up
-# the user/group associations, pulls in the code from the host machine, and
-# then runs fabric.
+# the user/group associations, pulls in the code from the host machine, sets up
+# some external dependency configs, and then runs fabric.
shellscript = <<SCRIPT
apt-get update
apt-get upgrade -y
apt-get install -y python-pip postgresql python-virtualenv virtualenvwrapper \
git nginx postgresql-server-dev-9.1 libxslt1-dev \
- libxml2-dev libmemcached-dev python-dev
+ libxml2-dev libmemcached-dev python-dev rabbitmq-server
echo "CREATE USER vagrant WITH CREATEROLE LOGIN; CREATE DATABASE karmaworld OWNER vagrant;" | su postgres -c "psql"
su vagrant -c "git clone /vagrant karmaworld"
+SECRETPATH="karmaworld/karmaworld/secret"
+CFILE="$SECRETPATH/db_settings.py"
+cat > $CFILE <<CONFIG
+#!/usr/bin/env python
+# -*- coding:utf8 -*-
+# Copyright (C) 2012 FinalsClub Foundation
+"""
+DO NOT check this file into source control.
+"""
+PROD_DB_NAME = 'karmaworld'
+PROD_DB_USERNAME = 'vagrant'
+PROD_DB_PASSWORD = ''
+CONFIG
+cp $SECRETPATH/filepicker.py.example $SECRETPATH/filepicker.py
+cp $SECRETPATH/static_s3.py.example $SECRETPATH/static_s3.py
+chown vagrant:vagrant $SECRETPATH/*.py
+
+cat > /etc/nginx/sites-available/karmaworld <<CONFIG
+server {
+ listen 80;
+ # don't do virtual hosting, handle all requests regardless of header
+ server_name "";
+ client_max_body_size 20M;
+
+ location / {
+ # pass traffic through to gunicorn
+ proxy_pass http://127.0.0.1:8000;
+ }
+}
+CONFIG
+rm /etc/nginx/sites-enabled/default
+ln -s /etc/nginx/sites-available/karmaworld /etc/nginx/sites-enabled/karmaworld
+sudo service nginx restart
+
+cp karmaworld/confs/prod/supervisor /etc/init.d
+chmod 755 /etc/init.d/supervisor
+update-rc.d supervisor defaults
+
pip install fabric
#su vagrant -c "cd karmaworld; fab here first_deploy"
SCRIPT