1. 程式人生 > >【配置】windows下配置tomcat和zookeeper為服務

【配置】windows下配置tomcat和zookeeper為服務

最近在電腦上配置dubbo的環境,由於使用的windows的系統,所以想讓dubbo控制檯和依賴的zookeeper都常駐系統後臺,並且在我開機的時候能夠啟動,這就不得不讓我想到了吧他們作為系統的服務來啟動,這樣系統在開機的時候就可以自動執行這些服務了。

一、tomcat配置為服務

        把tomcat配置為服務是比較簡單的,因為tomcat自帶了一個service.bat,我們可以直接把它設定為服務,不過需要配置一下:

         1、由於我們還要在電腦上跑別的專案,所以需要修改tomcat的埠號,使他們互不干擾。


找到tomcat目錄,conf資料夾下的server.xml修改如圖的三個地方的埠號為自己能記住的埠。

      2、然後配置一下執行自帶service.bat所需的環境變數:

PATH:配置到jdk的bin目錄下: 
Path後新增:;%JAVA_HOME%\bin;%CATALINA_HOME%\bin

CLASSPATH:配置到jdk的lib目錄下:
CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

JAVA_HOME:配置到jdk的根目錄:
JAVA_HOME:C:\Program Files\Java\jdk1.8.0_21

CATALINA_HOME:配置到tomcat的根目錄; 

CATALINA_HOME:D:\tools\apache-tomcat-8.5.23

配置好以後我們就可以執行service.bat了:

     3、開啟cmd命令提示符,cd到tomcat所在目錄的bin資料夾下,然後執行如下命令:


最後出現 The service 'Tomcat8' has been installed.  就說明成功了,我們在服務中可以看到:

win+r,然後輸入services.msc,進入系統服務:


我們可以看到這個服務就已經在了,只要手動啟動一下,就可以用了,重啟電腦的話也會自己啟動的。

        有的同志可能會問了,這個服務名字這麼長,還是預設的,如果我想自己起名字,或者釋出多個的時候會不會重複呢?這裡我們也可以通過修改bin目錄下的service.bat來實現修改服務名稱:

       我們可以在tomcat的bin目錄下找到service.bat檔案,然後開啟,找到:


然後修改成自己想要的服務名就行了。(注:我這個是tomcat版本是8.5.23,不同版本可能有差異,但是7.0的也有SERVICE_NAME 這個項)

二、ZooKeeper服務配置

       zookeeper的服務配置可能有些難度,我們在配置之前需要先下載一個Apache的外掛才可以,因為像是tomcat一類的Apache的工具都是通過這個來實現服務啟動的:

1、下載

以上兩個東西都下載了之後,我們需要做一些操作:

       64位機器用amd64/prunsrv.exe 
  a. 複製 commons-daemon-1.0.15-bin-windows/amd64/prunsrv.exe 至 zookeeper-3.4.8\bin目錄下
  這是做服務的執行程式 
  b. 複製 commons-daemon-1.0.15-bin-windows/prunmgr.exe 至 zookeeper-3.4.8\bin目錄下

  監控服務配置及執行的程式 

2、我們需要在windows中配置環境變數:

   新增ZOOKEEPER_SERVICE, ZOOKEEPER_HOME兩個環境變數

     ZOOKEEPER_SERVICE:服務名稱(不要有中文)

     ZOOKEEPER_HOME:設定到zookeeper-3.4.8目錄下

3、我們需要配置zookeeper,把zookeeper-3.4.8\conf目錄下複製一份zoo_sample.cfg檔案,並重命名為zoo.cfg。(預設配置)

4、我們需要建立服務部署檔案,就是兩個批處理檔案

在zookeeper-3.4.8\bin目錄下新增一個 zkServerStop.cmd 檔案:

@echo off
setlocal
TASKLIST /svc | findstr /c:"%ZOOKEEPER_SERVICE%" > %ZOOKEEPER_HOME%\zookeeper_svc.pid
FOR /F "tokens=2 delims= " %%G IN (%ZOOKEEPER_HOME%\zookeeper_svc.pid) DO (
    @set zkPID=%%G
)
taskkill /PID %zkPID% /T /F
del %ZOOKEEPER_HOME%/zookeeper_svc.pid
endlocal

然後在相同目錄下建一個批處理安裝檔案:install.bat

prunsrv.exe "//IS//%ZOOKEEPER_SERVICE%" ^
        --DisplayName="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
        --Description="Zookeeper (%ZOOKEEPER_SERVICE%)" ^
        --Startup=auto --StartMode=exe ^
        --StartPath=%ZOOKEEPER_HOME% ^
        --StartImage=%ZOOKEEPER_HOME%\bin\zkServer.cmd ^
        --StopPath=%ZOOKEEPER_HOME%\ ^
        --StopImage=%ZOOKEEPER_HOME%\bin\zkServerStop.cmd ^
        --StopMode=exe --StopTimeout=5 ^
        --LogPath=%ZOOKEEPER_HOME% --LogPrefix=zookeeper-wrapper ^
        --PidFile=zookeeper.pid --LogLevel=Info --StdOutput=auto --StdError=auto

最後在以管理員的身份執行一下install.bat就可以了,然後我們在服務裡面就可以看到他了: