Installing ScrumDo on your server.

marc-hughes edited this page Jun 25, 2011 · 9 revisions

Installing ScrumDo on your server.

Some information on what feature parity with scrumdo.com: Open Source vs. Commercial

On Ubuntu? There's some additional info here: Installing ScrumDo on Ubuntu

First Steps

Read and follow the developer environment set up: Set-up

Most of getting a server up and running is in that.

GIT

We grab our live site right out of the production branch in GIT, if you want to do the same:

git checkout production

If you want to keep your version of ScrumDo the same as the one we run on scrumdo.com, you can upgrade with some commands like this:

git pull
python manage.py syncdb
python manage.db evolve --hint --execute
(restart apache)

We create tags every time we deploy to scrumdo.com in the format live-2010-12-23

Local settings

Create a file called local_settings.py and put all your site-specific overrides to the settings in it. Here's what ours looks like:

GOOGLE_ANALYTICS = True
GOOGLE_ANALYTICS_ACCOUNT = 'OUR ANALYTICS KEY'
DEBUG = False
TEMPLATE_DEBUG = False
SECRET_KEY = 'OUR SECRET KEY'

EMAIL_HOST='OUR SMTP HOST'
EMAIL_HOST_USER='noreply@scrumdo.com'
EMAIL_HOST_PASSWORD='OUR SMTP PASSWORD'
EMAIL_PORT='587'
EMAIL_USE_TLS=True

CONTACT_EMAIL = "scrumdo@scrumdo.com"
DEFAULT_FROM_EMAIL = 'noreply@scrumdo.com'   
SERVER_EMAIL = 'noreply@scrumdo.com'
SITE_NAME = "ScrumDo"
    
DATABASE_NAME = 'backlog' 
DATABASE_USER = 'backlog'
DATABASE_PASSWORD = 'OUR DATABASE PASSWORD'

SCRUMDO_EXTRAS = ("extras.plugins.github_issues.GitHubIssuesExtra",)

Scheduled Jobs

Then, set up cron jobs to execute the following scripts:

  • burnup_chart.py - Calculates burn up charts and velocity for all projects. Run this once a day.
  • site_stats.py - Calculates site statistics that can be viewed here: http://scrumdo.com/stats Run this once a day
  • manage.py send_mail - sends queued email. Run this often (we run it every other minute on ScrumDo.com)
  • manage.py retry_deferred - retries failed email. Run this about once a day.

You can see the scripts we use to run these in the cron-scripts directory of the source. Our crontab looks something like this:

10 22 * * * scrumdo/cron-scripts/record_backlog.sh
11 22 * * * scrumdo/cron-scripts/site_stats.sh
*/2 * * * * scrumdo/cron-scripts/send_email.sh
1 1 * * * scrumdo/cron-scripts/resend_email.sh
*/5 * * * * scrumdo/cron-scripts/extras_sync.sh
2 1 * * * scrumdo/cron-scripts/extras_pull.sh

Search

We use django-haystack plus solr for searching & filtering. If you want the search/filter options to work, you'll need to manually install solr

There is some information regarding the installation on the django-haystack help page.

After installing solr, generate the solr xml schema file.

python manage.py build_solr_schema > PATH_TO_SOLR/solr/conf/schema.xml

Then, rebuild your initial index.

python manage.py rebuild_index

Then you should be good to start searching. django-haystack is set up to auto-update the index as changes are made, so you shouldn't have to rebuild the index regularly. Occasionally, if the search index schema changes (apps.projects.search_indexes.py) you'll have to re-run the schema and rebuild jobs.

Web server

Next, you'll want to set up a real web server in front of your Django installation. We use Apache and mod_wsgi on scrumdo.com - here's some setup information: http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/

Usual stuff

You'll want to set up your DNS to point at the site, perhaps install an SSL certificate.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.