Installation on IIS with Tomcat - gitbucket/gitbucket GitHub Wiki
- Tested on Windows Server 2012 R2 (Version 6.2, Build 9200) with IIS 8.5.9600.16384
- Install JRE 8
-
Install Tomcat 8.5 service on Windows Server - install to
C:\tomcat8, use default ports -
Download Tomcat connector for IIS
- Copy isapi_redirect.dll from zip to
C:\tomcat8\bin\isapi_redirect.dll
- Copy isapi_redirect.dll from zip to
- Create Registry entries with Regedit:
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
@=
extension_uri="/jakarta/isapi_redirect.dll"
log_file="C:\tomcat8\logs\isapi_redirect.log"
log_level="error"
worker_file="C:\tomcat8\conf\workers.properties"
worker_mount_file="C:\tomcat8\conf\uriworkermap.properties"- Create file
C:\tomcat8\conf\workers.properties
worker.list = worker1
worker.worker1.host=localhost
worker.worker1.port=8009
worker.worker1.type=ajp13
- Create file
C:\tomcat8\conf\uriworkermap.properties
/gitbucket*=worker1
-
Configure IIS
- Configure IIS server properties
ISAPI and CGI Restrictions. Add PathC:\tomcat8\bin\isapi_redirect.dllwith descriptionTomcat Isapi Redirect. - Create VirtualDirectory - MUST be named
jakartaand point toC:\tomcat8\bin - With
jakartaVirtualDirectory selected openHandler Mappingsand chooseEdit Feature Permissions. Make sure Read, Script, and Execute permissions are checked. - Add ISAPI filter to IIS website configuration. Filter Name:
jakarta, Executable:C:\tomcat8\bin\isapi_redirect.dll - The used IIS Application Pool should have
Enable 32-bit Applicationsset toFalse - Under
Request Filteringfor the parent website hosting thejakartaVirtualDirectory. Remove request filters for *.java, *.cs and *.vb. If you do not remove these filters then files viewed in gitbucket with these extensions will give a 404 error. You may wish to remove additional filters too such as .csproj.
- Configure IIS server properties
-
place gitbucket.war in
C:\tomcat8\webapps -
Configure system environment variables for
GITBUCKET_HOME=D:\gitbucket_dataandGITBUCKET_LOG_DIR=D:\gitbucket_data\logs -
At this point gitbucket should be available from both http://localhost/gitbucket (via IIS) and http://localhost:8080/gitbucket (direct connect to Tomcat)
If you have trouble with this configuration refer to Configure IIS 8 and Tomcat Connector ISAPI Filter on Windows Server 2012
Using Helicontech Zoo we can deploy GitBucket as a java servlet on IIS
- Use GitBucket versions 3.10 and below, higher versions require Java 8
- Install Java 7
- Follow these instructions to install the Helicontech Zoo Java hosting package
- Configure your gitbucket IIS application folder (ex: C:\inetpub\wwwroot\gitbucket)
- add gitbucket.war to C:\inetpub\wwwroot\gitbucket\
- add web.config to C:\inetpub\wwwroot\gitbucket\
- verify JDK_HOME and JAVA_HOME paths in web.config
- configure IIS_IUSRS to have write permissions to C:\inetpub\wwwroot\gitbucket\
Contents of web.config, assuming you want to install to http://hostname/gitbucket
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<heliconZoo>
<clear />
<application name="gitbucket">
<environmentVariables>
<add name="WAR_EXTRACT_PATH" value="%APPL_PHYSICAL_PATH%" />
<add name="WAR_FILE" value="gitbucket.war" />
<add name="JDK_HOME" value="C:\Program Files\Java\jdk1.7.0_40" />
<add name="JAVA_HOME" value="C:\Program Files\Java\jdk1.7.0_40" />
<add name="GITBUCKET_HOME" value="C:\gitbucket_data" />
<add name="CONTEXT_PATH" value="/gitbucket" />
</environmentVariables>
</application>
</heliconZoo>
<handlers>
<add name="gitbucket#x64" path="*" verb="*" modules="HeliconZoo_x64" scriptProcessor="java.jetty.8" resourceType="Unspecified" requireAccess="Script" preCondition="bitness64" />
<add name="gitbucket#x86" path="*" verb="*" modules="HeliconZoo_x86" scriptProcessor="java.jetty.8" resourceType="Unspecified" requireAccess="Script" preCondition="bitness32" />
</handlers>
<security>
<requestFiltering>
<fileExtensions>
<remove fileExtension=".ldb" />
<remove fileExtension=".refresh" />
<remove fileExtension=".webinfo" />
<remove fileExtension=".vjsproj" />
<remove fileExtension=".vbproj" />
<remove fileExtension=".vb" />
<remove fileExtension=".resx" />
<remove fileExtension=".resources" />
<remove fileExtension=".mdf" />
<remove fileExtension=".mdb" />
<remove fileExtension=".master" />
<remove fileExtension=".exclude" />
<remove fileExtension=".java" />
<remove fileExtension=".csproj" />
<remove fileExtension=".config" />
<remove fileExtension=".ascx" />
<remove fileExtension=".asax" />
<remove fileExtension=".cs" />
</fileExtensions>
<hiddenSegments>
<remove segment="App_Browsers" />
<remove segment="App_WebReferences" />
<remove segment="App_LocalResources" />
<remove segment="App_GlobalResources" />
<remove segment="App_Data" />
<remove segment="App_code" />
<remove segment="web.config" />
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>In the above configuration, some file extensions are removed from request filtering because when running under IIS certain file extensions such as "java", "cs","vb", "csproj","vbproj","ascx", and "asax" will not be viewable in the repository and by default you will get a 404 error.
It should be noted that the docs for Tomcat with IIS, says the following:
Note that in a 64 Bit environment - at least for IIS 7 - the used IIS Application Pool should have "Enable 32-bit Applications" set to "False". Otherwise the redirector will not be called and returns an http code 404. If you think, the 32bit version of isapi_redirect.dll would do the job instead, you will get an http code 500, because the library is not loadable into a 64 Bit IIS.
This is a problem that may or may not apply to the Helicontech Zoo, Jetty 8, setup that we use for this GitBucket installation or not (I have not thoroughly checked and do not know if this uses the same tech or not). But if you attach GitBucket to its own IIS Application Pool with "Enable 32-bit Applications" set to "False" then GitBucket does work using Helicontech Zoo and Jetty 8.
Under a server of Windows + IIS environment, if you are not able to push large files (normally larger than 30,000,000 bytes) from any client, it could be that IIS is rejecting your requests. In this case, you can raise the Maximum allowed content length value as explained in this documentation.
Note: this could happen even if you are not using Helicontech Zoo or Tomcat as introduced above; a standalone app could also be interfered by IIS.
To set Maximum file upload, add to the end of catalina.properties
gitbucket.maxFileSize=(Size in KB)