For long-term use on a Windows server, Stash should be configured to run as a Windows service. This has the following advantages:
- Stash will be automatically restarted when the operating system restarts.
- Stash is less likely to be accidentally shut down, as can happen if the console window Stash was manually started in is closed.
- Stash logs are properly managed by the Windows service.
Before you start
If you are using a 64-bit version of Windows, first ensure that Stash uses a 64-bit JVM (check by running
java -version in a Command Prompt, and ensure that the
JAVA_HOME system environment variable points to the 64-bit JVM), and then replace the 32-bit Tomcat binaries with their 64-bit counterparts in the
<Stash installation directory>/bin directory:
rename tomcat7.exe tomcat7.exe.x86
rename tcnative-1.dll tcnative-1.dll.x86
rename tomcat7.exe.x64 tomcat7.exe
rename tcnative-1.dll.x64 tcnative-1.dll
- On any Windows operating system with User Account Control (UAC) such as Windows Vista or Windows 7, simply logging in to Windows with an Administrator account will not be sufficient to execute the script in the procedure below. You must either disable UAC or run 'cmd.exe' as an administrator (e.g. by right-clicking on 'cmd.exe' and choosing Run as administrator).
- Ensure the
JAVA_HOME variable is set to the root of your Java platform's installation directory.
JAVA_HOME cannot contain spaces, so the default Java installation directory of C:\Program Files\Java won't work.
- Stash should be run from a local dedicated user account that does not have admin privileges and that has read, write and execute access to the Stash home directory and the <
Stash installation directory>. See Git push operations extremely slow on Windows.
- When you run Stash as a Windows service, all settings in setenv.bat are ignored. Ensure that you have set
STASH_HOME as a system environment variable, before running the
- If you upgraded Stash from version 1.x to 2.x and Stash stopped running as a service you will need to reinstall the service according to instructions in the Stash upgrade guide.
Setting up Stash as a Windows service
To run Stash as a Windows service:
- Stop Stash.
- Create a system environment variable with
STASH_HOME as the Variable name and the absolute path to your Stash home directory as the Variable value. Don't use a trailing backslash. Note that the Stash home directory should not be located inside the
. You must do this step before running the
<Stash installation directory>
service.bat script in Step 5 below.
- Open a Command Prompt (as an Administrator – see the Before you start section above).
- Change directory to the Stash installation directory and then into the
bin subdirectory. If a directory in the path has spaces (e.g.
C:\Program Files\..), use its eight-character equivalent (e.g.
Run the following commands:
> service.bat install
> tomcat7 //US//STASH --Startup auto
This will create a service with the name "STASH" and a display name of "Atlassian Stash". If you would like to customize the name you can instead run:
> service.bat install MyName
> tomcat7 //US//MyName --Startup auto
This will create the service as "MyName" with a display name of "Atlassian Stash MyName".
Run the following command to increase the amount of memory that Stash can use (the default is 768 Mb):
> tomcat7 //US//service_name --JvmMx 1024
- Verify that the Stash service comes back up after restarting the machine.
Here is an example:
C:\Program Files (x86)\atlassian-stash-2.0.0\bin>service.bat install
Installing the service 'STASH' ...
Using CATALINA_HOME: "C:\Program Files (x86)\atlassian-stash-2.0.0"
Using CATALINA_BASE: "C:\Program Files (x86)\atlassian-stash-2.0.0"
Using JAVA_HOME: "C:\Java\jre6"
Using JVM: "auto"
The service 'STASH' has been installed.
C:\Program Files (x86)\atlassian-stash-2.0.0\bin>tomcat7.exe //US//STASH --Startup auto
C:\Program Files (x86)\atlassian-stash-2.0.0\bin>tomcat7.exe //US//STASH --JvmMx 1024
C:\Program Files (x86)\atlassian-stash-2.0.0\bin>net start STASH
The Atlassian Stash service is starting.
The Atlassian Stash service was started successfully.
- Problems may occur when trying to set up Stash to run as a Windows service with JRE 1.6. The problem is due to failure to locate MSVCR71.DLL, which can be found in
%JAVA_HOME%/bin. There are two options to resolve this problem:
- Add %JAVA_HOME%/bin to PATH, then restart the Stash server.
- Copy MSVCR71.DLL to system path, C:\WINDOWS\SYSTEM32 or C:\WINNT\SYSTEM32.
- If your service fails to start with "code 4", make sure you ran
service.bat install in a Command Prompt running as an Administrator.