Home | Linux

Installing Request Tracker on Linux

by Bruce Timberlake
02 March 2005


This installs:

MySQL 4.0.23
OpenSSL 0.9.7e
Apache 1.3.33
  + mod_ssl 2.8.22-1.3.33
  + mod_perl 1.29 (static)
  + mm 1.3.1
Perl 5.8.5 (plus RT-required modules)
PHP 4.3.10
Request Tracker 3.2.3

I use Fedora or Red Hat; this process should work on any distro, though, with minor changes.

I use qmail for my MTA. Notes on installing that and making RT work with it will be added at a later date.

I do all my installations from source code. If you have RPMS of older versions of these apps, there may be a problem... I generally install RT on a dedicated server, so I have no issue with removing the RPM versions of everything before I get started.

This is a "rough" procedure... just notes, really. It seems to work for me just fine; if you have problems and come up with a solution, please let me know and I'll make the appropriate changes. (Thanks to Jon Forrest @ UC Berkeley for his suggestions!)

Do all these steps as 'root'... you should be able to cut/paste large blocks of these steps and have it install "automatically"... a couple of Perl modules require some manual tweaking and some interactive stuff. Everything else is pretty much hands-off.

FIRST GET ALL REQUIRED SOURCE PACKAGES AND UNPACK

mkdir -p /usr/local/src
cd /usr/local/src

wget http://www.perl.com/CPAN/src/perl-5.8.5.tar.bz2
wget http://mysql.he.net/Downloads/MySQL-4.0/mysql-4.0.23.tar.gz
wget http://www.openssl.org/source/openssl-0.9.7e.tar.gz
wget ftp://ftp.ossp.org/pkg/lib/mm/mm-1.3.1.tar.gz
wget http://www.modssl.org/source/mod_ssl-2.8.22-1.3.33.tar.gz
wget http://perl.apache.org/dist/mod_perl-1.29.tar.gz
wget http://apache.swift-networks.com/httpd/apache_1.3.33.tar.gz
wget http://us2.php.net/distributions/php-4.3.10.tar.bz2
wget http://download.bestpractical.com/pub/rt/release/rt-3.2.3.tar.gz
wget \ http://easynews.dl.sourceforge.net/sourceforge/expat/expat-1.95.8.tar.gz

tar zxf mysql-4.0.23.tar.gz
bunzip2 perl-5.8.5.tar.bz2
tar xf perl-5.8.5.tar
tar zxf openssl-0.9.7e.tar.gz
tar zxf mm-1.3.1.tar.gz
tar zxf mod_ssl-2.8.22-1.3.33.tar.gz
tar zxf mod_perl-1.29.tar.gz
tar zxf apache_1.3.33.tar.gz
bunzip2 php-4.3.10.tar.bz2
tar xf php-4.3.10.tar
tar zxf rt-3.2.3.tar.gz
tar zxf expat-1.95.8.tar.gz

chown -R root.root *

ADD RT USER/GROUP

groupadd rt
useradd -g rt -c "RT User" -d /dev/null -s /sbin/nologin rt

INSTALL/UPGRADE PERL

cd /usr/local/src/perl-5.8.5

rm -f config.sh Policy.sh

sh Configure \
-Duseshrplib=y \
-des

make && make test && make install

/usr/local/bin/perl -MCPAN -eshell
# manual steps here:
# - selecting the "follow" option during initial Perl setup will make
# installation of RT dependency Perl modules later much easier and
# more automated.
# - install Bundle::CPAN
# - install LWP::UserAgent (mod_perl will need this later)

Install MySQL 4.0.23

groupadd mysql
useradd -g mysql -c "MySQL Server" -d /dev/null -s /sbin/nologin mysql

cd /usr/local/src/mysql-4.0.23

./configure \
--prefix=/opt/mysql \
--localstatedir=/opt/mysql/data \
--disable-maintainer-mode \
--with-mysqld-user=mysql \
--with-unix-socket-path=/tmp/mysql.sock \
--without-comment \
--without-debug \
--without-bench

make && make install

./scripts/mysql_install_db

chown -R root:mysql /opt/mysql
chown -R mysql:mysql /opt/mysql/data

cp support-files/my-medium.cnf /etc/my.cnf
chown root:sys /etc/my.cnf
chmod 644 /etc/my.cnf

echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
ldconfig

cd /opt/mysql/bin
for file in *; do ln -s /opt/mysql/bin/$file /usr/bin/$file; done

# manual step - edit /etc/my.cnf for security reasons
# see my notes (http://www.lamphowto.com/linux/lampssl.htm) for info
# DO NOT remove the test database yet - we'll need it later to install DBD::Mysql

cd ~
/etc/rc.d/rc3.d/S90mysql start
mysqladmin -u root password new-password

