Install Request Tracker (RT) on Ubuntu 24.04

|
Last Updated:
|
|
request tracker tickets

Welcome to our guide on how to install Request Tracker (RT) on Ubuntu 24.04. Request Tracker (RT) is an enterprise-grade issue tracking/ticketing system that allows organizations to keep track of various tasks to be done, tasks completed, and when tasks were (or weren’t) completed.

It supports seamless email integration, custom workflows, SLA automation and tracking etc. Read more about RT features.

Install Request Tracker (RT) on Ubuntu 24.04

Run System update

To begin with ensure that your system packages are up-to-date.

sudo apt update

Install Required Packages for Building RT

Request Tracker (RT) requires quite a number of packages in order to run. These include Perl and some perl modules, a web server (Nginx or Apache), a backend database (MySQL/MariaDB, PostgreSQL, SQLite, Oracle).

In this demo, we use MariaDB as a database backend and Apache as the Web server.

Install Required RT Build Dependencies

RT will be installed by building it from the source code. This requires some package dependencies to be installed on the system. Hence, simply execute the command below to install these package dependencies.

sudo apt install autoconf \
    build-essential \
    cpanminus \
    curl \
    libexpat1-dev \
    libgd-dev \
    libssl-dev \
    zlib1g-dev \
    gnupg \
    graphviz \
    multiwatch \
    openssl \
    perl \
    w3m \
    libapache-session-perl \
    libbusiness-hours-perl \
    libcgi-emulate-psgi-perl \
    libcgi-psgi-perl \
    libcss-minifier-xs-perl \
    libcss-squish-perl \
    libconvert-color-perl \
    libcrypt-eksblowfish-perl \
    libdbix-searchbuilder-perl \
    libdata-guid-perl \
    libdata-ical-perl \
    libdata-page-perl \
    libdate-extract-perl \
    libdate-manip-perl \
    libdatetime-perl \
    libdatetime-format-natural-perl \
    libdatetime-locale-perl \
    libdevel-globaldestruction-perl \
    libdevel-stacktrace-perl \
    libemail-address-perl \
    libemail-address-list-perl \
    libencode-hanextra-perl \
    libfile-sharedir-perl \
    libhtml-formatexternal-perl \
    libhtml-formattext-withlinks-perl \
    libhtml-formattext-withlinks-andtables-perl \
    libhtml-gumbo-perl \
    libhtml-mason-perl \
    libhtml-mason-psgihandler-perl \
    libhtml-quoted-perl \
    libhtml-rewriteattributes-perl \
    libhtml-scrubber-perl \
    libipc-run3-perl \
    libjavascript-minifier-xs-perl \
    liblocale-maketext-fuzzy-perl \
    liblocale-maketext-lexicon-perl \
    liblog-dispatch-perl \
    libmime-types-perl \
    libmodule-path-perl \
    libmodule-refresh-perl \
    libmodule-versions-report-perl \
    libmoose-perl \
    libmoosex-nonmoose-perl \
    libmoosex-role-parameterized-perl \
    libmozilla-ca-perl \
    libnet-cidr-perl \
    libnet-ip-perl \
    libparallel-forkmanager-perl \
    libpath-dispatcher-perl \
    libplack-perl \
    libregexp-common-perl \
    libregexp-common-net-cidr-perl \
    libregexp-ipv6-perl \
    librole-basic-perl \
    libscope-upper-perl \
    libsymbol-global-name-perl \
    libtext-password-pronounceable-perl \
    libtext-quoted-perl \
    libtext-wikiformat-perl \
    libtext-worddiff-perl \
    libtext-wrapper-perl \
    libtime-parsedate-perl \
    libtree-simple-perl \
    libweb-machine-perl \
    libxml-rss-perl \
    libfile-which-perl \
    libgnupg-interface-perl \
    libperlio-eol-perl \
    libgraphviz2-perl \
    libcrypt-x509-perl -y

Install Apache Web Server

Install Apache Web server on Ubuntu 24.04

sudo apt install apache2 libapache2-mod-fcgid -y

