2011-08-31 01:05:23 +00:00
regluit
2011-08-31 03:46:55 +00:00
=======
A 'monolithic' alternative to [unglu ](http://github.com/gluejar/unglu )
2011-09-06 04:09:18 +00:00
for the unglue.it website. regluit is essentially a Django project that
contains three applications: `frontend` , `api` and `core` that can be deployed
and configured on as many ec2 instances that are needed to support traffic.
2011-09-06 04:10:03 +00:00
The key difference with [unglu ](http://github.com/gluejar/unglu ) is that the
2011-08-31 03:53:02 +00:00
`frontend` app is able to access database models from `core` in the same
2011-08-31 03:54:52 +00:00
way that the `api` is able to...which hopefully should simplify some things.
2011-08-31 03:46:55 +00:00
Develop
2011-08-31 01:05:23 +00:00
-------
2011-08-31 03:46:55 +00:00
Here are some instructions for setting up regluit for development on
2011-09-24 15:40:38 +00:00
an Ubuntu system. If you are on OS X see notes below
to install python-setuptools in step 1:
2011-08-31 03:46:55 +00:00
2011-11-16 05:10:00 +00:00
1. `aptitude install python-setuptools git python-lxml`
2011-08-31 03:46:55 +00:00
1. `sudo easy_install virtualenv virtualenvwrapper`
1. `git clone git@github.com:Gluejar/regluit.git`
2011-09-07 11:49:37 +00:00
1. `cd regluit`
2011-11-16 05:10:00 +00:00
1. `mkvirtualenv regluit`
2011-08-31 03:46:55 +00:00
1. `pip install -r requirements.pip`
1. `add2virtualenv ..`
2011-09-04 05:04:04 +00:00
1. `cp settings/dev.py settings/me.py`
2011-09-10 11:49:44 +00:00
1. edit `settings/me.py` and set `EMAIL_HOST_USER` and `EMAIL_HOST_PASSWORD` to your gmail username and password, if you want to see that registration emails will work properly.
2011-09-06 01:50:55 +00:00
1. edit `settings/me.py` and look at the facebook, twitter and google auth settings to enable federated logins from those sites
2011-09-04 05:04:04 +00:00
1. `echo 'export DJANGO_SETTINGS_MODULE=regluit.settings.me' >> ~/.virtualenvs/regluit/bin/postactivate`
2011-08-31 03:46:55 +00:00
1. `deactivate ; workon regluit`
2011-09-18 23:48:09 +00:00
1. `django-admin.py syncdb --migrate --noinput`
2011-10-20 17:28:33 +00:00
1. `django-admin.py celeryd --loglevel=INFO` start the celery daemon to perform asynchronous tasks like adding related editions, and display logging information in the foreground.`
2012-04-05 21:07:55 +00:00
1. `django-admin.py celerybeat -l INFO` to start the celerybeat daemon to handle scheduled tasks.
2011-09-28 19:51:53 +00:00
1. `django-admin.py runserver 0.0.0.0:8000` (you can change the port number from the default value of 8000)
2011-08-31 03:48:17 +00:00
1. point your browser at http://localhost:8000/
2011-10-07 03:13:31 +00:00
Production Deployment
---------------------
2011-10-07 13:06:16 +00:00
Below are the steps for getting regluit running on EC2 with Apache and mod_wsgi, and talking to an Amazon Relational Data Store instance.
2012-01-26 17:24:35 +00:00
Instructions for setting please are slightly different.
2011-10-07 13:06:16 +00:00
2012-01-25 22:31:10 +00:00
1. create an ubuntu ec2 instance (e.g, go http://alestic.com/ to find various ubuntu images)
2011-10-07 03:13:31 +00:00
1. `sudo aptitude update`
1. `sudo aptitude upgrade`
2012-04-20 18:21:25 +00:00
1. `sudo aptitude install git-core apache libapache2-mod-wsgi mysql-client python-virtualenv python-mysqldb redis-server python-lxml postfix python-dev`
2011-10-07 03:13:31 +00:00
1. `sudo mkdir /opt/regluit`
1. `sudo chown ubuntu:ubuntu /opt/regluit`
1. `cd /opt`
1. `git config --global user.name "Ed Summers"`
1. `git config --global user.email "ehs@pobox.com"`
1. `ssh-keygen`
2011-11-19 21:34:09 +00:00
1. add `~/.ssh/id\_rsa.pub` as a deploy key on github https://github.com/Gluejar/regluit/admin/keys
2011-10-07 03:13:31 +00:00
1. `git clone git@github.com:Gluejar/regluit.git`
1. `cd /opt/regluit`
1. create an Amazon RDS instance
2011-10-07 13:03:54 +00:00
1. connect to it, e.g. `mysql -u root -h gluejardb.cboagmr25pjs.us-east-1.rds.amazonaws.com -p`
1. `CREATE DATABASE unglueit CHARSET utf8;`
2012-01-25 22:31:10 +00:00
1. `GRANT ALL ON unglueit.\* TO ‘ unglueit’ @’ ip-10-244-250-168.ec2.internal’ IDENTIFIED BY 'unglueit' REQUIRE SSL;`
2011-10-07 03:13:31 +00:00
1. update settings/prod.py with database credentials
2011-11-16 02:57:11 +00:00
1. `virtualenv ENV`
2011-10-07 03:13:31 +00:00
1. `source ENV/bin/activate`
1. `pip install -r requirements.pip`
1. `echo "/opt/" > ENV/lib/python2.7/site-packages/regluit.pth`
1. `django-admin.py syncdb --migrate --settings regluit.settings.prod`
2012-01-26 15:29:46 +00:00
1. `sudo mkdir /var/www/static`
1. `sudo chown ubuntu:ubuntu /var/www/static`
2011-11-18 16:37:05 +00:00
1. `django-admin.py collectstatic --settings regluit.settings.prod`
2011-10-07 03:13:31 +00:00
1. `sudo ln -s /opt/regluit/deploy/regluit.conf /etc/apache2/sites-available/regluit`
1. `sudo a2ensite regluit`
2012-01-15 22:16:18 +00:00
1. `sudo a2enmod ssl rewrite`
2012-01-26 15:29:46 +00:00
1. `cd /home/ubuntu`
1. copy SSL server key to `/etc/ssl/private/server.key`
1. copy SSL certificate to `/etc/ssl/certs/server.crt`
2011-10-07 03:13:31 +00:00
1. `sudo /etc/init.d/apache2 restart`
2012-01-26 15:29:46 +00:00
1. `sudo adduser --no-create-home celery --disabled-password --disabled-login` (just enter return for all?)
2011-11-16 04:16:12 +00:00
1. `sudo cp deploy/celeryd /etc/init.d/celeryd`
2011-10-20 04:36:41 +00:00
1. `sudo chmod 755 /etc/init.d/celeryd`
2011-11-16 04:16:12 +00:00
1. `sudo cp deploy/celeryd.conf /etc/default/celeryd`
2011-10-20 04:36:41 +00:00
1. `sudo mkdir /var/log/celery`
2012-04-20 17:20:19 +00:00
1. `sudo mkdir /var/run/celery`
1. `sudo chown celery:celery /var/log/celery /var/run/celery`
2011-10-20 04:36:41 +00:00
1. `sudo /etc/init.d/celeryd start`
2012-04-05 22:07:27 +00:00
1. `sudo cp deploy/celerybeat /etc/init.d/celerybeat`
1. `sudo chmod 755 /etc/init.d/celerybeat`
1. `sudo cp deploy/celerybeat.conf /etc/default/celerybeat`
1. `sudo mkdir /var/log/celerybeat`
1. `sudo chown celery:celery /var/log/celerybeat`
1. `sudo /etc/init.d/celerybeat start`
2011-10-07 03:13:31 +00:00
2012-03-01 19:52:05 +00:00
Updating Production
--------------------
1. Study the latest changes in the master branch, especially keep in mind how
it has [changed from what's in production ](https://github.com/Gluejar/regluit/compare/production...master ).
1. Update the production branch accordingly. If everything in `master` is ready to be moved into `production` , you can just merge `master` into `production` . Otherwise, you can grab specific parts. (How to do so is something that should probably be described in greater detail.)
1. Login to unglue.it and run [`/opt/regluit/deploy/update-prod` ](https://github.com/Gluejar/regluit/blob/master/deploy/update-prod )
2012-01-26 15:29:46 +00:00
OS X Developer Notes
2011-10-07 03:13:31 +00:00
-------------------
To run regluit on OS X you should have XCode installed
2011-09-24 15:40:38 +00:00
Install virtualenvwrapper according
to the process at http://blog.praveengollakota.com/47430655:
2011-11-19 21:34:09 +00:00
1. `sudo easy\_install pip`
2011-09-24 15:40:38 +00:00
1. `sudo pip install virtualenv`
1. `pip install virtualenvwrapper`
Edit or create .bashrc in ~ to enable virtualenvwrapper commands:
1. `mkdir ~/.virtualenvs`
1. Edit .bashrc to include the following lines:
2011-12-02 19:01:03 +00:00
2011-12-02 19:00:02 +00:00
export WORKON_HOME=$HOME/.virtualenvs
source your_path_to_virtualenvwrapper.sh_here
2011-09-24 15:40:38 +00:00
In the above web site, the path to virtualenvwrapper.sh was
/Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh
In Snow Leopard, this may be /usr/local/bin/virtualenvwrapper.sh
Configure Terminal to automatically notice this at startup:
Terminal – > Preferences – > Settings – > Shell
Click "run command"; add `source ~/.bashrc`
2011-10-04 11:55:39 +00:00
Selenium Install
---------------
Download the selenium server:
http://selenium.googlecode.com/files/selenium-server-standalone-2.5.0.jar
Start the selenium server:
'java -jar selenium-server-standalone-2.5.0.jar'