Update: 15 August 2011This blog post was written almost a year ago. I haven't attempted to install Redmine on Heroku since then, so your milage may vary. I do intend to do an updated version in the future as this has been a very popular post.
I've started using Redmine this year, a project management web application, and I'm a big fan. I'm also a big fan of Heroku for deploying Rails applications. So, you know it makes sense -- deploy Redmine on Heroku! Here's how to do it step by step:
Initial Setup
$ mkdir your-company-redmine
$ cd your-company-redmine
$ git init
$ git remote add redmine git://github.com/edavis10/redmine.git
$ git fetch redmine
$ git merge redmine/1.0-stable
$ rake db:create RAILS_ENV=production
# if you don't have these installed
$ (sudo) gem install rails --version 2.3.5
$ (sudo) gem install rack --version 1.0.1
# setup database locally
$ RAILS_ENV=production rake db:migrate
$ RAILS_ENV=production rake redmine:load_default_data
$ rake generate_session_store
# add .gems
rails --version 2.3.5
$ mkdir tmp public/plugin_assets
# remove from .gitignore
/config/initializers/session_store.rb
$ git add .
$ git commit -m "Initial configuration"
Install Plugins
# install plugins, I like to use giternal
$ (sudo) gem install giternal
# add config/giternal.yml
redmine_heroku:
path: vendor/plugins
repo: http://github.com/edavis10/redmine_heroku.git
redmine_s3:
path: vendor/plugins
repo: http://github.com/tigrish/redmine_s3.git
$ giternal update
$ giternal freeze
$ git add .
$ git commit -m "Adds plugins"
Configure Heroku Plugin
# Remove from .gitignore
/public/plugin_assets
$ rake heroku:setup
Configure S3
# config/s3.yml
production:
access_key_id: YOUR_S3_ACCESS_KEY_ID
secret_access_key: YOUR_S3_SECRET_ACCESS_KEY
bucket: YOUR_S3_REDMINE_PRODUCTION_BUCKET
cname_bucket: false
development:
access_key_id: YOUR_S3_ACCESS_KEY_ID
secret_access_key: YOUR_S3_SECRET_ACCESS_KEY
bucket: YOUR_S3_REDMINE_DEVELOPMENT_BUCKET
cname_bucket: false
$ git add .
$ git commit -m "Configures S3 plugin"
Configure Sendgrid for Email
# remove from .gitignore
/config/email.yml
$ heroku addons:add sendgrid
$ heroku config
# configure config/email.yml
production:
delivery_method: :smtp
smtp_settings:
address: "smtp.sendgrid.net"
port: 25
authentication: :plain
domain: "heroku.com"
user_name: "YOUR_SENDGRID_PASSWORD"
password: "YOUR_SENDGRID_USERNAME"
$ git add .
$ git commit -m "Configures SendGrid for email delivery"
Deploy to Heroku
$ heroku create your-company-redmine
$ git push heroku deploy
# since we have the database setup locally, lets' push it
$ heroku db:push