Disable some Apache modules;

sudo a2dismod mpm_event mpm_worker

Enable some Apache modules;

sudo a2enmod mpm_prefork

Start and enable Apache to run on system boot.

sudo systemctl enable --now apache2

Install MariaDB Database

RT supports MySQL, MariaDB, Postgresql, and Oracle, and SQLite for development. We will use MariaDB in this guide. Thus, install MariaDB and required client libraries on Ubuntu 24.04

sudo apt install mariadb-server libmariadb-dev libmariadb-dev-compat -y

Next, Adjust MariaDB’s max_allowed_packet setting to adjust the size of attachments in RT.

echo -e '[server]\nmax_allowed_packet=64M' | sudo tee /etc/mysql/conf.d/max_allowed_packet.cnf

Start and enable MariaDB to run on system boot.

sudo systemctl enable --now mariadb

Run the initial security script and remove test databases, anonymous user accounts, disable remote root login…

sudo mariadb-secure-installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Install Mail Transfer Agent to allow RT route and deliver mails. Postfix is used in this guide.

sudo apt install postfix

Install Request Tracker (RT) on Ubuntu 24.04

Download RT Tarball

In this guide, RT is installed on Ubuntu 24.04 from the source. As such, navigate to RT downloads page and grab the latest version of RT archive.

RT 5.0.7 is the latest stable release as of this writing.

Thus, once you get the version, replace the value of the VER variable below;

VER=5.0.7

And use wget/curl command to download the source code.

wget https://download.bestpractical.com/pub/rt/release/rt-${VER}.tar.gz

To verify the integrity of the archive, calculate its hash (sha256) and compare it with the value available on the release page.

Unpack RT Archive

Extract the RT tarball to some directory.

tar xzf rt-${VER}.tar.gz

Compile and Install RT on Ubuntu 24.04

Navigate to RT archive directory extracted above.

cd rt-${VER}

Next execute the configure script to adapt RT to the system to ensure that all required dependencies to the build and install RT are available.

Note that you can always set the your preferred options for configure script. Simply utilize the help page for the options to use.

./configure --help

Ton run configure script with the default options, execute the command below.

RT defaults to installing in /opt/rt5 with MySQL as its database.

./configure

Once the configure script completes, run the command below to check for any Perl missing dependencies.

make testdeps

This script will check if all required dependencies are available and report any that is missing.

/usr/bin/perl ./sbin/rt-test-dependencies
perl:
    5.10.1 ................................................. ok (5.38.2)

users / groups:
    rt group (www-data) .................................... ok (gid 33)
    bin user (root) ........................................ ok (uid 0)
    libs user (root) ....................................... ok (uid 0)
    libs group (root) ...................................... ok (gid 0)
    web user (www-data) .................................... ok (uid 33)
    web group (www-data) ................................... ok (gid 33)

