将Tomcat服务加入到系统服务

Jenkins的部署请看这篇,上面的jenkins服务需要手动启停,不方便。

将tomcat加入到系统服务中即可实现自启动,如下:

  1. 在Tomcat安装目录bin文件下添加service.bat文件

内容如下:

@echo off  
rem Licensed to the Apache Software Foundation (ASF) under one or more  
rem contributor license agreements.  See the NOTICE file distributed with  
rem this work for additional information regarding copyright ownership.  
rem The ASF licenses this file to You under the Apache License, Version 2.0  
rem (the "License"); you may not use this file except in compliance with  
rem the License.  You may obtain a copy of the License at  
rem  
rem     http://www.apache.org/licenses/LICENSE-2.0  
rem  
rem Unless required by applicable law or agreed to in writing, software  
rem distributed under the License is distributed on an "AS IS" BASIS,  
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
rem See the License for the specific language governing permissions and  
rem limitations under the License.  

rem ---------------------------------------------------------------------------  
rem NT Service Install/Uninstall script  
rem  
rem Options  
rem install                Install the service using Tomcat9 as service name.  
rem                        Service is installed using default settings.  
rem remove                 Remove the service from the System.  
rem  
rem name        (optional) If the second argument is present it is considered  
rem                        to be new service name  
rem ---------------------------------------------------------------------------  
  
setlocal  
  
set "SELF=%~dp0%service.bat"  
rem Guess CATALINA_HOME if not defined  
set "CURRENT_DIR=%cd%"  
if not "%CATALINA_HOME%" == "" goto gotHome  
set "CATALINA_HOME=%cd%"  
if exist "%CATALINA_HOME%\bin\tomcat9.exe" goto okHome  
rem CD to the upper dir  
cd ..  
set "CATALINA_HOME=%cd%"  
:gotHome  
if exist "%CATALINA_HOME%\bin\tomcat9.exe" goto okHome  
echo The tomcat9.exe was not found...  
echo The CATALINA_HOME environment variable is not defined correctly.  
echo This environment variable is needed to run this program  
goto end  
:okHome  
rem Make sure prerequisite environment variables are set  
if not "%JAVA_HOME%" == "" goto gotJdkHome  
if not "%JRE_HOME%" == "" goto gotJreHome  
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined  
echo Service will try to guess them from the registry.  
goto okJavaHome  
:gotJreHome  
if not exist "%JRE_HOME%\bin\java.exe" goto noJavaHome  
if not exist "%JRE_HOME%\bin\javaw.exe" goto noJavaHome  
goto okJavaHome  
:gotJdkHome  
if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome  
rem Java 9 has a different directory structure  
if exist "%JAVA_HOME%\jre\bin\java.exe" goto preJava9Layout  
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome  
if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome  
if not "%JRE_HOME%" == "" goto okJavaHome  
set "JRE_HOME=%JAVA_HOME%"  
goto okJavaHome  
:preJava9Layout  
if not exist "%JAVA_HOME%\jre\bin\javaw.exe" goto noJavaHome  
if not "%JRE_HOME%" == "" goto okJavaHome  
set "JRE_HOME=%JAVA_HOME%\jre"  
goto okJavaHome  
:noJavaHome  
echo The JAVA_HOME environment variable is not defined correctly  
echo This environment variable is needed to run this program  
echo NB: JAVA_HOME should point to a JDK not a JRE  
goto end  
:okJavaHome  
if not "%CATALINA_BASE%" == "" goto gotBase  
set "CATALINA_BASE=%CATALINA_HOME%"  
:gotBase  
  
set "EXECUTABLE=%CATALINA_HOME%\bin\tomcat9.exe"  
  
rem Set default Service name  
set SERVICE_NAME=Tomcat9  
set DISPLAYNAME=Apache Tomcat 9.0 %SERVICE_NAME%  
  
rem Java 9 no longer supports the java.endorsed.dirs  
rem system property. Only try to use it if  
rem JAVA_ENDORSED_DIRS was explicitly set  
rem or CATALINA_HOME/endorsed exists.  
set ENDORSED_PROP=ignore.endorsed.dirs  
if "%JAVA_ENDORSED_DIRS%" == "" goto noEndorsedVar  
set ENDORSED_PROP=java.endorsed.dirs  
goto doneEndorsed  
:noEndorsedVar  
if not exist "%CATALINA_HOME%\endorsed" goto doneEndorsed  
set ENDORSED_PROP=java.endorsed.dirs  
:doneEndorsed  
  
