= Install Request Tracker 5 (RT) on Ubuntu 20.04 = '''Requirements: ''''''' To properly install RT you'll need some things: root access to the server you're going to install it on RT source code Perl - Perl 5.10.1 or newer Perl modules Database backend - MySQL 5.1 or newer *with support for InnoDB* - MariaDB 10.0 or newer *with support for InnoDB* - PostgreSQL 9.0 or newer - Oracle 11g or newer - SQLite 3.0 or newer *for testing only, no upgrade path guaranteed* '''Note : We are using MariaDB here''' Web server Apache version 2.x with either FastCGI or mod_perl, or another webserver with FastCGI support. (RT's FastCGI handler needs to access RT's configuration file.) Update system package cache; {{{ # sudo su # apt update # apt upgrade }}} === Install Required Build tools === {{{ # apt install build-essential libapache2-mod-fcgid libssl-dev libexpat1-dev libdbd-mysql-perl liblwp-protocol-https-perl libhtml-formattext-withlinks-andtables-perl libhtml-formattext-withlinks-perl html2text }}} === Install Apache Web Server === {{{ # apt install apache2 # systemctl start apache2 # systemctl enable apache2 }}} === Install MariaDB Database Server === Install MariaDB 10.5 on Ubuntu 20.04; {{{ # apt-key adv --fetch-keys 'http://mariadb.org/mariadb_release_signing_key.asc' # add-apt-repository 'deb [arch=amd64] http://mariadb.mirror.globo.tech/repo/10.5/ubuntu focal main' # apt update # apt install mariadb-server mariadb-client # systemctl start mariadb # systemctl enable mariadb }}} === Install Request Tracker (RT) === Download RT 5 Tarball {{{ # wget https://download.bestpractical.com/pub/rt/release/rt-5.0.0.tar.gz }}} You can now extract the source code; {{{ # tar xzf rt-5.0.0.tar.gz }}} Compile and Install Request Tracker (RT) Change to RT 5 source code directory and configure it to adapt it to the system as well as check if required package dependency is met; {{{ # cd rt-5.0.0/ # ./configure }}} Next, check for package dependency. {{{ # make testdeps }}} out put as follows; {{{ /usr/bin/perl ./sbin/rt-test-dependencies perl: 5.10.1 ................................................. ok (5.30.0) users / groups: rt group (www-data) .................................... ok (gid 33) bin user (root) ........................................ ok (uid 0) libs user (root) ....................................... ok (uid 0) libs group (bin) ....................................... ok (gid 2) web user (www-data) .................................... ok (uid 33) web group (www-data) ................................... ok (gid 33) CORE dependencies: Apache::Session >= 1.53 ................................ MISSING Business::Hours ........................................ MISSING CGI >= 4.00 ............................................ ok (4.46) CGI::Cookie >= 1.20 .................................... ok (4.46) CGI::Emulate::PSGI ..................................... MISSING CGI::PSGI >= 0.12 ...................................... MISSING CSS::Minifier::XS ...................................... MISSING CSS::Squish >= 0.06 .................................... MISSING Class::Accessor::Fast .................................. MISSING Clone .................................................. MISSING Convert::Color ......................................... MISSING Crypt::Eksblowfish ..................................... MISSING DBI >= 1.37 ............................................ ok (1.643) ... }}} Fixing Request Tracker Missing Perl Dependencies; You can fix the missing perl dependencies by installing them one by one or by simply using make fixdeps command. In order to use the make fixdeps command for fixing the missing packages, configure CPAN shell and install cpanminus. {{{ # 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 Autoconfiguration complete. ... ... cpan shell -- CPAN exploration and modules installation (v2.22) Enter 'h' for help. cpan[1]> quit }}} Install''' CPANMINUS '''. cpanminus provides a command-line (non interactive) interface to automatically download, build and install Perl modules from CPAN. {{{ # apt install cpanminus }}} Next, fix the dependencies; {{{ # make fixdeps }}} Once the dependencies are installed, you can reverify; {{{ ... FASTCGI dependencies: FCGI >= 0.74 ........................................... ok (0.79) GPG dependencies: File::Which ............................................ ok GnuPG::Interface >= 1.00 ............................... ok (1.00) PerlIO::eol ............................................ ok MYSQL dependencies: DBD::mysql >= 2.1018, != 4.042 ......................... ok (4.050) SMIME dependencies: Crypt::X509 ............................................ ok File::Which ............................................ ok String::ShellQuote ..................................... ok --------------------------------------------------------------------------- All dependencies found. }}} You can now install Request Tracker (RT); {{{ # make install }}} {{{ ... # 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' }}} Create Request Tracker Database and Database user; Next, you need to create or if already created, define the Request Tracker database details. Therefore, within the RT source directory, run the command below; {{{ # cd rt-5.0.0/ # make initialize-database }}} When the command is run, you are prompted to enter the database root password. In our case, we use MariaDB and hence, we provide MariaDB root password. If the root user has no password set, just press ENTER. {{{ /usr/bin/perl -I/opt/rt5/local/lib -I/opt/rt5/lib sbin/rt-setup-database --action init --prompt-for-dba-password In order to create or update your RT database, this script needs to connect to your mysql instance on localhost (port '') as root Please specify that user's database password below. If the user has no database password, just press return. Password: }}} When you enter password (or press ENTER for no root password), the script then creates ''' rt5 ''' and ''' rt_user ''' as RT database and database user respectively. It then populates the database with relevant data. {{{ Working with: Type: mysql Host: localhost Port: Name: rt5 User: rt_user DBA: root Now creating a mysql database rt5 for RT. Done. Now populating database schema. Done. Now inserting database ACLs. Done. Now inserting RT core system objects. Done. Now inserting data. Done inserting data. Done. }}} Configure Request Tracker The default configuration file for Request Tracker 5 is ''' /opt/rt5/etc/RT_SiteConfig.pm. ''' To begin with, set the RT domain name, the organization and the web domain. {{{ # vim /opt/rt5/etc/RT_SiteConfig.pm }}} '''NOTE: ''' replace with ubuntu server Local IP for this example. {{{ ... #Set( $rtname, 'example.com'); Set( $rtname, ''); Set( $Organization, '' ); Set( $WebDomain, '' ); }}} Save and exit the file. Similarly, set Request Tracker Logging {{{ # cat << 'EOL' >> /opt/rt5/etc/RT_SiteConfig.pm Set($LogToFile, 'debug'); Set($LogToFileNamed, ''); Set($LogDir, '/var/log/rt5'); EOL }}} {{{ # mkdir /var/log/rt5 # chown -R www-data: /var/log/rt5 }}} === Running Request Tracker in Standalone Mode === You can now run Request Tracker. Note that it can be run in standalone mode or via a web server. To run RT in standalone mode; {{{ # systemctl stop apache2 # /opt/rt5/sbin/rt-server }}} This should open the web server port 80 and you should be able to access your Request Tracker web interface via the url, http://server-IP-or-domain. Login using the default RT credentials: '''Username: root ''' ''' Password: password ''' To confirm this; {{{ # netstat -altnp | grep :80 }}} {{{ tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3829/perl }}} If UFW is running, open this port; {{{ # ufw allow 80/tcp }}} Now access the Request Tracker Web Interface via http://server-IP-or-domain. You should land on Request Tracker login page. If you need to use a different port, specify the port by passing the --port . for example; {{{ # /opt/rt5/sbin/rt-server --port 8080 }}} === Running Request Tracker via Web Server === You can stop RT standalone mode by pressing CTRL+c and proceed to configure Apache to Server RT on Ubuntu. we have already installed Apache2 Set the maximum HTTP request length by editing the file, '''/etc/apache2/mods-available/fcgid.conf, ''' and adding the line, ''' FcgidMaxRequestLen 1073741824.''' {{{ vim /etc/apache2/mods-available/fcgid.conf }}} {{{ FcgidConnectTimeout 20 FcgidMaxRequestLen 1073741824 AddHandler fcgid-script .fcgi }}} Save and exit the file. Create Request Tracker site configuration file;