CORE dependencies:
    Apache::Session >= 1.53 ................................ ok (1.94)
    Business::Hours ........................................ ok
    CGI >= 4.00 ............................................ ok (4.63)
    CGI::Cookie >= 1.20 .................................... ok (4.59)
    CGI::Emulate::PSGI ..................................... ok
    CGI::PSGI >= 0.12 ...................................... ok (0.15)
    CSS::Minifier::XS ...................................... ok
    CSS::Squish >= 0.06 .................................... ok (0.10)
    Class::Accessor::Fast .................................. ok
    Clone .................................................. ok
    Convert::Color ......................................... ok
    Crypt::Eksblowfish ..................................... ok
    DBI >= 1.37 ............................................ ok (1.643)
    DBIx::SearchBuilder >= 1.80 ............................ ok (1.81)
    Data::GUID ............................................. ok
    Data::ICal ............................................. ok
    Data::Page ............................................. ok
    Date::Extract >= 0.07 .................................. ok (0.07)
    Date::Manip ............................................ ok
    DateTime >= 0.44 ....................................... ok (1.65)
    DateTime::Format::Natural >= 0.67 ...................... ok (1.18)
    DateTime::Locale >= 0.40, != 1.00, != 1.01 ............. ok (1.37)
    Devel::GlobalDestruction ............................... ok
    Devel::StackTrace >= 1.19, != 1.28, != 1.29 ............ ok (2.05)
    Digest::MD5 >= 2.27 .................................... ok (2.58_01)
    Digest::SHA ............................................ ok
    Digest::base ........................................... ok
    Email::Address >= 1.912 ................................ ok (1.913)
    Email::Address::List >= 0.06 ........................... ok (0.06)
    Encode >= 2.64 ......................................... ok (3.19)
    Encode::Detect::Detector ............................... MISSING
    Encode::HanExtra ....................................... ok
    Errno .................................................. ok
    File::Glob ............................................. ok
    File::ShareDir ......................................... ok
    File::Spec >= 0.8 ...................................... ok (3.88)
    File::Temp >= 0.19 ..................................... ok (0.2311)
    Getopt::Long >= 2.24 ................................... ok (2.54)
    HTML::Entities ......................................... ok
    HTML::FormatExternal ................................... ok
    HTML::FormatText::WithLinks >= 0.14 .................... ok (0.15)
    HTML::FormatText::WithLinks::AndTables >= 0.06 ......... ok (0.07)
    HTML::Gumbo ............................................ ok
    HTML::Mason >= 1.43 .................................... ok (1.60)
    HTML::Mason::PSGIHandler >= 0.52 ....................... ok (0.53)
    HTML::Quoted ........................................... ok
    HTML::RewriteAttributes >= 0.05 ........................ ok (0.05)
    HTML::Scrubber >= 0.08 ................................. ok (0.19)
    HTTP::Message >= 6.07 .................................. ok (6.45)
    HTTP::Request::Common .................................. ok
    IPC::Run3 .............................................. ok
    JSON ................................................... ok
    JavaScript::Minifier::XS ............................... ok
    LWP >= 6.02 ............................................ ok (6.76)
    LWP::Protocol::https ................................... ok
    LWP::Simple ............................................ ok
    LWP::UserAgent >= 6.02 ................................. ok (6.76)
    List::MoreUtils >= 0.420 ............................... ok (0.430)
    Locale::Maketext >= 1.06 ............................... ok (1.33)
    Locale::Maketext::Fuzzy >= 0.11 ........................ ok (0.11)
    Locale::Maketext::Lexicon >= 0.32 ...................... ok (1.00)
    Log::Dispatch >= 2.30 .................................. ok (2.71)
    MIME::Entity >= 5.504 .................................. MISSING
    MIME::Types ............................................ ok
    Mail::Header >= 2.12 ................................... ok (2.21)
    Mail::Mailer >= 1.57 ................................... ok (2.21)
    Module::Path ........................................... ok
    Module::Refresh >= 0.03 ................................ ok (0.18)
    Module::Runtime ........................................ ok
    Module::Versions::Report >= 1.05 ....................... ok (1.06)
    Moose .................................................. ok
    MooseX::NonMoose ....................................... ok
    MooseX::Role::Parameterized ............................ ok
    Mozilla::CA ............................................ ok
    Net::CIDR .............................................. ok
    Net::IP ................................................ ok
    Parallel::ForkManager .................................. ok
    Path::Dispatcher >= 1.07 ............................... ok (1.08)
    Plack >= 1.0002 ........................................ ok (1.0051)
    Plack::Handler::Starlet ................................ MISSING
    Pod::Usage ............................................. ok
    Regexp::Common ......................................... ok
    Regexp::Common::net::CIDR .............................. ok
    Regexp::IPv6 ........................................... ok
    Role::Basic >= 0.12 .................................... ok (0.13)
    Scalar::Util ........................................... ok
    Scope::Upper ........................................... ok
    Storable >= 2.08 ....................................... ok (3.32)
    Sub::Exporter .......................................... ok
    Symbol::Global::Name >= 0.05 ........................... ok (0.05)
    Sys::Syslog >= 0.16 .................................... ok (0.36)
    Term::ReadKey .......................................... ok
    Term::ReadLine ......................................... ok
    Text::ParseWords ....................................... ok
    Text::Password::Pronounceable .......................... ok
    Text::Quoted >= 2.07 ................................... ok (2.10)
    Text::Template >= 1.44 ................................. ok (1.61)
    Text::WikiFormat >= 0.76 ............................... ok (0.79)
    Text::WordDiff ......................................... ok
    Text::Wrapper .......................................... ok
    Time::HiRes ............................................ ok
    Time::ParseDate ........................................ ok
    Tree::Simple >= 1.04 ................................... ok (1.34)
    URI >= 1.59 ............................................ ok (5.27)
    URI::QueryParam ........................................ ok
    Web::Machine >= 0.12 ................................... ok (0.17)
    XML::RSS >= 1.05 ....................................... ok (1.59)
    namespace::autoclean ................................... ok