if "x%1x" == "xx" goto displayUsage  
set SERVICE_CMD=%1  
shift  
if "x%1x" == "xx" goto checkServiceCmd  
:checkUser  
if "x%1x" == "x/userx" goto runAsUser  
if "x%1x" == "x--userx" goto runAsUser  
set SERVICE_NAME=%1  
set DISPLAYNAME=Apache Tomcat 9.0 %1  
shift  
if "x%1x" == "xx" goto checkServiceCmd  
goto checkUser  
:runAsUser  
shift  
if "x%1x" == "xx" goto displayUsage  
set SERVICE_USER=%1  
shift  
runas /env /savecred /user:%SERVICE_USER% "%COMSPEC% /K \"%SELF%\" %SERVICE_CMD% VICE_NAME%"  
goto end  
:checkServiceCmd  
if /i %SERVICE_CMD% == install goto doInstall  
if /i %SERVICE_CMD% == remove goto doRemove  
if /i %SERVICE_CMD% == uninstall goto doRemove  
echo Unknown parameter "%SERVICE_CMD%"  
:displayUsage  
echo.  
echo Usage: service.bat install/remove [service_name] [/user username]  
goto end  
	  
:doRemove  
rem Remove the service  
echo Removing the service '%SERVICE_NAME%' ...  
echo Using CATALINA_BASE:    "%CATALINA_BASE%"  
	  
"%EXECUTABLE%" //DS//%SERVICE_NAME% ^  
    --LogPath "%CATALINA_BASE%\logs"  
if not errorlevel 1 goto removed  
echo Failed removing '%SERVICE_NAME%' service  
goto end  
:removed  
echo The service '%SERVICE_NAME%' has been removed  
goto end  
	  
:doInstall  
rem Install the service  
echo Installing the service '%SERVICE_NAME%' ...  
echo Using CATALINA_HOME:    "%CATALINA_HOME%"  
echo Using CATALINA_BASE:    "%CATALINA_BASE%"  
echo Using JAVA_HOME:        "%JAVA_HOME%"  
echo Using JRE_HOME:         "%JRE_HOME%"  
	  
rem Try to use the server jvm  
set "JVM=%JRE_HOME%\bin\server\jvm.dll"  
if exist "%JVM%" goto foundJvm  
rem Try to use the client jvm  
set "JVM=%JRE_HOME%\bin\client\jvm.dll"  
if exist "%JVM%" goto foundJvm  
echo Warning: Neither 'server' nor 'client' jvm.dll was found at JRE_HOME.  
set JVM=auto  
:foundJvm  
echo Using JVM:              "%JVM%"  
	  
set "CLASSPATH=%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_BASE%\bin\tomcat-juli.jar"  
if not "%CATALINA_HOME%" == "%CATALINA_BASE%" set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar"  
  
if "%SERVICE_STARTUP_MODE%" == "" set SERVICE_STARTUP_MODE=manual  
if "%JvmMs%" == "" set JvmMs=128  
if "%JvmMx%" == "" set JvmMx=256  
  
"%EXECUTABLE%" //IS//%SERVICE_NAME% ^  
    --Description "Apache Tomcat 9.0.8 Server - http://tomcat.apache.org/" ^  
    --DisplayName "%DISPLAYNAME%" ^  
    --Install "%EXECUTABLE%" ^  
    --LogPath "%CATALINA_BASE%\logs" ^  
    --StdOutput auto ^  
    --StdError auto ^  
    --Classpath "%CLASSPATH%" ^  
    --Jvm "%JVM%" ^  
    --StartMode jvm ^  
    --StopMode jvm ^  
    --StartPath "%CATALINA_HOME%" ^  
    --StopPath "%CATALINA_HOME%" ^  
    --StartClass org.apache.catalina.startup.Bootstrap ^  
    --StopClass org.apache.catalina.startup.Bootstrap ^  
    --StartParams start ^  
    --StopParams stop ^  
    --JvmOptions "-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;-D%ENDORSED_PROP%=%CATALINA_HOME%\endorsed;-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;%JvmArgs%" ^  
    --JvmOptions9 "--add-opens=java.base/java.lang=ALL-UNNAMED#--add-opens=java.base/java.io=ALL-UNNAMED#--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED" ^  
    --Startup "%SERVICE_STARTUP_MODE%" ^  
    --JvmMs "%JvmMs%" ^  
    --JvmMx "%JvmMx%"  
if not errorlevel 1 goto installed  
echo Failed installing '%SERVICE_NAME%' service  
goto end  
:installed  
echo The service '%SERVICE_NAME%' has been installed.  
  
:end  
cd "%CURRENT_DIR%"
  1. 设为启动服务,运行cmd到bin目录下

  1. 运行命令:service install

将Tomcat服务加入到系统服务_第1张图片

这里会有个问题:解压版的bin目录里没有tomcat9.exe

  1. 查看服务(控制面板—搜服务—查看本地服务)

将Tomcat服务加入到系统服务_第2张图片

  1. 选中右键选择—属性

  1. 启动类型改为自动

确定

  1. 启动

将Tomcat服务加入到系统服务_第3张图片

  1. ok

你可能感兴趣的:(经验分享)