OTRS is an exceptionally flexible ITIL compliant ticketing/helpdesk solution, which runs beautifully on almost any LAMP (Linux, Apache, MySQL, Perl (yes, I know it’s PHP really;-)) server, but what happens when you work in a Windows-only environment? OTRS does have a Windows installer, but it is somewhat clunky and requires almost as much work to configure as manually installing. Installing as components allows you to upgrade portions of the system and have more granular control over the setup.
I’ve recently installed OTRS on a Windows Server 2008 R2 (64-bit) server, including experimenting with various combinations of IIS/Apache, MSSQL2008/MySQL, ActiveState Perl 32-bit/64-bit, different configurations and setups - these are my findings:
None of these combinations came close to the performance of OTRS running on a native Linux server, my 64-bit Ubuntu server absolutely flew, with less processor and RAM than the Windows box. In short, if you have the skills, use the Linux option. Yes, yes I do feel a little dirty now, sorry Mr Gates.
So, the final setup I have opted for is:
Make sure you don’t have IIS running (eye-roll), and then click through the wizard…
Configure the network and server details
Do a custom installation and ensure that you install it to D:\Apache\
Apache should now be running on the local machine, navigate to http://localhost to check that it’s running. You should see a page saying “It works!”
Installing MySQL is again a very simple click-through process, once you’ve downloaded it from http://dev.mysql.com/downloads/. I am installing the 64-bit server to make the most of the 64-bit performance on this server.
Stop the MySQL service and edit c:\Program Files\MySQL\MySQL Server 5.5\my.ini in your favourite text editor– you will need to run it as an Administrator.
Change the default data directory (you wouldn’t leave a MSSQL DB on the System drive would you?!) – create a folder on the data drive (I use D:\MySQL\Data).
#Path to the database root datadir="D:\MySQL\Data"
Go to c:\ProgramData\MySQL\MySQL 5.5\data\ and move all the files and folders there to the folder you specified for datadir.
For performance, it’s also recommended that you change the query_cache_size to “32M”
You can now start the MySQL service again.
You can download the 32-bit version of ActiveState Perl here: http://www.activestate.com/activeperl/downloads
Run through the installation, accepting the defaults apart from changing the location of the installation to D:\Perl:
At this point, we will download and extract the OTRS installation from http://ftp.otrs.org/pub/otrs/otrs-3.0.9.zip and extract it to D:\OTRS\
Once that’s done, we can begin joining up the dots.
Run a command prompt as administrator and navigate to the OTRS installation directory (for me, d:\OTRS).
perl bin\otrs.CheckModules.pl
You can then use the Perl Package Manager to install the missing required packages, and some of the options:
ppm install date::format ppm install dbd::mysql ppm install json::xs ppm install apache::reload ppm install net::dns ppm install net::ldap ppm install pdf::api2 ppm install http://cpan.uwinnipeg.ca/PPMPackages/12xx/mod_perl.ppd
(this one requires that you point it to the correct Apache modules folder, for me d:\Apache\modules)
If you re-run the otrs.CheckModules.pl script it should now pass all modules.
The main Apache configuration file is installed at d:\Apache\conf\httpd.conf, open it in Notepad and add the following lines at the end of the config file:
# load mod_perl LoadFile 'd:/Perl/bin/perl512.dll' #match your perl installation LoadModule perl_module modules/mod_perl.so Include 'd:/OTRS/scripts/apache2-httpd.include.conf' # match your OTRS installation
Also modify the DirectoryIndex directive to be index.pl rather than index.pl.
DirectoryIndex index.pl
Configuring OTRS is initially a case of changing paths referenced in the configuration files to the Windows paths that match your environments.
Change this |
ScriptAlias /otrs/ "/opt/otrs/bin/cgi-bin/" |
Alias /otrs-web/ "/opt/otrs/var/httpd/htdocs/" |
Perlrequire /opt/otrs/scripts/apache2-perl-startup.pl |
I performed a search/replace for “/opt” with “D:”, and checked through after.
Change this |
use lib "/opt/otrs/"; |
use lib "/opt/otrs/Kernel/cpan-lib"; |
use lib "/opt/otrs/Custom"; |
Rename D:\OTRS\kernel\Config.pm.dist to Config.pm, and open Config.pm in your text editor.
Change this |
$Self->{Home} = '/opt/otrs'; |
Add the following lines to configure logging:
$Self->{'LogModule'} = 'Kernel::System::Log::File'; $Self->{'LogModule::LogFile'} = "$Self->{Home}/var/log/otrs.log";
Run http://localhost/otrs/installer.pl in your browser of choice and click through the initial details and accepth the licensing agreement:
Enter the MySQL root user and password you created earlier, and test the settings
Next configure a user, password, database name and create the database. you don’t have to change the default names, but if you don’t change the password from the default “hot” to something complex, you deserve to get hacked!
Configure the general system, FQDN, admin email address and logging
Configure incoming and outbound email
And finish!
You can now log in to your OTRS installation – but we’re not finished yet!
The MSI installer uses Cron4Win, but in my experience it was barely working, clunky and not at all suitable for a production service. Since the jobs are just .pl scripts, it’s better to run them from the Scheduled Tasks.
Open up the Task Scheduler and run the Create Task action (not Create Basic Task). Name the task and configure the user you want to run under. Ensure that you select to run whether the user is logged in or not, and run with elevated privileges. I have used a specific account with locked down privileges.
Move on to the “Triggers” panel and create a schedule for the task (see the table below for my config)
Move to the “Actions” panel and create an action to start a program and pass the script as an argument (again, see the table below for my config).
You can accept the default settings for the rest of the panes.
Task Name |
OTRS 1 Minute Actions |
OTRS 10 Minute Actions |
OTRS 15 Minute Actions |
OTRS 2 Hour Actions |
OTRS Daily Actions |
OTRS Hourly Actions |
OTRS Weekly Actions |
Run each of the jobs manually to ensure that they process OK, without any errors. I have exported my jobs as XML files, which are available here to download and import (assuming you’ve put all the files in the same place as me!)
That’s it, OTRS is ready for you to configure, which is way beyond the scope of this post!