FASTCGI dependencies:
    FCGI >= 0.74 ........................................... ok (0.82)

GPG dependencies:
    File::Which ............................................ ok
    GnuPG::Interface >= 1.02 ............................... ok (1.04)
    PerlIO::eol ............................................ ok

GRAPHVIZ dependencies:
    GraphViz2 .............................................. ok
    IPC::Run >= 0.90 ....................................... ok (20231003.0)

MYSQL dependencies:
    DBD::mysql >= 2.1018, != 4.042 ......................... ok (4.052)

SMIME dependencies:
    Crypt::X509 ............................................ ok
    File::Which ............................................ ok
    String::ShellQuote ..................................... ok


---------------------------------------------------------------------------

SOME DEPENDENCIES WERE MISSING:

CORE dependencies:
    Encode::Detect::Detector ............................... MISSING
    MIME::Entity >= 5.504 .................................. MISSING
    Plack::Handler::Starlet ................................ MISSING

Perl library path for /usr/bin/perl:
    /etc/perl
    /usr/local/lib/x86_64-linux-gnu/perl/5.38.2
    /usr/local/share/perl/5.38.2
    /usr/lib/x86_64-linux-gnu/perl5/5.38
    /usr/share/perl5
    /usr/lib/x86_64-linux-gnu/perl-base
    /usr/lib/x86_64-linux-gnu/perl/5.38
    /usr/share/perl/5.38
    /usr/local/lib/site_perl
make: *** [Makefile:276: testdeps] Error 1

Fix missing RT dependencies either by installing the missing dependencies manually or simply executing the make fixdeps command as a privileged user.

However, before you can run the fixdeps command, you need to configure the CPAN shell.

/usr/bin/perl -MCPAN -e shell

CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes] yes

 <install_help>

Warning: You do not have write permission for Perl library directories.

To install modules, you need to configure a local Perl library directory or
escalate your privileges.  CPAN can help you by bootstrapping the local::lib
module or by configuring itself to use 'sudo' (if available).  You may also
resolve this problem manually if you need to customize your setup.

What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib] sudo

We initialized your 'urllist' to https://cpan.org/. Type 'o conf init urllist' to change it.

Autoconfiguration complete.

commit: wrote '/home/kifarunix/.cpan/CPAN/MyConfig.pm'

You can re-run configuration any time with 'o conf init' in the CPAN shell
Terminal does not support AddHistory.

To fix that, maybe try>  install Term::ReadLine::Perl


cpan shell -- CPAN exploration and modules installation (v2.36)
Enter 'h' for help.

cpan[1]> yes

Also, CPAN has a tool called cpanm that can help the make fixdeps command install dependencies. Thus install this tool and set RT to use it to fix deps.

To install cpanm, execute the commands below;

curl -L https://cpanmin.us | perl - --sudo App::cpanminus
cpanm --self-upgrade --sudo
which cpanm
/usr/local/bin/cpanm
export RT_FIX_DEPS_CMD=/usr/local/bin/cpanm

Next, run the fixdeps command;

make fixdeps

The command may take sometime as it tries to fix the missing dependencies. Ensure that all the dependency issues is sorted before you can proceed.