BUILD OPENSSL

cd /usr/local/src/openssl-0.9.7e

./config \
--prefix=/usr/local/openssl \
-fPIC

make && make test && make install

BUILD MM

cd ../mm-1.3.1

./configure \
--disable-shared \
--with-pic

make && make install

echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig

CONFIGURE MOD_SSL

cd ../mod_ssl-2.8.22-1.3.33

./configure \
--with-apache=../apache_1.3.33 \
--with-ssl=../openssl-0.9.7e \
--with-mm=../mm-1.3.1

CONFIGURE MOD_PERL

cd ../mod_perl-1.29

perl Makefile.PL \
EVERYTHING=1 \
APACHE_SRC=../apache_1.3.33/src \
USE_APACI=1 \
PREP_HTTPD=1 \
DO_HTTPD=1

make && make install

CONFIGURE APACHE

cd ../apache_1.3.33

SSL_BASE=../openssl-0.9.7e \
EAPI_MM=../mm-1.3.1 \
./configure \
--prefix=/usr/local/apache \
--enable-module=ssl \
--enable-shared=ssl \
--enable-module=rewrite \
--enable-module=most \
--enable-module=so \
--enable-shared=max \
--activate-module=src/modules/perl/libperl.a \
--enable-module=perl

make
make certificate TYPE=custom
make install

INSTALL PHP

cd ../php-4.3.10

CFLAGS='-O2 -I/usr/local/src/openssl-0.9.7e -DEAPI' \
./configure \
--with-apxs=/usr/local/apache/bin/apxs \
--disable-debug \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-inline-optimization \
--enable-magic-quotes \
--enable-mbstring \
--enable-safe-mode \
--enable-sockets \
--enable-track-vars \
--enable-trans-sid \
--enable-wddx=shared \
--enable-xml \
--with-bz2 \
--with-gd \
--with-gettext \
--with-jpeg-dir \
--with-mime-magic \
--with-mysql=/opt/mysql \
--with-mysql-sock=/tmp/mysql.sock \
--with-openssl=/usr/local/openssl \
--with-pear \
--with-png-dir \
--with-regex=system \
--with-xml \
--with-zlib \
--with-zlib-dir=/usr/lib

make && make install

cp php.ini-dist /usr/local/lib/php.ini

# manual step - wrote PEAR system config file at: /usr/local/etc/pear.conf
# Add /usr/local/lib/php to /usr/local/lib/php.ini (include_path)

INSTALL RT DEPENDENCY PERL MODULES

# first install expat (http://sourceforge.net/projects/expat/)

cd /usr/local/src/expat-1.95.8

./configure

make && make install

Install CORE dependencies

cd /usr/local/src
perl -MCPAN -e'install URI'

wget http://cpan.org/modules/by-module/Net/Net_SSLeay.pm-1.25.tar.gz
tar zxf Net_SSLeay.pm-1.25.tar.gz
cd Net_SSLeay.pm-1.25

echo "/usr/local/openssl" >> openssl_path
perl Makefile.PL /usr/local/openssl -t
make && make test
# an error on www.ubs.com is ok
make install

RT does provide an 'auto-install' script that should get all the Perl modules in place for you. Try it with the command:

make fixdeps

If it doesn't work for you, here is a list of the Perl modules you will need, grouped in some semblance of order and sequence to eliminate dependency errors:

perl -MCPAN -e'install IO::Socket::INET'
perl -MCPAN -e'install IO::Socket::SSL'
perl -MCPAN -e'install Module::Build'
perl -MCPAN -e'install Params::Validate'
perl -MCPAN -e'install DBI'
perl -MCPAN -e'install Apache::DBI'
perl -MCPAN -e'install Test::Inline'
perl -MCPAN -e'install Class::ReturnValue'
perl -MCPAN -e'install DBIx::SearchBuilder'
perl -MCPAN -e'install Text::Template'
perl -MCPAN -e'install HTML::Entities'
perl -MCPAN -e'install HTML::Scrubber'
perl -MCPAN -e'install Log::Dispatch'
perl -MCPAN -e'install Locale::Maketext::Lexicon'
perl -MCPAN -e'install Locale::Maketext::Fuzzy'
perl -MCPAN -e'install MIME::Entity'
perl -MCPAN -e'install Mail::Mailer'
perl -MCPAN -e'install Text::Wrapper'
perl -MCPAN -e'install Time::ParseDate'
perl -MCPAN -e'install Text::Autoformat'
perl -MCPAN -e'install Text::Quoted'
perl -MCPAN -e'install Tree::Simple'
perl -MCPAN -e'install Module::Versions::Report'
perl -MCPAN -e'install XML::Parser'
perl -MCPAN -e'install FCGI'

