webapp for unglue.it
 
 
 
 
 
 
Go to file
Andromeda Yelton 30dcab3d88 adding smashwords link to FAQ menu and improving URL hygiene 2013-02-06 09:09:20 -05:00
api configure wish list inside book_panel so it doesn't get omitted again 2013-01-02 20:26:20 -05:00
core addressing feedback 2013-01-04 15:12:35 -05:00
deploy update which SSLCertificateChainFile being used by unglue.it 2013-01-07 21:11:39 -05:00
docs implementation of read-only api for Work, Edition, Subject, Campaign, Author 2011-09-12 14:50:29 -07:00
experimental first cut at producing iterator interfaces to Stripe objects -- here I implement one for events 2012-10-18 06:59:08 -07:00
frontend adding smashwords link to FAQ menu and improving URL hygiene 2013-02-06 09:09:20 -05:00
logs Removing logs/unglue.it.log.1 and modifying .gitignore to ignore logs/* 2012-02-02 10:08:15 -08:00
payment [#41908015] 'incorrect_number' and 'processing_error' error should also result in pledge_failed notice -> 2013-01-03 14:10:05 -05:00
selenium Adding explicit waits to selenium payment tests in order to wait for very slow js when running headless on ec2 2012-01-26 19:50:14 +00:00
settings Added CKEDITOR_UPLOAD_PREFIX 2013-01-30 06:07:50 +00:00
static resolve conflicts for merge master into libraries 2013-01-24 17:08:40 -05:00
sysadmin Have a shell script for generating the certificate signing request (CSR) for unglue.it 2013-01-04 14:16:43 -05:00
test Merge branch 'master' into charge_failed 2012-11-27 12:19:21 -08:00
test-data removed duplicate works until work deduping is working again 2011-10-10 17:25:55 -04:00
utils Stepping stone to tests that will allow the adjustment of localdatetime.now() so that we can simulate campaign closing 2012-11-15 14:37:04 -08:00
.gitignore y u wanna track clerybeat.pid 2012-05-13 16:46:25 -04:00
.gitignore~ privacy policy updated with paypal info 2011-09-28 13:28:12 -04:00
README.md Update reference to Django in requirements_versioned.pip to 1.4.2 2012-10-18 07:34:39 -07:00
STAR_unglue_it.ca-bundle update just.conf to move from just.unglueit.com -> just.unglue.it and for using a different CA 2013-01-07 20:53:43 -05:00
__init__.py setup api, core and frontend apps, also added initial homepage template from stefan 2011-08-30 23:46:55 -04:00
admin.py Added django-notification related panels to admin interface 2012-04-18 17:44:42 -07:00
context_processors.py add production setting and only use google analytics in production 2012-10-23 10:24:16 -04:00
fabfile.py first pass at calculating transactions that need to be recharged 2012-07-13 10:17:51 -07:00
manage.py setup api, core and frontend apps, also added initial homepage template from stefan 2011-08-30 23:46:55 -04:00
requirements_versioned.pip 1) Now fire the transaction_charged signal in the Stripe webhook handling 2012-11-05 10:44:24 -08:00
urls.py added ckeditor to manage campaign forms to provide rich text editing and image uploads [#32447975] 2012-07-27 14:23:44 -04:00

README.md

regluit

A 'monolithic' alternative to unglu 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. The key difference with unglu is that the frontend app is able to access database models from core in the same way that the api is able to...which hopefully should simplify some things.

Develop

Here are some instructions for setting up regluit for development on an Ubuntu system. If you are on OS X see notes below to install python-setuptools in step 1:

  1. aptitude install python-setuptools git python-lxml
  2. sudo easy_install virtualenv virtualenvwrapper
  3. git clone git@github.com:Gluejar/regluit.git
  4. cd regluit
  5. mkvirtualenv regluit
  6. pip install -r requirements_versioned.pip
  7. add2virtualenv ..
  8. cp settings/dev.py settings/me.py
  9. 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.
  10. edit settings/me.py and look at the facebook, twitter and google auth settings to enable federated logins from those sites
  11. echo 'export DJANGO_SETTINGS_MODULE=regluit.settings.me' >> ~/.virtualenvs/regluit/bin/postactivate
  12. deactivate ; workon regluit
  13. django-admin.py syncdb --migrate --noinput
  14. 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.`
  15. django-admin.py celerybeat -l INFO to start the celerybeat daemon to handle scheduled tasks.
  16. django-admin.py runserver 0.0.0.0:8000 (you can change the port number from the default value of 8000)
  17. point your browser at http://localhost:8000/

Production Deployment

Below are the steps for getting regluit running on EC2 with Apache and mod_wsgi, and talking to an Amazon Relational Data Store instance. Instructions for setting please are slightly different.

  1. create an ubuntu ec2 instance (e.g, go http://alestic.com/ to find various ubuntu images)
  2. sudo aptitude update
  3. sudo aptitude upgrade
  4. sudo aptitude install git-core apache libapache2-mod-wsgi mysql-client python-virtualenv python-mysqldb redis-server python-lxml postfix python-dev
  5. sudo mkdir /opt/regluit
  6. sudo chown ubuntu:ubuntu /opt/regluit
  7. cd /opt
  8. git config --global user.name "Ed Summers"
  9. git config --global user.email "ehs@pobox.com"
  10. ssh-keygen
  11. add ~/.ssh/id\_rsa.pub as a deploy key on github https://github.com/Gluejar/regluit/admin/keys
  12. git clone git@github.com:Gluejar/regluit.git
  13. cd /opt/regluit
  14. create an Amazon RDS instance
  15. connect to it, e.g. mysql -u root -h gluejardb.cboagmr25pjs.us-east-1.rds.amazonaws.com -p
  16. CREATE DATABASE unglueit CHARSET utf8;
  17. GRANT ALL ON unglueit.\* TO unglueit@ip-10-244-250-168.ec2.internal IDENTIFIED BY 'unglueit' REQUIRE SSL;
  18. update settings/prod.py with database credentials
  19. virtualenv ENV
  20. source ENV/bin/activate
  21. pip install -r requirements_versioned.pip
  22. echo "/opt/" > ENV/lib/python2.7/site-packages/regluit.pth
  23. django-admin.py syncdb --migrate --settings regluit.settings.prod
  24. sudo mkdir /var/www/static
  25. sudo chown ubuntu:ubuntu /var/www/static
  26. django-admin.py collectstatic --settings regluit.settings.prod
  27. sudo ln -s /opt/regluit/deploy/regluit.conf /etc/apache2/sites-available/regluit
  28. sudo a2ensite regluit
  29. sudo a2enmod ssl rewrite
  30. cd /home/ubuntu
  31. copy SSL server key to /etc/ssl/private/server.key
  32. copy SSL certificate to /etc/ssl/certs/server.crt
  33. sudo /etc/init.d/apache2 restart
  34. sudo adduser --no-create-home celery --disabled-password --disabled-login (just enter return for all?)
  35. sudo cp deploy/celeryd /etc/init.d/celeryd
  36. sudo chmod 755 /etc/init.d/celeryd
  37. sudo cp deploy/celeryd.conf /etc/default/celeryd
  38. sudo mkdir /var/log/celery
  39. sudo mkdir /var/run/celery
  40. sudo chown celery:celery /var/log/celery /var/run/celery
  41. sudo /etc/init.d/celeryd start
  42. sudo cp deploy/celerybeat /etc/init.d/celerybeat
  43. sudo chmod 755 /etc/init.d/celerybeat
  44. sudo cp deploy/celerybeat.conf /etc/default/celerybeat
  45. sudo mkdir /var/log/celerybeat
  46. sudo chown celery:celery /var/log/celerybeat
  47. sudo /etc/init.d/celerybeat start

Updating Production

  1. Study the latest changes in the master branch, especially keep in mind how it has changed from what's in production.
  2. 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.)
  3. Login to unglue.it and run /opt/regluit/deploy/update-prod

OS X Developer Notes

To run regluit on OS X you should have XCode installed

Install virtualenvwrapper according to the process at http://blog.praveengollakota.com/47430655:

  1. sudo easy\_install pip
  2. sudo pip install virtualenv
  3. pip install virtualenvwrapper

Edit or create .bashrc in ~ to enable virtualenvwrapper commands:

  1. mkdir ~/.virtualenvs

  2. Edit .bashrc to include the following lines:

    export WORKON_HOME=$HOME/.virtualenvs source your_path_to_virtualenvwrapper.sh_here

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

If you get 'EnvironmentError: mysql_config not found' edit the line ~/.virtualenvs/regluit/build/MySQL-python/setup_posix.py

  1. mysql_config.path = "mysql_config" to be (using a path that exists on your system)
  2. mysql_config.path = "/usr/local/mysql-5.5.20-osx10.6-x86_64/bin/mysql_config"

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'