You can always install or reinstall or force the installation of dependencies using cpanm.

For example, assume you have a few missing dependencies after running the make fixdeps command;

make testdeps | grep -i missing
---------------------------------------------------------------------------

SOME DEPENDENCIES WERE MISSING:

CORE dependencies:
    Encode::Detect::Detector ............................... MISSING
    MIME::Entity >= 5.504 .................................. MISSING
    Plack::Handler::Starlet ................................ MISSING

Perl library path for /usr/bin/perl:
    /etc/perl
    /usr/local/lib/x86_64-linux-gnu/perl/5.38.2
    /usr/local/share/perl/5.38.2
    /usr/lib/x86_64-linux-gnu/perl5/5.38
    /usr/share/perl5
    /usr/lib/x86_64-linux-gnu/perl-base
    /usr/lib/x86_64-linux-gnu/perl/5.38
    /usr/share/perl/5.38
    /usr/local/lib/site_perl
make: *** [Makefile:281: fixdeps] Error 1

You can thus install these missing dependencies using cpanm.

cpanm --install --sudo Encode::Detect::Detector
cpanm --install --sudo Plack::Handler::Starlet
cpanm --install --sudo MIME::Entity

Check missing dependencies again;

make testdeps
...
FASTCGI dependencies:
    FCGI >= 0.74 ........................................... ok (0.82)

GPG dependencies:
    File::Which ............................................ ok
    GnuPG::Interface >= 1.02 ............................... ok (1.04)
    PerlIO::eol ............................................ ok

GRAPHVIZ dependencies:
    GraphViz2 .............................................. ok
    IPC::Run >= 0.90 ....................................... ok (20231003.0)

MYSQL dependencies:
    DBD::mysql >= 2.1018, != 4.042 ......................... ok (4.052)

SMIME dependencies:
    Crypt::X509 ............................................ ok
    File::Which ............................................ ok
    String::ShellQuote ..................................... ok


---------------------------------------------------------------------------

All dependencies found.

If you get the last line, All dependencies have been found, you are good to go.

Once the dependencies issue is sorted, install RT. Note that this command will install RT on the /opt/rt5 directory.

sudo make install
...
done
# Make the web ui readable by all. 
chmod -R  u+rwX,go-w,go+rX 	/opt/rt5/share/html \
				/opt/rt5/local/html \
				/opt/rt5/share/po \
				/opt/rt5/local/po \
				/opt/rt5/share/static \
				/opt/rt5/local/static
chown -R root 	/opt/rt5/share/html \
			/opt/rt5/local/html \
			/opt/rt5/share/po \
			/opt/rt5/local/po \
			/opt/rt5/share/static \
			/opt/rt5/local/static
chgrp -R root 	/opt/rt5/share/html \
			/opt/rt5/local/html \
			/opt/rt5/share/po \
			/opt/rt5/local/po \
			/opt/rt5/share/static \
			/opt/rt5/local/static
# Make the web ui's data dir writable
chmod 0770  	/opt/rt5/var/mason_data \
		/opt/rt5/var/session_data
chown -R www-data 	/opt/rt5/var/mason_data \
			/opt/rt5/var/session_data
chgrp -R www-data 	/opt/rt5/var/mason_data \
			/opt/rt5/var/session_data
Congratulations. RT is now installed.


You must now configure RT by editing /opt/rt5/etc/RT_SiteConfig.pm.

(You will definitely need to set RT's database password in 
/opt/rt5/etc/RT_SiteConfig.pm before continuing. Not doing so could be 
very dangerous.  Note that you do not have to manually add a 
database user or set up a database for RT.  These actions will be 
taken care of in the next step.)

After that, you need to initialize RT's database by running
 'make initialize-database'

Configuring RT from Web Interface

After the installation completes, you can now proceed to configure RT via web interface by running it on a standalone mode.

To enable external access to RT, open web server port on firewall. In this demo, we are using port 80/tcp. Hence, execute the command below to open port 80 on firewall.

sudo ufw allow "Apache Full"

