Redmine 1.4.6 (and earlier) can be installed in a shared environment. This
article will detail the easiest and most reliable method of getting a Redmine
instance set up on a shared cPanel web hosting account, using
instead of Mongrel.
I wrote this article a while ago when cPanel 11.32 was the most recent version,
which used Rails 2.3.14, but most of it should still apply with cPanel 11.36
and Rails 2.3.17. Redmine 2.2 requires Rails 3.x, and as a result is not
likely to be supported on shared servers (though with root access, you could
set up Rails 3 in a server using cPanel, but that's beyond the scope of this article).
This article was also written for a HostGator shared hosting account, so
I can't vouch for other providers like DreamHost, so please feel free to
contact me letting me know if this setup works on other providers using
cPanel (as I'd like to believe).
Note: Ensure that you have SSH access enabled on your account before
proceeding! You will need to be somewhat familiar with using SSH before
you install Redmine in any way. Please see "How do I get and use SSH access?"
for more information.
Step 1 - Setup database and subdomain
Go to your cPanel (this is the only time you will need to), and create a
database to be used for your Redmine. See "How do I create a MySQL database..."
for more information. You can also reference the following screenshot:
We'll call ours
cubecity_redmine. Be sure to save your password, as you'll
need it later on.
Next, create a subdomain and point it to the
public directory of
where you will place your Redmine instance. We'll be using
in this example:
Note: It is not necessary to use a subdomain - you can definitely use a
subdirectory or your primary domain, just be sure to make the appropriate
changes. For simplicity and ease of maintenance, we will use a subdomain
in this article.
Now that we have these set up, let's start configuring our environment for
Step 2 - Setup your Rails environment
Connect to your account via SSH. The following should look similar to where
you're at now:
We will now want to edit our shell's environment variables, so that it knows
where to find our ruby gems. You can use any text editor - we'll use
in our examples. Type the following:
This will open up the
nano editor. You will want to add or ensure that
the following variables are in your
You can navigate the file using your arrow keys. Save it by pressing Ctrl+X
(by pressing Ctrl and the X key at the same time). It may ask to save your
changes, so press
y and then click enter to save it.
After this, type the following so that your environment variables are reloaded
from your profile:
Now we will want to edit our rubygems configuration file. Open
nano as you did with
gem: --remote --gen-rdoc --run-tests
rdoc: --inline-source --line-numbers
If the file is empty, type all of the above. Ensure that your
gemhome keys use your own username. Mine is
cubecity in the above,
so just replace that. Save the file using Ctrl+X after you are done.
That's it! Your environment is set up, so now let's go into downloading
and installing Redmine.
Step 3 - Download and Install Redmine
Let's first move out the folder created by cPanel when we went to make a
subdomain. Run the following commands:
mv redmine oldredmine
Now we want to download the latest version of Redmine 1.4. Visit the
RubyForge page for Redmine and find the tarball for latest Redmine.
We'll use 1.4.4 as that is the latest at this time of writing, and download
it directly to the server like below:
You will then want to extract the tarball. Use the following to extract it:
tar xzvf redmine-1.4.4.tar.gz
Your session should look similar to this before you extract the file:
After you've finished untarring the download, rename your extracted directory
redmine using the
mv command and go into that directory:
mv redmine-1.4.4 redmine
We will be using Bundler to install Redmine's dependencies. Bundler should
be available on the shared server, but if it is not, you can locally install
a copy by running
gem install bundler. As we will be using MySQL, issue
bundle install --without development test postgresql sqlite
Your session should now look like this:
Redmine's installed! Now let's finish up and configure it...
Step 4 - Configure Redmine
Copy over the example database configuration provided by Redmine and start
editing it, like below:
cp config/database.yml.example config/database.yml
Edit your configuration for the production environment with the database
name, user, and password you created at the beginning of this tutorial:
Press Ctrl+X to save. Now let's run our initial Rake tasks to create a secret
and set up your database's tables:
Finally, we will edit our
.htaccess so that mod_passenger can handle requests
for your Redmine instance:
Add the following two lines:
Press Ctrl+X to save, and you're done! Visit the subdomain you created in
step 1, and your Redmine installation should be handling requests as normal.
This method requires no stopping or starting of services, however if you
find (very rarely this will occur) that you need to restart your app, create
restart.txt file in your application:
The application will restart the next time it is loaded in a browser.
Have fun resolving bugs!