Welcome to our guide on how to install Request Tracker (RT) with MariaDB on CentOS 8. 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) with MariaDB on CentOS 8
Run System update
To begin with ensure that your system packages are up-to-date.
dnf update
Disable SELinux
Well, I personally do not recommend this step, BUT, If you do not want to have deal with SELinux permissions denied, simply disable it by executing the command below;
sed -i 's/=enforcing/=disabled/' /etc/selinux/config
Next, reboot the system to effect the SELinux disablement.
systemctl reboot -i
Install Required Packages for 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.
Enable EPEL and PowerTools Repos as they contain some of the required dependencies.
dnf config-manager --set-enabled PowerTools
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
To install required packages, simply execute the command below.
dnf install expat gd graphviz openssl expat-devel gd-devel \
openssl-devel perl perl-CPAN perl-YAML wget screen \
mod_fcgid perl-libwww-perl perl-Plack perl-GD \
perl-GnuPG-Interface perl-GraphViz perl-Crypt-SMIME \
perl-String-ShellQuote perl-Crypt-X509 perl-LWP-Protocol-https graphviz-deve
l spawn-fcgi
dnf groupinstall "Development Tools"
Install Apache Web server on CentOS 8
dnf install httpd
Start and enable Apache to run on system boot.
systemctl enable --now httpd
Install MariaDB on CentOS 8
dnf install mariadb-server
Start and enable MariaDB to run on system boot.
systemctl enable --now mariadb
Run the initial security script and remove test databases, anonymous user accounts, disable remote root login…
mysql_secure_installation
You can as well install and use MariaDB 10.4 instead by following the guide below;
Install MariaDB 10.4 on CentOS 8
Install Mail Transfer Agent to allow RT route and deliver mails. Postfix is used in this guide.
dnf -y install postfix
Install Request Tracker (RT) on CentOS 8
Download RT Tarball
In this guide, RT is installed on CentOS 8 from the source. As such, navigate to RT downloads page and grab the latest version of RT archive.
RT 4.4.4 is the latest stable release as of this writing.
Simply get the link from the downloads page and pull it using wget command as shown below;
wget https://download.bestpractical.com/pub/rt/release/rt-4.4.4.tar.gz
To verify the integrity of the archive, calculate its hash (sha256) and compare it with the value available on the release page.
sha256sum rt-4.4.4.tar.gz
34c316a4a78d7ee9b95d4391530f9bb3ff3edd99ebbebfac6354ed173e940884 rt-4.4.4.tar.gz
Unpack RT Archive
Extract the RT tarball to some directory.
tar xzf rt-4.4.4.tar.gz
Compile and Install RT on CentOS 8
Navigate to RT archive directory extracted above.
cd rt-4.4.4
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/rt4 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.
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
...
Would you like to configure as much as possible automatically? [yes] yes
At the CPAN shell prompt, type quit to exit the shell.
...
cpan shell -- CPAN exploration and modules installation (v2.18)
Enter 'h' for help.
cpan[1]> quit
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
HTML::FormatText::WithLinks >= 0.14 ...MISSING
Plack::Handler::Starlet ...MISSING
HTML::FormatText::WithLinks::AndTables >= 0.06 ...MISSING
SOME DEPENDENCIES WERE MISSING.
CORE missing dependencies:
HTML::FormatText::WithLinks >= 0.14 ...MISSING
Plack::Handler::Starlet ...MISSING
HTML::FormatText::WithLinks::AndTables >= 0.06 ...MISSING
make: *** [Makefile:272: testdeps] Error 1
You can thus install these missing dependencies using cpanm
.
cpanm --install Plack::Handler::Starlet
cpanm --install HTML::FormatText::WithLinks
cpanm --install HTML::FormatText::WithLinks::AndTables
Check missing dependencies again;
make testdeps
...
MAILGATE dependencies:
LWP::Protocol::https ...found
Pod::Usage ...found
LWP::UserAgent >= 6.02 ...found
Mozilla::CA ...found
Getopt::Long ...found
MYSQL dependencies:
DBD::mysql >= 2.1018 ...found
SMIME dependencies:
Crypt::X509 ...found
File::Which ...found
String::ShellQuote ...found
All dependencies have been 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/rt4
directory.
make install
...
Congratulations. RT is now installed.
You must now configure RT by editing /opt/rt4/etc/RT_SiteConfig.pm.
(You will definitely need to set RT's database password in
/opt/rt4/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.
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
To be able to access RT from browser, stop your web server is running and run the script below.
systemctl stop httpd
/opt/rt4/sbin/rt-server
If using a custom port, be sure to open the port on firewall and specify the port using rt-server script above.
/opt/rt4/sbin/rt-server --port 8080
...
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 can access it using IP address or resolvable hostname of your server, http://server_IP_OR_hostname
.
Configure Database Connection Settings
From the RT interface, click Let's go! to select the database type. MySQL/MariaDB is used in this guide.
Click Next to create RT database and database user. Ensure you provide credentials for administrative user.
To verify database connection, click Check Database Connectivity.
Customize RT
Click Next to customize your RT with the most basic configurations needed to get it up and running.
Set the path to your MTA and RT admin email.
Set the comments and correspondences addresses.
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.
You are then taken to RT login page.
Note that RT is still running on standalone mode. Press Ctrl+c from the terminal to stop the /opt/rt4/sbin/rt-server
script and proceed to configure web server for RT.
Configure RT Web Server on CentOS 8
Edit the /etc/httpd/conf.d/fcgid.conf
configuration file and add the line,FcgidMaxRequestLen 1073741824
, to define maximum HTTP request length.
vim /etc/httpd/conf.d/fcgid.conf
...
# Use FastCGI to process .fcg .fcgi & .fpl scripts
AddHandler fcgid-script fcg fcgi fpl
# Sane place to put sockets and shared memory file
FcgidIPCDir /run/mod_fcgid
FcgidProcessTableFile /run/mod_fcgid/fcgid_shm
FcgidMaxRequestLen 1073741824
Create RT web configuration file with the content below;
vim /etc/httpd/conf.d/rt.kifarunix-demo.com.conf
<VirtualHost rt.kifarunix-demo.com:80>
AddDefaultCharset UTF-8
ScriptAlias / /opt/rt4/sbin/rt-server.fcgi/
DocumentRoot "/opt/rt4/share/html"
<Location />
Require all granted
Options +ExecCGI
AddHandler fcgid-script fcgi
</Location>
</VirtualHost>
Save the configuration file and quit.
Check for Apache syntax errors.
httpd -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.
vim /opt/rt4/etc/RT_SiteConfig.pm
At the end of configuration files, insert the following lines making appropriate changes as per your environment setup.
Set($LogToFile, 'debug');
Set($LogToFileNamed, 'rt.kifarunix-demo.com.log');
Set($LogDir, '/var/log/rt4');
Save and quit the configuration file.
Check the configuration syntax;
perl -c /opt/rt4/etc/RT_SiteConfig.pm
Create the Logging directory as specified by the $LogDir parameter.
mkdir /var/log/rt4
Ensure that the owner of the logging directory is Apache;
chown -R apache:apache /var/log/rt4
Be sure to always check this configuration file for any RT errors.
Start Apache
systemctl start httpd
Accessing RT
You can now access your RT from browser using the address http://rt-server-IP_OR_hostname
.
Use root
as the username and password configured while setting up RT.
When you successfully log in, you land on RT at a glance web interface.
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.
That marks the end of our guide on how to install Request Tracker (RT) with MariaDB on CentOS 8.
Reference
Other Tutorials
Install and Setup HAProxy on CentOS 8