将JIRA应用作为一个Windows服务运行
EN: https://confluence.atlassian.com/adminjiraserver073/running-jira-applications-as-a-windows-service-861254037.html
从长远使用的角度,JIRA应该被配置成开机自动启动。对于Windows服务器,即指将JIRA配置成一个系统服务。
将JIRA作为一个系统服务运行,还有其他的好处。手动启动时,会打开一个命令行窗口,意外的关闭了这个窗口会导致JIRA关闭,这是一个风险。而且,JIRA的日志文件会被Windows服务妥善处理(存放在你JIRA安装目录中logs\stdout*.log,每天循环)。
有两个方式将JIRA安装为服务:通过安装包,手动操作。
通过安装包安装服务
将JIRA作为服务安装最简单的方式是,在执行Windows安装包时勾选'Install JIRA as Service'。
你需要用于Windows操作系统的完整的管理员权限,才能保证安装过程的成功执行。
手动设置JIRA作为服务运行
当你存在如下情况时,你仍可以设置JIRA作为服务运行。
- 你没有使用Windows安装包。
- 你使用了安装包,但是在安装时没有将JIRA作为服务运行。
请注意:
- 在任何带有用户账户控制(UAC)的Windows操作系统上,例如Windows Vista或Windows 7,为了确保能在下述步骤中执行脚本,你需要禁用UAC或者以管理员身份运行“cmd.exe”(例如,在‘cmd.exe’上点击鼠标右键,选择“以管理员身份运行”)。如果UAC是使能状态,只是简单的通过管理员账户登陆Windows也是不行的。
设置JIRA作为服务运行:
- 打开Dos命令行。
- 切换到JIRA应用的安装目录,进入‘bin’子目录。
如果安装路径中包含空格(如 '
C:\Program Files\..
'),请现将其转换为等价路径(如'C:\Progra~1\..
')。 - 确保 JAVA_HOME 环境变量已经设置,该变量指向JAVA安装的根目录。
在Dos命令窗口输入echo %JAVA_HOME%可以查看 JAVA_HOME 环境变量的当前值。
-
执行如下命令:
service.bat install JIRA
下面是这个过程的截图:
JIRA现在应该已经设置成作为服务启动了。 -
另外,为了让JIRA服务能在操作系统开机是自动启动,运行:
tomcat8 //US//JIRA --Startup auto
JIRA服务将在操作系统下次重启时自动启动。JIRA服务可以手动的执行命令 'net start JIRA' 和 'net stop JIRA’ 启动和关闭服务。
要查看JIRA核心服务启动时的参数情况,可以通过 “开始”->"运行",输入 '
regedt32.exe
' ,然后:
* 对于32位操作系统,依次进入 HKEY_LOCAL_MACHINE -> SOFTWARE -> Apache Software Foundation -> Procrun 2.0 -> JIRA<time stamp>
* 对于64位操作系统,依次进入 HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> Apache Software Foundation -> Procrun 2.0 -> JIRA<time stamp> -
额外的JIRA启动配置项(可选):
-
增加JIRA可用的最大内存(默认已经是256MB),运行:
tomcat8 //US//service_name --JvmMx 512
这里的 service_name 是你JIRA服务的名称,如 JIRA123487934298。
-
如果你在同一个JVM中运行JIRA 和 Confluence,将 MaxPermSize 增加到 128 MB:
tomcat8 //US//service_name ++JvmOptions="-XX:MaxPermSize=128m"
这里的 service_name 是你JIRA服务的名称,如 JIRA123487934298。
-
有时候,查看JIRA的垃圾回收信息是可能是有用的。在分析内存问题的时候尤其如此。要打开log及垃圾回收详细的日志信息,在dos窗口执行如下命令:
tomcat8 //US//service_name ++JvmOptions="-Xloggc:path\to\logs\atlassian-gc.log"
这里的 service_name 是你JIRA服务的名称,如 JIRA123487934298。
path(用 \path\to 表示)表示JIRA的当前安装目录。例如:tomcat8 //US//service_name ++JvmOptions="-Xloggc:c:\jira\logs\atlassian-gc.log"
这里的 service_name 是你JIRA服务的名称,如 JIRA123487934298。
查看 Tomcat文档,可以获取更多服务配置项的信息。
删除JIRA服务
如果你是通过Windows安装包安装的JIRA,从系统的控制面板中选择“添加和删除应用”即可删除JIRA,服务也会一并删除。
如果你手动安装(见上)的JIRA服务,可以通过如下操作删除:
service.bat remove JIRA
或者,如果上述操作无效,可以使用 tomcat8 //DS//JIRA。
变更JIRA服务使用的Windows用户
如果你使用的是映射网络驱动器作为JIRA的备份目录、附件存储目录、索引目录或者 %CATALINA_HOME%\* 目录,你要确保JIRA有这些驱动器的写权限。事实上,这些目录都需要被JIRA运行时的用户写入。这就意味着你可能需要变更JIRA服务使用的系统账户。
注意,你必须通过UNC指定映射驱动器,而非字母映射。如:\\backupserver\jira,不能用 z:\jira
要改变JIRA服务所用的Windows账户,打开Windows服务管理,可以通过 '控制面板' -> '管理工具' -> '服务'. 找到 'Atlassian JIRA' 服务,右键查看“属性”。
到“登录”标签页,修改为想要修改的账户。
指定多个服务的启动顺序
如果有的服务是依赖另外一个的,那按照正确的顺序启动他们是非常重要的。常见的例子包括:
- 如果你同时运行JIRA和 Crowd, 先启动Crowd 是很重要的,以便确保用户在尝试登录JIRA前 Crowd 已经在运行。
- 如果JIRA连接的数据库与JIRA在同一个服务器上,并且通过一个Windows服务启动,那只有当数据库服务首先启动起来后,JIRA服务才能成功启动。
要设置启动依赖关系,打开一个dos窗口,输入以下命令:C:\Documents and Settings\Developer>sc config [JIRA service] depend=[database service]
请注意 'depend='
后的空格字符。
- [JIRA service] 是正在运行的JIRA服务名称,如 JIRA051007111904。
- [database service] 是正在运行的数据库服务名称,如 MSSQLSERVER。
如果你想,你还可以通过编辑系统注册表来设置依赖关系。请查看http://support.microsoft.com/kb/193888 来获取详细的设置方法。
查找服务名称
如果你不知道JIRA服务或者数据库服务的实际名称,可以通过如下步骤查看:
- 依次打开 '控制面板' > '管理工具' > '服务'。
- 将出现“服务”窗口:
- 在你想要查找的服务上右键,在弹出菜单中选择 '属性' :
- 在“常规”标签页上就可以看到“服务名称”:
疑难解决
- JIRA 6.0及之后的版本不支持JAVA 6。当尝试基于JDK 1.6 将JIRA作为服务运行时可能会出现问题。这个问题是因为没有找到"MSVCR71.DLL",它存放在 %JAVA_HOME%/bin目录,有两个方法可以解决这个问题
:
- 将 %JAVA_HOME/bin 添加到环境变量PATH里,然后重启JIRA服务器。
- 将MSVCR71.DLL复制到系统目录 C:\WINDOWS\SYSTEM32 或这 C:\WINNT\SYSTEM32 里。
- 注意正在运行的服务的用户名,并确保在你安装目录中修改
/temp 和
/work
文件夹,已确保运行账户有写权限。 - 如果你需要分配超过1.5GB的内存,将无法在64位操作系统上运行JIRA服务。这是因为32位 JDK的内存限制和64位 JDK/Tomcat 服务问题。