DEV dependencies:

perl -MCPAN -e'install Regexp::Common'
perl -MCPAN -e'install Test::Inline'
perl -MCPAN -e'install Test::Memory::Cycle'
perl -MCPAN -e'install Test::Pod'
perl -MCPAN -e'install Test::Pod::Coverage'
perl -MCPAN -e'install Test::Taint'
perl -MCPAN -e'install Test::Warn'
perl -MCPAN -e'install Apache::Test'

# enter /usr/local/apache/bin/httpd for httpd location
# enter /usr/local/apache/bin/apxs for apxs location

perl -MCPAN -e'install HTML::Form'

# answer 'y' to libwww app installation

perl -MCPAN -e'install HTML::TokeParser'

wget http://cpan.org/modules/by-module/WWW/WWW-Mechanize-1.12.tar.gz
tar zxf WWW-Mechanize-1.12.tar.gz
cd WWW-Mechanize-1.12
perl Makefile.PL

make && make install

MAILGATE dependencies

perl -MCPAN -e'install HTML::TreeBuilder'
perl -MCPAN -e'install HTML::FormatText'

MASON dependencies

perl -MCPAN -e'install Params::Validate'
perl -MCPAN -e'install Cache::Cache'
perl -MCPAN -e'install Exception::Class'
perl -MCPAN -e'install HTML::Mason'
perl -MCPAN -e'install MLDBM'
perl -MCPAN -e'install FreezeThaw'
perl -MCPAN -e'install Apache::Session'
perl -MCPAN -e'install XML::RSS'

MYSQL dependency

# this step requires the 'test' database to still be installed for MySQL

wget http://cpan.org/modules/by-module/DBD/DBD-mysql-2.9005_3.tar.gz
tar zxf DBD-mysql-2.9005_3.tar.gz
cd DBD-mysql-2.9005_3

perl Makefile.PL \
--libs="-L/opt/mysql/lib/mysql -lmysqlclient -lz" \
--cflags=-I/opt/mysql/include/mysql \
--testuser=xxx \ # <- enter your MySQL root username (usually 'root')
--testpassword=yyy # <- enter your MySQL root user password

make && make test && make install

INSTALL REQUEST TRACKER

cd /usr/local/src/rt-3.2.3

./configure \
--prefix=/opt/rt \
--exec-prefix=/opt/rt \
--with-bin-owner=root \
--with-db-database=tickets \ <- this is the database name RT will use
--with-db-dba=sqladmin \ <- put in your MySQL root username here
--with-db-host=localhost \
--with-db-rt-host=localhost \
--with-db-rt-pass=t1cket \ <- this is the password for the RT MySQL user
--with-db-rt-user=rt_user \ <- this is the username for the RT MySQL user
--with-db-type=mysql \
--with-libs-owner=root \
--with-libs-group=bin \
--with-rt-group=rt \
--with-web-group=httpd \ <- this needs to match httpd.conf
--with-web-user=httpd <- this needs to match httpd.conf

make testdeps
make install
make initialize-database

cd /opt/rt/etc
cp RT_Config.pm RT_SiteConfig.pm

#edit RT_SiteConfig.pm and make relevant changes
# - rtname, Organization, Timezone, OwnerEmail, RTAddressRegexp,
# CanonicalizeEmailAddressMatch, CanonicalizeEmailAddressReplace,
# FriendlyFromLineFormat, FriendlyToLineFormat,
# RT::WebPath

CONFIGURE APACHE

Edit /usr/local/apache/httpd/conf/httpd.conf, and add:

NameVirtualHost ip.ad.re.ss
<VirtualHost ip.ad.re.ss:80>
ServerName host.domain.tld
ServerAdmin email@host.domain.tld
DocumentRoot /home/rt/share/html
AddDefaultCharset UTF-8
PerlModule Apache::DBI
PerlRequire /home/rt/bin/webmux.pl
ErrorLog /var/log/httpd/rt-error_log
CustomLog /var/log/httpd/rt-access_log common
<Location />
SetHandler perl-script
PerlHandler RT::Mason
</Location>
</VirtualHost>

# need to add the step for SSL vsite as well

/usr/local/apache/bin/apachectl stop
/usr/local/apache/bin/apachectl start

Remember that when logging into RT for the first time, use the username
root with password password (and then change the password right away!)

 

If you find this page useful, please consider making a secure donation:

Creative Commons Attribution Share-Alike License logo
This work is copyright © 2002-2008 Bruce Timberlake and is licensed under a Creative Commons Attribution Share-Alike License. It may be copied, modified, and distributed freely as long as it attributes the original author by name ("Bruce Timberlake") and URL ("http://brucetimberlake.com/") and maintains the original license. See the license for details.