Skip to content
pcraciunoiu edited this page Jul 14, 2011 · 3 revisions

We're going to start off with a clone of playdoh and iterate.

Each person is mostly working on their own thing, but the idea is to collaborate on this project to get used to a collaborative git workflow.

Installation instructions

  • Set up aws.pem key
  • Make sure you don't have too many keys in .ssh
  • Log in like so: ssh -i ~/.ssh/key.pem ubuntu@[ec2.public.dns]

Update Ubuntu

sudo -s
aptitude update

Install VCS

aptitude install git mercurial subversion
aptitude install ack-grep

Install LAMP

sudo tasksel --section server
# Select LAMP

Add the sowink user and your own

mkdir /home/paul
groupadd sowink
useradd -d /home/paul -m paul -G sowink -s /bin/bash -m
passwd paul
useradd -g sowink -m -d /home/sowink -s /bin/bash sowink
passwd sowink

Add sowink to sudoers

select-editor
# Pick 3 for vim.basic
visudo
# Add: %sowink ALL=(ALL) ALL

Configure your vim and bash stuff

su paul
# Use this .vimrc and .bash_aliases:
# https://gist.github.com/15a0858b87469484713c
vim ~/.vimrc
vim ~/.bash_aliases
exec bash

Set up ssh to get to github.

mkdir ~/.ssh
ssh-keygen -t rsa -C "[email protected]"
vim ~/.ssh/id_rsa.pub

cd /var/www
sudo rm index.html
# Add key to your github.
# Then:
sudo chown -R sowink:sowink ../www
git clone [email protected]:sowink/sowink.git ~/sowink
sudo mv ~/sowink .
sudo chown -R paul:sowink sowink
git submodule update --init --recursive

Install and configure wsgi. Use the gist above:

# https://gist.github.com/15a0858b87469484713c
sudo aptitude install libapache2-mod-wsgi
sudo vim /etc/apache2/conf.d/sowink.conf
sudo service apache2 restart
# Give apache permissions to upload.
chown -R www-data:www-data media/uploads/

Install python PIL requirements

sudo apt-get install libjpeg8 libjpeg8-dev python-imaging libfreetype6 libfreetype6-dev zlib1g zlib1g-dev libpng12-0
sudo aptitude install python-imaging python-pip python-mysqldb
sudo pip install -r requirements/compiled.txt

Create database

mysql -u root -p
# Enter root password
# GRANT ALL PRIVILEGES ON sowink.* TO sowink IDENTIFIED BY 'sowink';
ckw
vendor/src/schematic/schematic migrations/
./manage.py createsuperuser

Install java:

sudo add-apt-repository "deb http://archive.canonical.com/ natty partner"
sudo apt-get update
sudo apt-get install sun-java6-jre

# Compress CSS, JS
./manage.py compress_assets

Install search.

sudo mkdir -p /opt/local/sphinx
sudo chown -R paul:sowink /opt/local
wget http://sphinxsearch.com/files/sphinx-2.0.1-beta.tar.gz
tar zxf sphinx-2.0.1-beta.tar.gz
# Install g++
sudo aptitude install g++
# Install mysql devel headers
sudo aptitude install libmysqlclient-dev
sudo aptitude install make
cd sphinx-2.0.1-beta/
./configure --prefix=/opt/local/sphinx
make
make install

Update the path to add sphinx and schematic

PATH=/opt/local/sphinx/bin:$PATH:/var/www/sowink/so_wink/vendor/src/schematic
# Edit this to add your db permissions
cp configs/sphinx/localsettings.py-dist configs/sphinx/localsettings.py
sudo mkdir -p /opt/local/data/sphinx
sudo chown -R paul:sowink /opt/local/data/
sudo mkdir -p /opt/local/log/searchd
sudo chown -R paul:sowink /opt/local/log/
sudo mkdir -p /opt/local/etc
sudo chown -R paul:sowink /opt/local/etc/
sudo chmod -R 775 /opt/local/data/ /opt/local/etc/ /opt/local/log/
# Check reindexing works
/opt/local/sphinx/bin/indexer --all --config configs/sphinx/sphinx.conf --rotate
# Start the search daemon
/opt/local/sphinx/bin/searchd --config configs/sphinx/sphinx.conf

Set up cron jobs.

# https://gist.github.com/15a0858b87469484713c
su sowink
crontab -e

MySQL log.

# https://gist.github.com/15a0858b87469484713c
sudo vim /etc/mysql/my.cnf
sudo service mysql restart
# Check
mysqladmin -u root -p variables | grep  log_slow_queries
sudo mysqladmin -u root -p variables | grep  log_queries_not_using_indexes

Install gevent, greenlet, etc.

# TODO: add these to vendor lib, but greenlet needs to be compiled
# gevent probably needs to be compiled too
sudo apt-get install libevent-dev
sudo pip install gevent
sudo pip install -e hg+https://bitbucket.org/Jeffrey/gevent-websocket#egg=gevent-websocket
sudo pip install -e hg+https://bitbucket.org/Jeffrey/gevent-socketio#egg=gevent-socketio
# NOTE: Make sure to remove any src/ files that pip leaves about.

General info:

# Apache logs are at /var/log/apache2/error.log
# Check there for wsgi errors.
#
# Celery logs are at /var/log/celery/w1.log
#
# MySQL logs are ate /var/log/mysql.log, /var/log/mysql.err and
# /var/log/mysql/mysql.log (most relevant)
#
#
# Set up the sowink logs:
sudo touch /var/log/sowink-debug.log
sudo chmod 777 /var/log/sowink-debug.log
sudo touch /var/log/sowink-warning.log
sudo chmod 777 /var/log/sowink-warning.log
sudo chown www-data:www-data /var/log/sowink*

# Set up folder for announcement emails.
mkdir templates/announcements
sudo chown www-data:www-data templates/announcements
sudo chmod 777 templates/announcement