Atlassian already have some documentation on how to integrate IIS and JIRA.
Unfortunately it requires installing some ISAPI components, and a whole lot of fiddling around.
I wanted to see if I could get Application Request Routing to do the same job. Turns out, yes, you can – here’s how.
1. Make sure JIRA is installed and working on your server.
Let’s say that it’s at http://example.com:8080/
I want to access JIRA via: http://jira.example.com/ – but IIS7 is already using port 80 on that server.
2. Alter your conf/server.xml file in JIRA.
Find the /Server/Service/Connector element, and add two attributes:
proxyName=”jira.example.com”
proxyPort=”80″
The Connector element should now look something like
<Connector port="8080" enableLookups="false" proxyName="jira.example.com" proxyPort="80">
3. Restart the JIRA Service.
4. Install, if you havn’t already, Application Request Routing 2.0, along with URL Rewriting 2.0
5. Enable Proxying on ARR:
- From the IIS7 Console, click on {ServerName}.
- Open Application Request Routing.
- From the Actions pane on the right hand side, Select ‘Server Proxy Settings’
- Check ‘Enable Proxy’
- Set HTTP Version to ‘HTTP/1.1′
6. Add a new site ‘jira.example.com’, with bindings for http://jira.example.com
7. Add a new URL Rewrite Rule for jira.example.com
- From the IIS7 Console, click on jira.example.com
- Open URL Rewrite
- From the Actions pane on the right hand side, select ‘Add Rules’
- Choose ‘Blank Rule’
- Set Match Rule to:
- Requested URL Matches the Pattern
- Using Regular Expressions
- Pattern: (.*)
- Ignore Case: checked
- Set Action to:
- Action Type: Rewrite
- Rewrite URL: http://example.com:8080/{R:1}
- Append query string: checked
- Stop processing of subsequent rules: checked
8. Now, with any luck – you should be able to access JIRA via http://jira.example.com - if not, something isn’t set correctly.
Setting up Fisheye is almost as simple.
Say Fisheye is set up on http://example.com:8060 and I want to access it via http://fisheye.example.com
Repeat steps 4-8 above, substituting ‘fisheye’ for ‘jira’, and then verify you can access fisheye from http://fisheye.example.com
If you’re also doing .NET Development, or have .cs/.aspx/.asmx files in your repository, then you’ll also need to do the following.
Edit the web.config for fisheye.jira.com
Add the following to just before </system.webServer>
<handlers> <remove name="WebServiceHandlerFactory-ISAPI-2.0-64" /> <remove name="WebServiceHandlerFactory-ISAPI-2.0" /> <remove name="PageHandlerFactory-ISAPI-2.0" /> <remove name="PageHandlerFactory-ISAPI-2.0-64" /> <remove name="PageHandlerFactory-Integrated" /> <remove name="WebServiceHandlerFactory-Integrated" /> <remove name="SimpleHandlerFactory-ISAPI-2.0-64" /> <remove name="SimpleHandlerFactory-ISAPI-2.0" /> <remove name="SimpleHandlerFactory-Integrated" /> <remove name="CGI-exe" /> <remove name="ISAPI-dll" /> </handlers> <staticContent> <mimeMap fileExtension=".cs" mimeType="text/plain" /> </staticContent> <security> <requestFiltering> <fileExtensions> <remove fileExtension=".config" /> <remove fileExtension=".csproj" /> <remove fileExtension=".cs" /> <add fileExtension=".cs" allowed="true" /> <add fileExtension=".csproj" allowed="true" /> <add fileExtension=".config" allowed="true" /> </fileExtensions> </requestFiltering> </security>
If there are any additional filetypes that are in your Fisheye repository that generate 404 errors when navigating, then add them to the fileExtensions section. First as a ‘Remove’, and then an ‘Add’ with allowed=true. You’ll also need to probably add a mimeMap entry too.
Thanks to @OhCrap for the pointers on enabling .cs serving with IIS7.