Or use iptables/firewalld which ever you have running on your node.

To be able to RT in standlone mode and access it from browser, stop your web server if is running;

sudo systemctl stop apache2

and run the script below.

sudo /opt/rt5/sbin/rt-server

If you want to access RT using non default web server port 80, you can specify custom port by passing the –port PORT option to the script above. Be sure to open the port on firewall.

/opt/rt5/sbin/rt-server --port 8080

Sample output when using default web server port.

[15620] [Wed Mar  5 15:37:56 2025] [warning]: DBI connect('dbname=rt5;host=localhost','rt_user',...) failed: Access denied for user 'rt_user'@'localhost' at /usr/share/perl5/DBIx/SearchBuilder/Handle.pm line 117. (/usr/lib/x86_64-linux-gnu/perl-base/Carp.pm:291)

RT couldn't connect to the database where tickets are stored.
If this is a new installation of RT, you should visit the URL below
to configure RT and initialize your database.

If this is an existing RT installation, this may indicate a database
connectivity problem.

The error RT got back when trying to connect to your database was:

Connect Failed Access denied for user 'rt_user'@'localhost'
 at /opt/rt5/sbin/../lib/RT.pm line 222.


[15620] [Wed Mar  5 15:37:56 2025] [warning]: DBI connect('dbname=rt5;host=localhost','rt_user',...) failed: Access denied for user 'rt_user'@'localhost' at /usr/share/perl5/DBIx/SearchBuilder/Handle.pm line 117. (/usr/lib/x86_64-linux-gnu/perl-base/Carp.pm:291)
HTTP::Server::PSGI: Accepting connections at http://0:80/

Access RT from browser to proceed with configuration. Note it accepting connections on http://0:80/ in our case. Hence you can access it using IP address or resolvable hostname of your server, http://server_IP_OR_hostname.

Install Request Tracker (RT) on Ubuntu 24.04

Configure Database Connection Settings

From the RT interface, click Let’s go! button to proceed with configuration.

Select your RT database type. MySQL/MariaDB is used in this guide.

select rt database type

Click Next to create RT database and database user. Ensure you provide credentials for administrative user. We are using our MySQL root user as our administrative user.

create rt database and db user credentials

To verify database connection, click Check Database Connectivity.

RT database connection

Customize RT

Click Next to customize your RT with the most basic configurations needed to get it up and running.

rt site domain settings

Next, set the path to your MTA and RT admin email.

rt email settings

Set the comments and correspondences addresses.

helpdesk rt email

On the next step, click Initialize the database to create RT’s database and insert initial metadata.

Once the database is initialized, click Finish installation to complete the setup.

request tracker setup complete

You are then taken to RT login page.

request tracker login page

Note that RT is still running on standalone mode. Press Ctrl+c from the terminal to stop the /opt/rt5/sbin/rt-server script and proceed to configure web server for RT.

Configure Request Tracker Web Server on Ubuntu 24.04

Create RT virtualhost configuration file:

sudo vim /etc/apache2/sites-available/rt5.conf

with the following contents;

<VirtualHost *:80>
    ServerName rt.kifarunix-demo.com
    ServerAdmin [email protected]

    AddDefaultCharset UTF-8

    <!-- ScriptAlias and Location should match RT's WebPath -->
    ScriptAlias / /opt/rt5/sbin/rt-server.fcgi/

    DocumentRoot "/opt/rt5/share/html"

    <Directory "/opt/rt5/share/html">
        Require all granted
        Options +ExecCGI
        AddHandler fcgid-script fcgi
    </Directory>

    <Location />
        Require all granted
        Options +ExecCGI
        AddHandler fcgid-script fcgi
    </Location>

    <!-- Optional Apache logs for RT -->
    <!-- Ensure that your log rotation scripts know about these files -->
    ErrorLog /opt/rt5/var/log/apache2.error
    TransferLog /opt/rt5/var/log/apache2.access
    LogLevel debug

</VirtualHost>

Save the configuration file and quit.

Configure RT Apache logs file rotation:

