I recently spent quite a bit of time installing and configuring request tracker to run on Ubuntu 10.04 using nginx as the web server. The documentation on doing this was scarce (or incorrect), so I thought this would be a good place to centralize all the information needed to replicate my setup.
The first thing to do is install all the required packages. I assume you already know how to do this. For what it’s worth, I’m using a PPA repository for the nginx package since the one available in Ubuntu is extremely out of date. Here are the contents of /etc/apt/sources.list.d/nginx.list
.
deb http://ppa.launchpad.net/nginx/stable/ubuntu lucid main deb-src http://ppa.launchpad.net/nginx/stable/ubuntu lucid main
I have apt configured such that it doesn’t install Recommended or Suggested packages. Therefore, I had to manually install the libcgi-fast-perl package because this will be necessary in order for nginx to run the RT code.
I then had to install the mysql-server package and create the database to be used.
root@rt:~# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 584 Server version: 5.1.41-3ubuntu12.10 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database rtdb; Query OK, 1 row affected (0.00 sec) mysql> grant all privileges on rtdb.* to 'rt'@'localhost' identified by 'SECRETPASSWORD'; Query OK, 0 rows affected (0.03 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
Next, I had to modify /etc/request-tracker3.8/RT_SiteConfig.d/50-debconf
to suit our custom environment. I also had to reconfigure /etc/request-tracker3.8/RT_SiteConfig.d/51-dbconfig-common
to use mysql with the appropriate values for the database that was created.
# THE DATABASE: # generated by dbconfig-common # map from dbconfig-common database types to their names as known by RT my %typemap = ( mysql => 'mysql', pgsql => 'Pg', sqlite3 => 'SQLite', ); Set($DatabaseType, $typemap{mysql} || "UNKNOWN"); Set($DatabaseHost, 'localhost'); Set($DatabasePort, '3306'); Set($DatabaseUser , 'rt'); Set($DatabasePassword , 'SECRETPASSWORD'); # SQLite needs a special case, since $DatabaseName must be a full pathname #my $dbc_dbname = 'rtdb'; if ( "sqlite3" eq "sqlite3" ) { Set ($DatabaseName, '/var/lib/dbconfig-common/sqlite3/request-tracker3.8' . '/' . $dbc_dbname); } else { Set ($DatabaseName, $dbc_dbname); } Set ($DatabaseName, 'rtdb');
By default, the RT install uses a simple sqlite database. We just switched it to use our mysql database that we created in the previous step. Once that is complete, you need to update the SiteConfig by running update-rt-siteconfig
. Then you can move on to configuring nginx.
Here is the nginx configuration that was necessary to get all aspects (as far as I’ve tested) working with RT:
server { listen [::]:80; server_name rt.siriad.com; root /usr/share/request-tracker3.8/html; location / { index index.html; fastcgi_pass unix:/var/run/rt/rt.sock; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; } location ~* .+\.(html|js|css)$ { index index.html; fastcgi_pass unix:/var/run/rt/rt.sock; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; } location /NoAuth/images/ { alias /usr/share/request-tracker3.8/html/NoAuth/images/; } }
Here is the upstart script located at /etc/init/rt-fcgi.conf
:
# rt-fcgi - test start on runlevel [12345] stop on runlevel [0] respawn env FCGI_SOCKET_PATH=/var/run/rt/rt.sock exec su www-data -c "/usr/share/request-tracker3.8/libexec/mason_handler.fcgi"
Once all those are in place, the only thing you need to do is service rt-fcgi start
and restart nginx. Then you should be able to login using the default RT username/password.