Installing Redmine Project Management Tool on Ubuntu 18.04 LTS: A Step-by-Step Guide

Redmine is a powerful, open-source, web-based project management application that supports multi-project management and sub-projects. Built on the Ruby on Rails framework and compatible across platforms, Redmine excels in project tracking, time management, wiki documentation, and more. It offers robust features such as role-based access control (ACL) and integration with version control systems including Git, SVN, and CVS.

Key Features

  • Available in multiple languages.
  • Supports various databases and offers straightforward time tracking.
  • Integrates with news, documents, and file management systems.
  • Supports Web feeds and e-mail notifications.

System Requirements

  • An Ubuntu 18.04 server.
  • A non-root user with sudo privileges.

Step-by-Step Installation Guide

Install Apache and MariaDB

Redmine requires a web server and a database to store data. Install Apache and MariaDB using the following command:

sudo apt-get install apache2 mariadb-server libapache2-mod-passenger -y

Start Apache and MariaDB and ensure they start automatically on boot:

sudo systemctl start apache2
sudo systemctl start mariadb
sudo systemctl enable apache2
sudo systemctl enable mariadb

Configure MariaDB

To secure MariaDB, run this setup script:

sudo mysql_secure_installation

Respond to the prompts as follows:

        Enter current password for root (enter for none):
        Set root password? [Y/n]: N
        Remove anonymous users? [Y/n]: Y
        Disallow root login remotely? [Y/n]: Y
        Remove test database and access to it? [Y/n]: Y
        Reload privilege tables now? [Y/n]: Y

Install Redmine

Redmine is readily available from the Ubuntu 18.04 default repository. Install it with:

sudo apt-get install redmine redmine-mysql -y

During installation, configure the database connection:

Install Redmine package

Choose Yes, then proceed to select MySQL as your database:

Choose MySQL database

Set a password for Redmine:

Enter the MySQL password

Next, install the gem bundler package:

sudo gem install bundler

Create a symbolic link to Redmine in your Apache web root directory:

sudo ln -s /usr/share/redmine/public /var/www/html/redmine

Create a lock file and set permissions for Redmine:

    sudo touch /usr/share/redmine/Gemfile.lock
    sudo chown www-data:www-data /usr/share/redmine/Gemfile.lock
    sudo chown -R www-data:www-data /var/www/html/redmine

Configure Apache for Redmine

Edit the passenger.conf file as shown:

sudo nano /etc/apache2/mods-available/passenger.conf
    <IfModule mod_passenger.c>
      PassengerDefaultUser www-data
      PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
      PassengerDefaultRuby /usr/bin/ruby
     </IfModule>

Create and configure a virtual host for Redmine:

sudo nano /etc/apache2/sites-available/redmine.conf
    <VirtualHost *:80>
         ServerAdmin admin@example.com
         DocumentRoot /var/www/html/redmine
         ServerName example.com
         ServerAlias www.example.com

         <Directory /var/www/html/redmine>
             RailsBaseURI /redmine
             PassengerResolveSymlinksInDocumentRoot on
         </Directory>

         ErrorLog ${APACHE_LOG_DIR}/error.log
         CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>

Replace example.com with your domain name. Save and close the file, then enable the site and mod_rewrite:

sudo a2ensite redmine
sudo a2enmod rewrite

Restart Apache:

sudo systemctl restart apache2

Verify Apache is running:

sudo systemctl status apache2

You should see:

Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
    Drop-In: /lib/systemd/system/apache2.service.d
    ??apache2-systemd.conf
    Active: active (running) since Wed 2019-01-16 17:43:29 CET; 8s ago
    Process: 7401 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
    Process: 7407 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
    Tasks: 77 (limit: 2313)
    CGroup: /system.slice/apache2.service
    ??7455 /usr/sbin/apache2 -k start
    ??7456 Passenger watchdog
    ??7459 Passenger core
    ??7468 Passenger ust-router
    ??7482 /usr/sbin/apache2 -k start
    ??7483 /usr/sbin/apache2 -k start

    Jan 16 17:43:29 server1 systemd[1]: Starting The Apache HTTP Server...
    Jan 16 17:43:29 server1 systemd[1]: Started The Apache HTTP Server.

Access Redmine Web Interface

Open a browser, type the Redmine URL (e.g., http://example.com), and you will see:

Redmine start page

Click Sign In to access the login page:

Sign into Redmine

Enter admin for both username and password, then click Login. You will be prompted to change your password:

Change the admin password

After setting a new password, access the dashboard and start managing your projects!

Redmine dashboard

Frequently Asked Questions (FAQ)

What is Redmine?

Redmine is an open-source, web-based project management application based on Ruby on Rails. It supports multiple projects, includes a built-in wiki, time tracking, and a variety of integrations.

Which operating systems are compatible with Redmine?

Redmine is cross-platform and can be installed on any system where Ruby and Rails can be run, including Windows, macOS, and Linux distributions.

How do I ensure database security for Redmine?

During the MariaDB configuration step of installation, run sudo mysql_secure_installation to secure the database by setting root passwords and removing unnecessary access privileges.

Can I integrate version control systems with Redmine?

Yes, Redmine supports integration with several version control systems, including Git, Subversion (SVN), and CVS.

How can I change the default language of Redmine?

The default language in Redmine can be changed within the application’s settings under the “Administration > Settings > Display” section.

Why am I unable to access Redmine through the web browser?

If you experience access issues, ensure that Apache is correctly configured and running, your domain settings in the virtual host file are accurate, and your firewall settings allow HTTP traffic through port 80.