for #184 nginx deploys with config and for #186 supervisor runs at boot
[oweals/karmaworld.git] / Vagrantfile
index 676f7f6c034cc15a1c5bd6b5ce398fecce038bf9..b7f2b05a9de3f29cf8de908de49f7419f0355a75 100644 (file)
@@ -15,14 +15,14 @@ VAGRANTFILE_API_VERSION = "2"
 # 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"
 
@@ -32,6 +32,44 @@ usermod -a -G www-data vagrant
 
 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