sudo sed -i '1i /opt/rt5/var/log/apache2.error\n/opt/rt5/var/log/apache2.access' /etc/logrotate.d/apache2

Apply and test: Simulate log rotation;

sudo logrotate -d /etc/logrotate.d/apache2

Force log rotation to test:

sudo logrotate -f /etc/logrotate.d/apache2

Next, add the line,FcgidMaxRequestLen 1073741824, to CGI config file to define maximum HTTP request length.

sudo vim /etc/apache2/conf-available/serve-cgi-bin.conf
<IfModule mod_alias.c>
    <IfModule mod_cgi.c>
        Define ENABLE_USR_LIB_CGI_BIN
    </IfModule>

    <IfModule mod_cgid.c>
        Define ENABLE_USR_LIB_CGI_BIN
        FcgidMaxRequestLen 1073741824
    </IfModule>

    <IfDefine ENABLE_USR_LIB_CGI_BIN>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Require all granted
        </Directory>
    </IfDefine>
</IfModule>

Disable the default site configuration and enable rt5.conf site.

sudo a2dissite 000-default.conf
sudo a2ensite rt5

Check for Apache syntax errors.

sudo apache2 -t
Syntax OK

Configure RT Logging

Logging in RT is controlled from SiteConfig configuration file. There are multiple logging options for RT as described on LogsConfig Wiki. However, we are going to configure RT logging to a file in this guide.

Open the RT_SiteConfig.pm configuration file for editing.

sudo vim /opt/rt5/etc/RT_SiteConfig.pm

At the end of configuration files, insert the following lines. We are using same log paths defined in the Apache configuration for RT. Make appropriate changes as per your environment setup.

Set($LogToFile,      'debug');
Set($LogToFileNamed, 'rt5.log');
Set($LogDir,         '/opt/rt5/var/log');

Save and quit the configuration file.

Check the configuration syntax;

sudo perl -c /opt/rt5/etc/RT_SiteConfig.pm

Ensure you get an OK.

/opt/rt5/etc/RT_SiteConfig.pm syntax OK

Be sure to always check this log files for any RT errors.

Start and enable Apache web server.

sudo systemctl enable --now apache2

Accessing RT Web Server

You can now access your RT from browser using the address http://rt-server-IP_OR_hostname.

Heads up!
If you’re running Request Tracker (RT) in a test environment over HTTP (⚠️ not recommended), you must disable Secure Cookies to avoid login issues. Otherwise, even though the login is successful, you won’t be able to proceed past the login page. To fix this, edit /opt/rt5/etc/RT_SiteConfig.pm and change: Set($WebSecureCookies, 1); to Set($WebSecureCookies, 0); then restart Apache with sudo systemctl restart apache2. For production, always use HTTPS and keep Secure Cookies enabled.

Use root as the username and password configured while setting up RT above.

Install Request Tracker (RT) on Ubuntu 24.04

When you successfully log in, you land on RT web dashboard.

request tracker web dashboard

RT is now installed and running. However, for it to be useable, there is quite a lot that needs to be done. We will cover how to configure RT in our next guides.

Configure Request Tracker (RT) to send Mails using MSMTP via Office 365 Relay

That marks the end of our guide on how to install Request Tracker (RT) with MariaDB on Ubuntu 24.04.

Reference

RT 5.0.7 Documentation README

Other Tutorials

Install Zammad Ticketing System

Install OTRS Ticketting System

SUPPORT US VIA A VIRTUAL CUP OF COFFEE

We're passionate about sharing our knowledge and experiences with you through our blog. If you appreciate our efforts, consider buying us a virtual coffee. Your support keeps us motivated and enables us to continually improve, ensuring that we can provide you with the best content possible. Thank you for being a coffee-fueled champion of our work!

Photo of author
Kifarunix
Linux Certified Engineer, with a passion for open-source technology and a strong understanding of Linux systems. With experience in system administration, troubleshooting, and automation, I am skilled in maintaining and optimizing Linux infrastructure.

Leave a Comment