1. 程式人生 > 其它 >Centos7中如何把一個jar包做成一個服務啟動

Centos7中如何把一個jar包做成一個服務啟動

技術標籤:java後端centos

使用IDEA做開發的都知道, IDEA的Jrebel外掛可以支援熱部署, 不用每次修改都重啟伺服器.之前都是把jar包做成bat檔案, 在自己的電腦上設定成自啟動專案,然後在IDEA裡引用。奈何本人能力有限,每次開機啟動的時候這個jar包都會在前臺執行,需要手動最小化,看著很難受。正好買了一臺阿里雲伺服器,就嘗試在雲伺服器上部署。
最開始的時候,用 nohup java -jar xxx.jar > xxx.log 2>&1 & 的形式,讓服務在後臺執行,但是這種方式重啟或者停止服務有些麻煩。CentOS7上的 systemd 提供了一組命令,可以把jar包做成一個服務,通過 systemctl start xxx 的形式啟動,這樣就方便多了。
首先需要說明的是: systemd 是有系統和使用者區分的,系統的 systemd 在 /usr/lib/systemd/system 下,使用者的在 /etc/systemd/system下,我們自己建立的service服務一般都儲存在 /etc/systemd/system下。
  1. 建立服務檔案
    vi /etc/systemd/system/xxx.service xxx為服務名。
    檔案內容:
[Unit]
Description=jrebel service

[Service]
WorkingDirectory=/usr/local/dcy/javaAPP/
Type=simple
Restart=always
PrivateTmp=true
ExecStart=/usr/local/dcy/package/jdk1.8.0_152/bin/java -jar /usr/local/dcy/javaAPP/JrebelBrains.jar -p 8000
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

這樣服務就建立好了。
2. 啟動服務
我的service檔名為jrebel.service ,因此執行systemctl start jrebel.service或者systemctl start jrebel,檢視服務執行狀態systemctl status jrebel
服務成功啟動
3. 其他命令
停止服務:systemctl start jrebel
設定開機自啟動:systemctl enable jrebel