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